KeyPress

Oie quisiera saber como puedo hacer para saber cuando se presiona una tecla sobre
Un campo de instrodccion de texto.
He visto algo así en la ayuda :
myListener = new Object();
myListener.onKeyDown = function () {
trace ("You pressed a key.");
}
myListener.onKeyUp = function () {
trace ("You released a key.");
}
Key.addListener(myListener);
Pero esto no me sirve por que necesito saber en cual de mis campos de introducción de texto se este presionando cierta tecla.
Por ejemplo : tengo un campo de introducción de texto que se llama prueba.
Yo necesito saber cuando se presiona la tecla TAB en este campo ..

1 respuesta

Respuesta
1
Supongo que tienes varios campos de texto y deseas saber cuando se presiona TAB estando seleccionado, o sea con el foco uno de ellos que según tu se llama "prueba". Supongo ademas que ese es el nombre de la instancia.
Reproduce lo siguiente para ver si es lo que deseas:
1. Crea un nuevo documento flash.
2. Crea en él dos campos de textos de introducción de texto, a uno ponle como nombre de instancia "prueba", al otro ponle cualquier nombre, por ejemplo "prueba2"
3. Crea una nueva capa para los códigos.
4. Selecciona el primer fotograma de dicha capa, edita el script para dicho fotograma (F9) y escribe allí lo siguiente:
var objeto = String(prueba);
myListener = new Object();
myListener.onKeyDown = function() {
hhh = String(Selection.getFocus());
if (Key.isDown(Key.TAB) && hhh == objeto) {
trace("Se presionó TAB encima de prueba");
}
};
Key.addListener(myListener);
Esto hace que cuando se presione TAB estando seleccionado "prueba" se tracea un texto que dice "Se presionó TAB...", claro, aquí debes poner lo que tu quieres que se haga cuando esto sucede.
Cualquier duda vuelve a preguntar sin problema. Nos vemos.
Ok función mejor muy bien mucho menos código !,...
Yo me la complique demasiado estuve pesando mientras
me respondías se me ocurrió esto:
myListener = new Object();
myListener.onKeyDown = function () {
   if(Key.isDown(Key.TAB))
   {
        trace("hola"); 
    }
}
_root.prueba.onSetFocus = function()
{
Key.addListener(myListener);
}
_root.prueba.onKillFocus = function ()
{
Key.removeListener(myListener)
};
Ahora tengo un nuevo problema !!
Estoy leyendo un archivo xml y quiero que no se ejecute el código que esta después de
de la linea donde cargo el archivo hasta que termine de cargarlo completamente.
...actionscript
xml.load("file.xml")
xml.onload= function(e){
   if(e){
  .....
  }
  else
    trace("no se puede leer el archivo");
}
..actionscript
alguna vez use algo asi en asp
..
set xmldoc = Server.CreateObject("MSXML.DOMDocument")
xmldoc.async=false
xmldoc.load(,,,,,)
¿Pero en flash no se como?
Saludos ...
Esta que haces es otra pregunta distinta, me hubuera gustado que la separaras, pues la puntuación me aumentaría, pero no importa, aquí te va una solución rápida, sino te satisface me lo dices y pensaremos en otra cosa.
Para ello supongo que lo tienes todo en solo fotograma y que no deseas que ciertos códigos se ejecuten hasta que el xml se haya cargado. Has lo siguiente:
var Autorizacion = false;
miXML = new XML();
miXML.ignoreWhite = true;
miXML.onLoad = function(leido) {
if (leido) {
trace("cargo");
Autorizacion = true;
} else {
trace("No se puede leer el XML");
}
};
miXML.load("file.xml");
hh = setInterval(verificacion, 1);
function verificacion() {
if (Autorizacion) {
trace("paso");
clearInterval(hh);
}
}
Como verás lo que hace es que creas un intervalo en el cual cada 1 milisegundo la función llamada "verificacion" chequea si ya se cargó o no el xml lo cual se lo dice el valor de la variable "Autorizacion" que por supuesto tiene un valor inicial de false. Cuando se termina de cargar el xml "Autorizacion" pasa ser true y el intervalo termina. POr supuesto los códigos que deseas que se ejecuten irían dentro del if y después del clearInterval().
Le agregué unos trace al código para que verifiques que funciona. Ya yo lo probé y funciona de maravilla. Pued mandarte la fuente si deseas.
Hola experto !
Perdón que te conteste hasta hoy lo que pasa es que tuve algunos imprevistos.. pero ahora continuare con este problema.
Me parce bien lo que me propones pero sabes .. me cambia un poco el código fuente
Debido a que todo el código que esta después del Load del xml tendrían que meterlo dentro de la función en el interval, pero viéndolo desde tu perspectiva no se me ocurre otra forma.
Sabes estoy intentando hace un aplicación MDM - Flash en la cual quiero crear archivos xml en los cuales la intención es crear un ABC.
No se si tiene algún ejemplo.. o si ya has desarrollado algo así.
Lo que pasa es que para modificar, agrager o borra un nodo tengo que eliminar el archivo y crear uno nuevo creo que esto hace lenta mi aplicación.
Ahora para poder eliminar el archivo necesito que el XML ya se hace cargado por completo por que marca un error en la eliminación del mismo.
Mira hago esto
1.Cargo el XML (validando que este ya este totalmente cargado)
2.Busco en el XML el nodo de interés para alguna operación (ABC)
3. Elimino el Archivo
4. Creo uno nuevo.
Más sin embargo en uno de los formularios tengo que hace inserciones y los resultados se despliagan en una rejilla, ahora cuando la rejilla esta vacía es decir no se han hecho buscaquedad con unos criterios, tengo que :
1.. Cargo el XML (validando que este ya este totalmente cargado)
2. Buscar con los criterio ya que uno de los nodos es la llave y es autoincrement
3.LLenar la rejilla.
4. Valida que no se repita la llave
5.En caso de que no se repita la llave tengo que insertar el nodo al archivo
  4.1 Cargar nuevamente el Archivo (validando que ya este totalmente cargado)
  4.2 Buscar el nodo, eliminarlo del obj xml insertar el nuevo nodo.
  4.3 eliminar el archivo
  4.4 Crear el nuevo archivo
