michmichman
Messages postés79Date d'inscriptionjeudi 11 août 2005StatutMembreDernière intervention17 mars 2011
-
15 mars 2011 à 22:28
michmichman
Messages postés79Date d'inscriptionjeudi 11 août 2005StatutMembreDernière intervention17 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.
michmichman
Messages postés79Date d'inscriptionjeudi 11 août 2005StatutMembreDernière intervention17 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;
}
}
}
}