Tween et fonction rewind()

Résolu
michmichman Messages postés 79 Date d'inscription jeudi 11 août 2005 Statut Membre Dernière intervention 17 mars 2011 - 15 mars 2011 à 22:28
michmichman Messages postés 79 Date d'inscription jeudi 11 août 2005 Statut Membre Dernière intervention 17 mars 2011 - 17 mars 2011 à 20:48
Bonjour je cherche à réaliser une animation toute simple(en AS3).
Je dessine un rectangle et au click je déclenche une tween, jusque la tout va bien !
Mais je veux utiliser la fonction rewind() pour revenir à la position initiale et je n'arrive pas à mettre ca en place.

Voici mon code :

package  {

import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.Shape;
import flash.display.Sprite;
import fl.transitions.Tween;
import fl.transitions.easing.*;

public class dessin
{
var rectangleContour:Shape = new Shape ();
var mySprite:Sprite = new Sprite();
var etat:Boolean = new Boolean();

public function dessin() 
{

}

public function rect()
{
rectangleContour.graphics.beginFill(0xFFFF00);// je dessine mon rectangle
rectangleContour.graphics.drawRect(20, 30, 200, 200);

mySprite.addChild(rectangleContour);// j'ajoute le rectancle à mon Sprite			

mySprite.addEventListener(MouseEvent.CLICK,zoomi);//déclanche fonction zoomi au click

return mySprite;// je renvoi le Sprite au FLA
}

function zoomi(evt:Event)
{
if(etat==false)//je control avec le booléan si la tween à étée affectuée
{
var myTweenY:Tween = new Tween(evt.target,"y", Elastic.easeOut, evt.target.y, 100, 3, true);
etat=true;
}
else
if(etat==true)
{
myTweenY.rewind();/* messsage d'erreur : TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
at dessin/zoomi()*/
}

}

}

}


Je pense que le problème est dans la structure de ma fonction mais je n'arrive pas à voir comment faire.

D'avance merci !

2 réponses

BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
16 mars 2011 à 11:07
Hello,

essaie simplement en déclarant ta tween en-dehors de ta fonction :
var myTweenY:Tween;

Ensuite tu appelles ta tween ainsi si etat==false :
myTweenY = new Tween(...blablabla..)


A plus ,

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;

musichrono
3
michmichman Messages postés 79 Date d'inscription jeudi 11 août 2005 Statut Membre Dernière intervention 17 mars 2011
17 mars 2011 à 20:48
C'était effectivement aussi simple que ça.
En fait la fonction rewind() ne me convenait pas c'est la fonction yoyo() que j'ai finalement choisit. Ainsi je reviens en position initiale avec interpolation.

Voici mon nouveau code fonctionnel :

package  {

import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.Shape;
import flash.display.Sprite;
import fl.transitions.Tween;
import fl.transitions.easing.*;

public class dessin
{
var rectangleContour:Shape = new Shape ();
var mySprite:Sprite = new Sprite();
var etat:Boolean = new Boolean();
var myTweenY:Tween;

public function dessin() 
{

}

public function rect()
{
rectangleContour.graphics.beginFill(0xFFFF00);// je dessine mon rectangle
rectangleContour.graphics.drawRect(20, 30, 200, 200);

mySprite.addChild(rectangleContour);// j'ajoute le rectancle à mon Sprite			

mySprite.addEventListener(MouseEvent.CLICK,zoomi);//déclanche fonction zoomi au click

return mySprite;// je renvoi le Sprite au FLA
}

function zoomi(evt:Event)
{
if(etat==false)//je control avec le booléan si la tween à étée affectuée
{
myTweenY = new Tween(evt.target,"y", Elastic.easeOut, evt.target.y, 100, 3, true);
etat=true;
}
else
if(etat==true)
{
myTweenY.yoyo();
etat=false;
}

}

}

}


Merci à toi !
0
Rejoignez-nous