Comunidad de diseño web y desarrollo en internet online

navegacion por timeline con teclado AS3

Citar            
MensajeEscrito el 06 Nov 2008 12:01 am
Saludos a todos. Espero que me puedan ayudar con un problema que tengo. Tengo un timeline dividido por labels, cada 10 frames esta un frame con label, en total son 13 labels. El problema es que quiero q en el swf se pueda navegar entre estos labels con el teclado, he utilizado este código en as3 en los 13 labels, pero solo resulta cuando se presiona la tecla RIGHT, en LEFT se comporta errático o de plano no se mueve. Sugerencias?

function onKeyPressed12(evt:KeyboardEvent):void {
switch (evt.keyCode) {
case Keyboard.LEFT:
gotoAndPlay("slide11");
break;
case Keyboard.RIGHT:
gotoAndPlay("slide13");
break;
}

}stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed12);

Por Led

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Nov 2008 12:14 am
No tiene mucha sofisticación el script, de hecho es básicamente lo mismo para los dos lados. Mira que el slide11 esté correcto

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Nov 2008 07:56 am
Viendo la parte del código me temo que lo que estás haciendo es tener varios addEventListener, que vas cambiando según en el frame donde estés, supongo que con su correspondiente removeEventListener anterior. puff, eso es un rollo.
Personalmente usaría un Array. Vamos si tenemos un Array labelsFrame y una variable index, podremos ir a uno u otro frame según la variable index. Vamos algo parecido a:

Código ActionScript :

var labelsFrame:Array=new Array("label1","label2","label3",...."label16")
var index=0;
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed);
function onKeyPressed(evt:KeyboardEvent){
     case Keyboard.LEFT:
         if (index>0){
               index--;
         }
     break
     case Keyboard.RIGHT:
         if (index<labelsFrame.length-1){
               index++;
         }
     break
     gotoAndPlay(labelsFrame[index])
}

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Nov 2008 11:03 pm
Muchas gracias por sus respuestas. Ya he resuelto mi problema de navegación, y al parecer era el problema que menciona Eliseo2, tenía varios listeners, cambie todo por un solo código.

function onKeyPressed(evt:KeyboardEvent):void {
switch (evt.keyCode) {
case Keyboard.ESCAPE:
gotoAndStop("inicio");
break;
case Keyboard.LEFT:
gotoAndPlay(currentFrame-17);
break;
case Keyboard.RIGHT:
play();
break;
}

}stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed);

El problema que tengo ahora es que deseo agregar botones de stop y play para el timeline, pero tengo en el root varios movieclips dentro de otros, y quiero que dando click a un boton que se encuentra en root, detenga o acciones play a todos los mcs. Alguna idea?

Por Led

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Nov 2008 07:36 am
Supongo que la idea es tener tus MCs en un array, luego recorriendote el array paras todos o los mandas al play. Sí, sé que hay otro modo recorriendote la displayList de cada uno de ellos y si es un MC pararlos, pero creo que es más sencillo un array

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Nov 2008 06:57 am
Gracias por la sugerencia Eliseo, de nuevo, pero nunca he utilizado arrays, no tendras un codigo donde manejes un array de mcs para analizarlo? Yo encontre un codigo que recorre la display list, pero esta algo complicado detener los mcs.

Por Led

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Nov 2008 07:45 am
Si tenemos los MCs ya en pantalla y se llaman mc1

Código ActionScript :

misMCs=new Array(mc1,contenedor.mc1,mc2,mc3)
for (var i in misMCs){
    misMCs[i].stop()
}

Observa que cuando hay un MC dentro de otro lo meto con toda la ruta en el array, en el ejemplo contenedor.mc1
Si estamos usando addChild, cada vez que hagamos el addChild lo metemos en el array con un push

Código ActionScript :

misMCs=new Array()
mc1:Mc1=new Mc1()
misMC.push(addChild(mc1)) //(*)
...
for (var i in misMCs){
    misMCs[i].stop()
}
//(*) es la forma abreviada de poner
//addChild(mc1)
//misMC.push(mc1)

Por Eliseo2

710 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.