C'est exactement la structure que j'utilise depuis le début, mais j'en reviens toujours à mon problème de départ : l'objet fonctionne s'il est de type MovieClip, pas Case.
Voici ma classe Case :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| package anim {
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.MovieClip;
import flash.display.LoaderInfo;
public class Case extends MovieClip {
private var tempsMulti:Number = 1.0;
public function Case():void {
var param:Object = LoaderInfo(this.loaderInfo).parameters;
if (param['tempsMulti'] != null) this.tempsMulti = Number("0"+ param['tempsMulti']);
trace("init");
this.stop();
}
public function setTempsMulti(temps:Number):void {
this.tempsMulti = temps;
}
public function attends(tps:Number):void {
var temps:Number = tps * this.tempsMulti;
var timer:Timer = new Timer(temps, 1);
this.stop();
trace("attends : "+ temps);
timer.addEventListener(TimerEvent.TIMER, this.suivant);
timer.start();
}
private function suivant(event:TimerEvent):void {
this.play();
trace("suivant");
}
}
} |
Et dans la classe Planche, les fonctions de chargement et lecture du SWF :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| // Lis l'animation de case chargée
private function lisAnim():void {
this.caseAnim = this.chargeur;
this.chargeur = new Loader();
this.laCase.alpha = 0;
var nomCase:String = this.laCase.name.toString();
this.laCaseNb = nomCase.replace(/p([0-9]*)c([0-9]*)/, "$2");
var caseSuivanteNb:Number = Number("0"+ this.laCaseNb)+1;
if (caseSuivanteNb <= this.nbCases && this.lectureAuto) this.chargeAnim(caseSuivanteNb.toString());
stage.addChild(this.caseAnim);
this.clip = this.caseAnim.content as Case;
this.clip.play();
this.animEnCours = true;
// On test le clic pour revenir à la planche complète
this.caseAnim.addEventListener(MouseEvent.CLICK, this.resetAnimClic);
this.caseAnim.addEventListener(Event.ENTER_FRAME, this.testAnimFinie);
}
// Chargement de l'animation de case
private function chargeAnim(caseNb:String):void {
var url:String = this.caseURL.replace(/#planche#/, this.plancheNb);
url = url.replace(/#case#/, caseNb);
var urlReq:URLRequest = new URLRequest(url);
this.chargeur.load(urlReq);
this.chargeur.contentLoaderInfo.addEventListener(Event.COMPLETE, this.finChargementAnim);
} |
Dans lisAnim(),
this.clip = this.caseAnim.content as MovieClip;
fonctionne parfaitement, les traces de Case sont bien affichées, tandis qu'avec :
this.clip = this.caseAnim.content as Case;
seule la trace de la fonction de constructeur est affichée...
Partager