Como puedes ver tengo que ir metiendo funciones de con el Setinertval y otras igual dentro de la misma.
Por esta razón te explicaba la forma de poder saber cuanto esta cargado completamente.
Igual y con un extra de esfuerzo funciona .. pero pues quiero la forma de mejorar el proceso ya que ahorita es medio tarado en hacer esto ..
O de que manera me puedes orientar para cambiar la forma que hago las Atas, bajas y cambios
En los Archivos XML para evitar la carga exisiva de los XML.
No quisiera tener los obj XML en memoria debido a que son varios formulario en la misma aplicación y pues tendría alrededor de 8 o 9 objetos y tendría que cambiar la forma de uso de la aplicación para hacer que se actualicen los archivos-
Esperando tus comentarios
Saludos..
Creo comprender todo lo que me explicas.
Nome habías dicho que estabas utilizando el MDM, no se si habrás notado que con ello se hacen un montón de cosas, tantas que no creo saber ni el 2% de todas sus posibilidades y te aseguro que lo he estudiado bastante. La ayuda que tiene es muy buena (lástima que esté en inglés, al menos la que yo tengo) ¿Ya la revisaste? No dudo que encuentres la solución por allí.
Te puedo prometer que le echaré un vistazo para ver si encuentro una solución más factible sin el uso de los setInterval y luego te cuento ¿ok? Porque ahora mismo no se me ocurre ninguna, pero te repito, no dudo que el MDM sea la solución, ya me ha sorprendido otras veces.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas