Inicio > Flash > jadaso63 > KeyPress

KeyPress

Experto:
Usuario: Anónimo Fecha: 16/04/2008
Valoración: (5,00 sobre 5) Categoría: Flash
KeyPress
Usuario
03/04/2008
03/04/2008
Usuario
 Hola experto ..
Oie quisiera saber como puedo hacer para saber cuando se presiona una tecla sobre
un campo de instrodccion de texto.
He visto algo asi 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 introduccion de texto se este presionando cieta tecla.
Por ejemplo : tengo un campo de introduccion de texto que se llama prueba.
Yo necesito saber cuando se presiona la tecla TAB en este campo ..
Esperando tu pronta respuesta
Saludos
KeyPress
Experto
03/04/2008
03/04/2008
anej, experto respondiendo en Flash
Experto
Bueno amigo, 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. Saludos afectuosos.
jadaso63
KeyPress
Usuario
03/04/2008
03/04/2008
Usuario
ok funcion mejor muy bien mucho menos codigo !!! ,....
 yo me la complique demasiado estuve pesando mientras
me respondias se me ocurrio 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 codigo que esta despues 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 ...
 
KeyPress
Experto
04/04/2008
04/04/2008
anej, experto respondiendo en Flash
Experto
Amigo:
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 despues 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.
Saludos afectusos...
jadaso63
KeyPress
Usuario
10/04/2008
10/04/2008
Usuario
Hola experto !!!
perdon que te conteste hasta hoy lo que pasa es que tuve algunos imprevistos.. pero ahora continuare con este problema.
Me parace bien lo que me propones pero sabes .. me cambia un poco el codigo fuente
debido a que todo el codigo que esta depues del Load del xml tendrian que meterlo dentro de la funcion en el interval, pero viendolo desde tu prespectiva no se me ocurre otra forma.
Sabes estoy intetando hace un aplicacion MDM - Flash en la cual quiero crear archivos xml en los cuales la intencion es crear un ABC.
No se si tiene algun ejemplo.. o si ya has desarrollado algo asi.
Lo que pasa es que para modificar,agrager o borra un nodo tengo q eliminar el archivo y crear uno nuevo creo q esto hace lenta mi aplicacion.
Ahora para poder eliminar el archivo necesito que el XML ya se hace cargado por completo por que marca un errro en la eliminacion del mismo.
mira hago esto
1.Cargo el XML (validando que este ya este totalmente cargado)
2.Busco en el XML el nodo de interes para alguna operacion (ABC)
3. Elimino el Archivo
4. Creo uno nuevo.
Mas sin embargo en uno de los formularios tengo que hace inserciones y los resultados se despliagan en una rejilla, ahora cuando la rejilla esta vacia 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 arhivo
  4.1 Cargar nuvamente 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 razon 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 mejorrar 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 aplicacion y pues tendria alrededor de 8 o 9 objetos y tendria que cambiar la forma de uso de la aplicacion para hacer que se actualicen los archivos-
Esperando tus comentarios
saludos..
KeyPress
Experto
10/04/2008
10/04/2008
anej, experto respondiendo en Flash
Experto
Hola amigo:
Creo comprender todo lo que me explicas.
Nome habías dicho que estabas utiliando 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 vistaso 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.
Saludos afectusos...
jadaso63
Pregunta finalizada. Valoración: 5
Usuario
16/04/2008
16/04/2008
Usuario
saludos ....
Enlaces patrocinados