Bonjour,
Je débute en AS3 / POO, et je suis confronté depuis hier à ce petit problème, qui me bloque totalement dans l'avancée de mon projet. En gros, je voudrais à terme réaliser un système de points gravitants les uns autour des autres, mais on en est pas là, et mon problème est bien moins avancé.
J'ai deux fichiers as. L'un pour la classe de document, et un autre dans un package nommé myPackage. Le souci est tout bête, quand j'essaye d'accéder à des propriétés de ma scène, depuis mon fichier dans le package, Flash me dit qu'il ne peut pas accéder à des propriétés d'un objet nul.
Je vérifie pourtant dans mon code que l'objet est ajouté à la scene avant de faire un trace de la scene, mais rien à faire...
Voici mes 2 fichiers. D'abord la classe de document :
Et la classe de l'objet créé au clic :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 package { import flash.display.MovieClip; import flash.events.MouseEvent; import flash.events.Event; import flash.events.KeyboardEvent; import myPackage.planete; public class systemeSolaire extends MovieClip { public var tableauPlanete:Array = new Array(); // Contient toutes les occurences de planètes sur la scene public var compteurClic:int = 0; // Compte le nombre de planètes créées. public function systemeSolaire() { stage.addEventListener(MouseEvent.MOUSE_DOWN, newPlanet); // Au clic, on lance la fonction de création de planète. } // constructeur public function newPlanet (e:MouseEvent)*{ compteurClic += 1; // Compte 1 planète de plus tableauPlanete[compteurClic] = new planete(); // Instancie l'objet planète stage.addChild(tableauPlanete[compteurClic]); // L'ajoute à la scene } // fonction newPlanet } // class } // pkg
L'erreur vient de la fonction sortie, dans le second fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 package myPackage { import flash.display.MovieClip; import flash.events.KeyboardEvent; import flash.events.MouseEvent; import flash.events.Event; public class planete extends MovieClip { var addedToStage:Boolean = false; public function planete ()*{ this.addEventListener(Event.ENTER_FRAME, sortie); this.addEventListener(Event.ADDED_TO_STAGE , addedToStageCheck); } // constructeur public function sortie (e:Event):void { if (addedToStage) { trace((this.parent as MovieClip).compteurClic); } } public function addedToStageCheck (e:Event) { addedToStage = true; } } // class } // pkg
Merci beaucoup de votre aide et de votre temps !
Partager