2012-09-14 51 views
6

Estoy creando un editor de texto usando un lienzo HTML5 mediante el cual puedo actualizar texto, cambiar fuentes, mover fuentes y mover imágenes de fondo.Creando <canvas> editor de texto HTML5 basado en

Necesito ayuda para mover texto en lienzo - ¿cómo se puede hacer usando el contexto con el movimiento del ratón eventos?

+2

favor, no abusar ** ** formato negrita. Solo hace que tu pregunta sea difícil de leer cuando en negritas todo el asunto. – meagar

+0

Echa un vistazo a Carota (earwicker.com/carota). Parece que un editor de texto basado en lienzo es un sueño realizado. No lo he usado mucho todavía, pero planeo incorporarlo a un sitio que estoy construyendo. Persiste el texto como JSON con atributos de formato. Simple y perfecto. – jeromeyers

Respuesta

4

El uso de HTML5 <canvas> para la edición de texto no es un enfoque recomendado (consulte la respuesta anterior fom jbalsas). Mozilla Bespin (Skywriter) fue un intento hasta que fue cerrada y el desarrollo se trasladó a la no <canvas> editor de ACE basada en:

https://mozillalabs.com/en-US/skywriter/

http://ace.ajax.org/

editor de Atom elija enfoque no lienzo, en última instancia, de colocar en React.js para acelerar el proceso de actualización DOM:

http://blog.atom.io/2014/07/02/moving-atom-to-react.html

Sin embargo <canvas> de base la edición d es posible, incluso si no se recomiendan, ver los comentarios a continuación y el comentario de jeromeyers:

http://earwicker.com/carota/

... also this blog post contains some ideas when DOM based text editing might not work.

+10

Di esta respuesta a -1 porque simplemente no es verdad. Mozilla * sí * lo hizo, y también cualquier otra persona. Su implementación del lienzo fue con todas las funciones y extremadamente rápido. Finalmente lo abandonaron porque encontraron que una implementación basada en DOM era más flexible * para sus objetivos particulares *, pero eso no significa que el OP debería. Él puede tener diferentes objetivos. Si pudiera, también le daría a esta respuesta otro -1 por tratar de impresionar a las personas que no pueden hacer cosas que Mozilla no puede hacer. Eso es simplemente absurdo. – FtDRbwLXw6

+1

Sí, desalentar cualquier trabajo hacia cualquier cosa que haya sido intentada por alguien antes que nosotros. Estoy seguro de que eso nos llevará a lugares excelentes. –

+0

Si cree que es factible le sugiero que envíe una respuesta de cómo. carece de API necesaria para eventos de mouse como se sugiere en la pregunta. Además, carece de un procesamiento de texto ajustado que no es adecuado para el formato de texto. Además, como la otra respuesta en este estado de pregunta, no se recomienda el enfoque basado en para el control de texto. Hay alternativas, entonces ¿por qué golpearse la cabeza contra la pared por nada? –

7

El borrador de w3c para lienzo en sí recomienda no hacerlo. Usted puede leer esto en canvas best practices

Authors should avoid implementing text editing controls using the canvas 
element. Doing so has a large number of disadvantages 

[...] 

This is a huge amount of work, and authors are most strongly encouraged 
to avoid doing any of it by instead using the input element, the textarea 
element, or the contenteditable attribute. 

Si necesitas un editor de texto, usted podría mirar a otras iniciativas libres como CodeMirror

+0

gracias por el 'contenteditable', parece ser justo lo que necesitaba! – Nisk

+0

elementos de entrada y áreas de texto no pueden tener formato arbitrario, y contenteditable support es atroz en plataformas móviles – Michael

+0

Cuando lee las desventajas del borrador w3c para lienzo, solo recomienda en contra "porque es mucho trabajo" para reconstruir todas las características . ¡El w3c no busca saber cómo funcionan los codificadores! Bueno, no siempre necesitas todas las características, especialmente para algunas necesidades simples. Y hay algunas implementaciones de pure-js muy agradables. – huelbois