Trasteando con "The fuse kit"
¿Alguien de vosotros ha usado fuse?
Siempre he usado <code>#include "mc_tween2.as"</code> para hacer los tween y hace unos días ví (si, voy con retraso) que se usaba la versión actualizada de los tween de laco <code>#include "lmc_tween.as"</code> y n el mismo momento descubrí fuse y por lo poco que he descubierto pinta bastante bien. Es más complejo pero te permite cosas como agrupar diferentes transformaciones de tween, ponerles nombre, vaya, una joya. El caso es q estoy haciendo unas pruebas con <code>import com.mosesSupposes.fuse.*;
ZigoEngine.simpleSetup(Shortcuts, PennerEasing);</code> es decir, con lo más básico aka "para torpes" y he intentado hacer lo q en otro post para hacer un tween a una variable <code>this.i=0;
this.tween("i",100,1,"easeOutQuint");
this.onTweenUpdate = function() {
trace(this.i);
}</code>
pero no me chuta. Sé que ahora funciona con un listener (ok, hace tiempo) pero lo que creo no me va bien.
<code>import com.mosesSupposes.fuse.*;
ZigoEngine.simpleSetup(Shortcuts, PennerEasing);
var listenr:Object = {};
listenr.onTweenUpdate = function() {
trace(???);
}
testclip.tween("_x", 350, 1, "easeInOutQuint");
testclip.addListener(listenr);</code>
No sé q poner en ??? ni como pasar x parametro ni nada. :S
Es curioso porque el tween está documentadísimo en todos lados pero algo tan tonto como un tween a variable me cuestra horrores encontrarlo :S
No sé si seguir con el tween prehistórico o q :S
¿Alguien con una experiencia más reciente en el tema?
hardface
Buah tio, yo me puse a enredar este y me volví al de Zeh cagando ostias! jeje pero se ve que es la ostia el Fuse.
ozke
No si es q me jode pq lo q quiero hacer es básico xo no m sale :S
Usuario desconocido
Aquí tienes dos tutoriales muy buenos que te ayudan a empezar a trastear con fuse. A mí me costó un poco al principio también pero en cuanto le coges la dinámica, es muy fácil y completo.
ozke
Pero si más o menos entiendo como va fuse, lo q quiero es hacer un tween a una variable y no a un objeto.
Con zeh creabas un objeto nulo y te inventabas una variable y t lo hacía bien... con fuse no me sale :S.
Ventd'Aval
Nunca he usado fuse (me parece demasiao complicao ^^)... pero en principio tu codigo deberia ser asi:
<code>import com.mosesSupposes.fuse.*;
ZigoEngine.simpleSetup(Shortcuts, PennerEasing);
var listenr:Object = {};
listenr.onTweenUpdate = function() {
trace(testclip._x);
}
testclip.tween("_x", 350, 1, "easeInOutQuint");
testclip.addListener(listenr);</code>
Luego para hacerlo con una variable es lo mismo, pero no debes olvidar el principio basico de AS2, inicializar variables! ^^
<code>import com.mosesSupposes.fuse.*;
ZigoEngine.simpleSetup(Shortcuts, PennerEasing);
testclip.a=0;
var listenr:Object = {};
listenr.onTweenUpdate = function() {
trace(testclip.a);
}
testclip.tween("a", 350, 1, "easeInOutQuint");
testclip.addListener(listenr);</code>
No se si funcionara con un Object en vez de un Movieclip (como pones en AH), sera cosa de probarlo... pero no te olvides de inicializar la variable ;)
ozke
Gracias una vez más tio, te debo una (cerveza?).
Dios, no sabía eso de as2 de inicializar a 0. Existe algún sitio en el q figuren todas esas friquieldades?
Ventd'Aval
ozke
Existe algún sitio en el q figuren todas esas friquieldades?
Creo que aquí sale algo de eso :P
ozke
Tengo comprado ese libro hace año y medio :oops:
Prometo leerlo en lugar de ir buscando lo q me hace falta :oops:
markshock
fuse = dolor de cabeza.
dolor de cabeza = gelocatil.
no me barrufa el fuse... demasiado complicado..
P.D: también tengo ese libro hace año y poco.. jajaja como no tengo tiempo nunca de ponerme con él delante del PC lo tengo para levantar el monitor xD xD pero creo que un par de cosas si que he mirado.. jejeje Pero es bueno.. sobre todo para enseñarte ha hacer clases..
hardface
Fijo que el Moock yasta cocinando el AS 3.0 con pimentón rojo!
:)
Ventd'Aval
ozke
Tengo comprado ese libro hace año y medio :oops:
igualito que yo, mi primera compra en amazon.... yo voy en la pagina 55, tu? xDD
hardface
Hey Vent, viste el mail que te invié (al gmail) ¿?
Ventd'Aval
sisi ^^
hardface
Dale pinche cracker!!!!
:)
ozke
Jajaja, nose q numero de pag llevo yo pero había poca chicha. :P
Usuario desconocido
Para empezar solo diré que Fuse es dios :mrgreen:
Lo que pasa es que lo estáis usando como los antiguos tweeners, y no le estáis sacando el jugo.
Una secuencia de tweens con fuse podría ser algo así:
<code>
ZigoEngine.register(Fuse, PennerEasing);
var f:Fuse = new Fuse();
f.push({x:50});
f.push({y:100});
f.push({rotation:180});
f.push({func:saluda, args:"hola", scope:this});
f.push({x:"-50", y:"100", alpha:50, scale:200});
f.target = miMovieClip;
f.addEventListener("onComplete", finFuse);
f.start();
function saluda(saludo:String):Void {
trace(saludo);
}
function finFuse():Void {
trace("Se terminó el fuse");
}
</code>
(Si algo no funciona es porque lo he escrito a saco sin probarlo...)
Aparte hay mil propiedades que tweenear, puedes tweenear varios targets al mismo tiempo, se pueden meter llamadas a funciones dentro de la secuencia, o comandos para pausar el fuse mientras se reproduce un sonido, y luego lo puedes resumir... no sé, en mi anterior trabajo usando AS2 era un "must have" y un "time saver" :mrgreen:
saludos
PD: Edito para añadir las llaves que se me habían olvidado, ya que al Fuse se le encolan objetos.
juandelgado
Yo estoy con msanchez.
Nunca habia utilizado Laco o Zigo o como se llamara. Y un dia me dio por hacer el Hello World de Fuse siguiendo un video tuto de GotoAndLearn, el que pone "Animating with Fuse". Y no fue muy dificil, a ver si saco tiempo y lo vuelvo a colar en algun proyecto.
Ea!
ozke
Yo de momento ya he hecho con fuse lo q hacía sin él, ahora intentaré sacarle jugo poco a poco :P
Goio Telletxea
Yo uso las clases de Zeh Fernando, luego he probado con las de Laco, y me cascaba algo como lo de FuseKit pero a manola con funciones propias. Esto es un paso más adelante que lleva rodando algo de tiempo y que es justo lo que decís, un "must have" y un "time saver" de fruta madre...
Yo no lo he usado aún porque sigo con mis viejas costumbres que valen para la mayoría de proyectos sencillos, pero para cosas complejas tengo claro que lo voy a enganchar.
todavía puede llevarse más allá integrándolo en el Flash de los bemoles y que lo pueda usar cualquiera de modo que se democraticen de una vez las animaciones sin necesidad de ser un crack de AS... A mí cada vez que veo a alguien animando con frames me da un cargo de conciencia y un dolor que...
ozke
Bueno, animar a frames a veces es necesario. Véase interpolaciones de forma determinadas.
Lo q comentas es interesante pq yo no me he metido con muchas cosas nuevas de flash x eso. Pq cn lo q sé me voy apañando siempre... y llega el dia q t paras (m pasa ahora) y levantas la cabeza y ves... flash 9 a punto de salir... flex flix flox flux... un software para aplicaciones d escritorio k tb... as3 ya con una documentacion importante... todo lo q hacías ahora se hace de otra manera... etc etc etc...
Me recuerda al post sobre pq es tan chungo encontrar actionscripters decentes. En fin, suerte que esta el foro para ir preguntando y aportando algo cuando se puede. :P
Por cierto... apliquese lo mismo a css, htmls, phps..... y sus compis nuevos ruby's ajaxes etc...
Goio Telletxea
Ozke, has dado en el clavo. En todo lo que has dicho. Me siento identificado. :)
hardface
Lo mismo me pasa a mi, con las de Zeh voy sobrao, aunque oyendo esas maravillas de Fuse... habrá que investigarlo...
ozke
Si tengo varios clips que se ejecutan con un pequeño desfase el uno del otro y quiero q cada uno tenga su propio onTweenUpdate tengo q crear un listener para cada uno de ellos?
El onTweenUpdate hace lo mismo para todos, pero cada uno en relacion a su clip claro.
Usuario desconocido
Qué quieres conseguir exactamente?
Lo digo porque a lo mejor puedes evitar el uso del onTweenUpdate, o como se llame en Fuse.
ozke
Pues quiero hacer un tween de algo no tweeneable. Es decir, imaginate que quiero dibujar una espiral, un circulo, un triangulo con curvas, nose.
Pues bien, yo uso una funcion dibujarAlgo, pero para que haga x ejemplo una espiral con aceleración uso tween. Un tween al movieclip dnd se dibuja la espiral pero en lugar de cambiar _x, _y o lo q sea le cambio XXX.
Detectando por onMotionChange como va cambiando la variable XXX la uso para ir redibujando la espiral. Eso, aplicado a multiples espirales q no se crean al mismo tiempo creo q me obligaría a usar varios listeners pq cada XXX irá cambiando a su bola.
No sé si me he explicado bien.
Usuario desconocido
Ok, entiendo. Entonces no hace falta usar Fuse, puedes usar solamente ZigoEngine.doTween(...loquesea...) y suscribirte a su evento onTweenUpdate.
Y con que te suscribas una vez sobra, puesto que el objeto que te envía como parámetro contiene el target que ha sido 'tweeneado'.
saludos
ozke
msanchez
Ok, entiendo. Entonces no hace falta usar Fuse, puedes usar solamente ZigoEngine.doTween(...loquesea...) y suscribirte a su evento onTweenUpdate.
Y con que te suscribas una vez sobra, puesto que el objeto que te envía como parámetro contiene el target que ha sido 'tweeneado'.
saludos
:|
No se si te entiendo, la primera parte ok, ya es lo q hacía. El problema no es el tween. El problema es q el tween solo me sirve para cambiar una variable que me sirve para ir llamando a una funcion cada vez q se actualiza el tween (onTweenChanged).
1. Creo el listener sobre A
2. Llamo al tween sobre un objeto A
3. Cada vez q el tween cambia el valor d la variable yo llamo a la funcion q hace algo sobre A
Si en lugar de A tengo A, B, C, D, E... tengo q usar varios listeners no?
Usuario desconocido
Sacado de los docs de ZigoEngine:
<code>
var myListener:Object = {
onTweenStart:function(o:Object):Void {
trace("Tween started on:"+o.target._name+" ["+o.props.toString()+"]");
},
onTweenUpdate:function(o:Object):Void {
trace("Tween updating on:"+o.target._name+" ["+o.props.toString()+"]");
},
onTweenEnd:function(o:Object):Void {
trace("Tween completed on:"+o.target._name+" ["+o.props.toString()+"]");
}
};
// if simpleSetup was not used, initialize targets first to accept listeners
ZigoEngine.initialize(clip1, clip2);
clip1.addListener(myListener);
clip2.addListener(myListener);
ZigoEngine.doTween(clip1,"_alpha",0,2);
ZigoEngine.doTween(clip2,"_scale",200,2);
</code>
Como puedes ver utiliza un solo listener.
ozke
Mmm... justo lo q buscaba :D Genial.
La versión fuse d esto como sería? :? :mrgreen:
Usuario desconocido
Pues podría ser algo así:
<code>
var f:Fuse = new Fuse();
f.push({target:mc1, x:200, updfunc:onUpdate, updargs:mc1});
f.push({target:mc2, x:200, updfunc:onUpdate, updargs:mc2});
f.start();
function onUpdate(target:MovieClip):Void {
trace("updating " + target._name + " " + target._x);
}
</code>
Pero sustituyendo x por alguna propiedad no tweeneable, como 'xy' o cualquiera que no exista.