Comunidad de diseño web y desarrollo en internet online

Evento continuado

Citar            
MensajeEscrito el 28 Ago 2013 10:26 am
Hola!!!

Quiero hacer que cuando se ejecuta el flw esté continuamente ejecutandose una función que compara dos valores. lo más parecido que he encontrado a lo que quiero es :

var spr:Sprite = new Sprite();
spr.addEventListener(Event.ENTER_FRAME, EnterFrame);

function EnterFrame(evt:Event) : void {
if (canal.position==s.length) {
pausePosition=0}
else {pausePosition=canal.position};
trace("canal.position",canal.position,"pausePosition",pausePosition)}

pero como inicialmente "canal.position" es distinto a "s.length" pasa al "else" y ejecuta todo el rato el código de "else".
quisiera que comprobara todo el rato si "canal.position==s.length" pero solo lo hace una vez.

Creo que se podría solucionar añadiendo un listener pero ¿como se añade un listener a la escena en general, es decir, sin que sea : "objeto.addEventListener ()"?

Gracias por su tiempo

Por Yemedan

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 28 Ago 2013 11:12 am
Que es s? No puedes esperar a que s tenga valor antes de ejecutar tu onEnterFrame?
Por otra parte estar copiando todo el tiempo un valor a una variable me suena a altamente ineficiente

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 29 Ago 2013 06:40 am
Que esté copiando continuamente una variable es porque luego la veo a través del trace y así sé si estoy haciendo bien o no los botones de play pause y stop al reproducir un sonido. Supongo Jorge, sabrás que tienen tres funciones distintas y por ello quiero ver que ocurre con mis variables de forma continuada

Por Yemedan

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Ago 2013 06:45 am
De todas formas supongo seré ineficiente ya que llevo en esto del flash 3 meses y muchas veces veo que aplico demasiada matemática por no saber bien de as3. Adjunto mi código por si podéis corregirme, que siempre se agradece.


stop(); var a:Number,b:Number,c:Number,l:Number;

Reproducir.buttonMode = true;
Reproducir.useHandCursor = true;

Parar.buttonMode = true;
Parar.useHandCursor = true;

var s:Sound = new Sound(); Reproducir.gotoAndStop(1); a=1;
s.load(new URLRequest("coche.mp3"));

var canal:SoundChannel = new SoundChannel();
canal=s.play();
canal.stop();

var pausePosition:int;

var spr:Sprite = new Sprite();
spr.addEventListener(Event.ENTER_FRAME, EnterFrame);
l=s.length

function EnterFrame(evt:Event) : void {
if (canal.position>l) {
pausePosition=0}
else {pausePosition=canal.position};
trace(canal.position,pausePosition);
if (canal.position>l) {Reproducir.gotoAndStop(1);a=1};

}

Reproducir.addEventListener(MouseEvent.CLICK,liberadoReproducir);

function liberadoReproducir (e:MouseEvent):void {
l=s.length-2;
if (canal.position>l) {pausePosition=0;}
else {
if (c==1){pausePosition=0;c=0;}
else {pausePosition=canal.position};}

if (a==1){Reproducir.gotoAndStop(2);a=0;b=1;canal=s.play(pausePosition);}
else {Reproducir.gotoAndStop(1);a=1;b=0;canal.stop()}

}

Parar.addEventListener(MouseEvent.CLICK,liberadoParar);
function liberadoParar (e:MouseEvent):void {
canal.stop();
pausePosition=0;
Reproducir.gotoAndStop(1);
c=1;
a=1;

}

En el fotograma tengo un par de instancias llamadas "Reproducir" ( que también funciona como pausa) y "Parar"

Por Yemedan

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Ago 2013 06:56 am
Ya se que hay mucho que corregir. Lo que me trae de cabeza es porque en la función "EnterFrame" se ejecuta todo el rato el trace mostrando los cambios de las variables pero no se ejecutan los "if" que tendrían que poner a cero la variable "pausePosition" cuando alcanzara el valor de "s.length"

Con el trace veo que si alcanza el valor pero no vuelve a cero como debería ocurrir si se ejecutara el if

Por Yemedan

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Ago 2013 03:05 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 29 Ago 2013 05:48 pm
Gracias Jorge. Vi esa posibilidad pero la tenía olvidada. Lo que quería preguntar es si existe un evento que se ejecute continuamente. Algo asi como " Objeto.addEventLiestenner" pero sin que esté vinculado a un objeto. No sé como explicarlo mejor :oops:

Por Yemedan

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Ago 2013 06:20 pm
EnterFrame es un callback que se ejecuta constantemente

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 29 Ago 2013 06:25 pm
Okey Muchas gracias!!! Me lo voy a estudiar

Por Yemedan

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Ago 2013 07:43 am
Ya lo tengo!! Es algo tan sencillo como

addEventListener(Event.ENTER_FRAME,myFunction);
function myFunction(event:Event) {
trace("Do Something");
}

Lo probé hace tiempo pero me daba error. No se porque. Ahí está la solución

Por Yemedan

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Ago 2013 10:34 am
Excelente !

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome

 

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