Tambien puedes definir callbacks para el objeto ZigoEngine de la siguiente forma:
<code>function onTweenUpdate(mc:MovieClip):Void{
trace("update: "+mc);
}
function onTweenEnd(mc:MovieClip):Void{
trace("tween end in: "+mc);
}
ZigoEngine.doTween(mc,"_x",100,1,"easeOutExpo",0,{scope:this, func:'onTweenEnd', args:mc, updscope:this, updfunc:'onTweenUpdate', updargs:mc})</code>
En la documentación se pueden ver más propiedades del objeto callback.
No si ya se lo de los callbacks. Lo q quiero es q ese updfunc llame a una funcion (hasta aqui ok) pero q esta funcion me haga un trace de una variable xxx y no de una propiedad. No tiene q ser chungo pero llevo un lío...
Puedes usar otro pequeño truco, que consiste en tweenear una propiedad a un valor que ya tiene, por ejemplo el alpha a 100, tu no vas a ver ningún cambio pero el tween lo va a hacer :-P
En este ejemplo va a tweenear los valores de miArray, desde 0 a 100 y desde 50 a 200. Luego en tu función puedes usar esos valores para lo que quieras.
Una curiosidad, si lo mismo q me funciona d tu ejemplo lo hago con fun fuse metido en una función no chuta. He metido la variable d la q hace uso dentro d la función y nada. Lo único q me va es sacar la variable y poner como target al fuse _root. Pero m parece un poco warro. :P
¿Es normal?
Eso es porque cuando termina la llamada a la función la variable que has definido dentro se elimina, y el fuse no puede acceder a ella.
Tendrás que usar una variable que esté en un ámbito donde permanezca viva mientras se ejecuta el fuse, y como target al fuse le deberás pasar el objeto/propietario que ha definido el array, en mi ejemplo era this.
De todas formas si defines el fuse dentro de una funcion podrias usar algo asi:
<code>
...
var miArray:Array = [0, 0];
var ref:MovieClip = this;
public function defineFuse():Void {
fuse.push({target:ref, miArray:[100, 50], updFunc:miUpdate, updArgs:miArray});
}
...
</code>
Eso último q has puesto no me funciona. No se si es pq aún estoy testeando y no estoy haciendo las cosas en OOP.
Sea como sea, creo q igualmente te mereces el titulo de "Authorized Fuse trainer" de dmstk :)
La otra putada es... si tengo q hacer el push a 5 movieclips ejecutandose a la vez xo cn dsfase (necesito ir modificando 5 variables/arrays), tengo q declarar 5 arrays? :S
El código que puse sí que me funcionaba, quizá te faltaría el código que iba en los puntos suspensivos :-P
Y para lo que pides, podemos aprovechar que MovieClip es una clase dinámica y le podemos encasquetar propiedades al vuelo, aunque esto no sea muy correcto en OOP...
ozke
Ardo en deseos de llegar a casa y probarlo ;)
Muchas gracias una vez más :P
ozke
Cuando uso en lugar d x... xy no me funciona :S
Usuario desconocido
Tambien puedes definir callbacks para el objeto ZigoEngine de la siguiente forma:
<code>function onTweenUpdate(mc:MovieClip):Void{
trace("update: "+mc);
}
function onTweenEnd(mc:MovieClip):Void{
trace("tween end in: "+mc);
}
ZigoEngine.doTween(mc,"_x",100,1,"easeOutExpo",0,{scope:this, func:'onTweenEnd', args:mc, updscope:this, updfunc:'onTweenUpdate', updargs:mc})</code>
En la documentación se pueden ver más propiedades del objeto callback.
ozke
No si ya se lo de los callbacks. Lo q quiero es q ese updfunc llame a una funcion (hasta aqui ok) pero q esta funcion me haga un trace de una variable xxx y no de una propiedad. No tiene q ser chungo pero llevo un lío...
Usuario desconocido
Puedes usar otro pequeño truco, que consiste en tweenear una propiedad a un valor que ya tiene, por ejemplo el alpha a 100, tu no vas a ver ningún cambio pero el tween lo va a hacer :-P
ozke
Pero entonces el valor q lea para generar la funcion será siempre 100 :S
Usuario desconocido
Bueno, pues entonces vamos a tirar de la posibilidad de tweenear arrays:
<code>
var miArray:Array = [0, 50];
var f:Fuse = new Fuse();
f.push({target:this, miArray:[100, 200], updfunc:onUpdate, updargs:[miArray]});
f.start();
function onUpdate(p:Array):Void {
trace("valor1: " + p[0] + " valor2:" + p[1]);
}
</code>
En este ejemplo va a tweenear los valores de miArray, desde 0 a 100 y desde 50 a 200. Luego en tu función puedes usar esos valores para lo que quieras.
ozke
Eso sí funciona :P.
Muchas gracias tio.
Una curiosidad, si lo mismo q me funciona d tu ejemplo lo hago con fun fuse metido en una función no chuta. He metido la variable d la q hace uso dentro d la función y nada. Lo único q me va es sacar la variable y poner como target al fuse _root. Pero m parece un poco warro. :P
¿Es normal?
Usuario desconocido
Eso es porque cuando termina la llamada a la función la variable que has definido dentro se elimina, y el fuse no puede acceder a ella.
Tendrás que usar una variable que esté en un ámbito donde permanezca viva mientras se ejecuta el fuse, y como target al fuse le deberás pasar el objeto/propietario que ha definido el array, en mi ejemplo era this.
De todas formas si defines el fuse dentro de una funcion podrias usar algo asi:
<code>
...
var miArray:Array = [0, 0];
var ref:MovieClip = this;
public function defineFuse():Void {
fuse.push({target:ref, miArray:[100, 50], updFunc:miUpdate, updArgs:miArray});
}
...
</code>
un saludo
ozke
Eso último q has puesto no me funciona. No se si es pq aún estoy testeando y no estoy haciendo las cosas en OOP.
Sea como sea, creo q igualmente te mereces el titulo de "Authorized Fuse trainer" de dmstk :)
ozke
La otra putada es... si tengo q hacer el push a 5 movieclips ejecutandose a la vez xo cn dsfase (necesito ir modificando 5 variables/arrays), tengo q declarar 5 arrays? :S
Usuario desconocido
El código que puse sí que me funcionaba, quizá te faltaría el código que iba en los puntos suspensivos :-P
Y para lo que pides, podemos aprovechar que MovieClip es una clase dinámica y le podemos encasquetar propiedades al vuelo, aunque esto no sea muy correcto en OOP...
<code>
import com.mosesSupposes.fuse.*;
ZigoEngine.register(Fuse, PennerEasing, FuseFMP);
var f:Fuse = new Fuse();
for (var i:Number=1; i<=5; i++) {
var mc:MovieClip = this["mc"+i];
mc.prop = 0;
f.push({target:mc, prop:100, updfunc:onUpdate, updargs:mc, delay:i});
}
f.start();
function onUpdate(mc:MovieClip):Void {
trace(mc._name + " " + mc.prop);
}
</code>
En el ejemplo tweeneamos una propiedad nueva llamada 'prop' de cada MovieClip.
un saludo