En un proyecto que estoy desarrollando en PaperVision3D surgió la necesidad de implementar input text para un formaulario, el cual esta en un material de un cubo.
Para los que tiene una idea de PaperVision3D saben que los cubo llevan un MaterialList, con 6 matriales distintos. Uno para cada cara del cubo.
En uno de ellos decidimos colocar un formaulario, que obviamente tiene muchos campos de texto para ser completados. Pero a la hora de hacer las pruebas me percaté que al hacer click sobre los campos no se activan para escribir en ellos. La solución a este problema es muy sencilla, pero tal ves, como pasa con las cosas sencillas, no es facil darse cuenta de la solución, por mas obvia que sea.
Lo que hay que hacer es agregarle un addListener a cada campo y en el metodo que llamamos con el listener reasiganar el foco del stage al mismo campo, como muestro a continuación.
1 2 3 4 5 6 | texto_txt.addEventListener(MouseEvent.CLICK, onClickInput); private function onClickInput(e:MouseEvent):void { stage.focus = e.target; } |
El problema que tenemos con está técnica es que no podemos clickear y arrastrar para seleccionar una porción del texto, como tampoco podemos hacer click en el medio de una palabra para que el el cursor quede allí. El cursor siempre quedará al final del texto.
No es lo más comodo, pero si necesitamos usar un input text en un material de PaperVision3D creo que es una buena solución.