Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS3
AS3 Questions relatives à la programmation ActionScript 3 (Cours AS3)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/02/2011, 18h41   #1
Invité de passage
 
Fabas Maxime
Inscription : juin 2010
Messages : 4
Détails du profil
Informations personnelles :
Nom : Fabas Maxime

Informations forums :
Inscription : juin 2010
Messages : 4
Points : 0
Points : 0
Par défaut Objet Stage, référencé comme un objet nul.

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 :

Code :
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
Et la classe de l'objet créé au clic :

Code :
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
L'erreur vient de la fonction sortie, dans le second fichier.
Merci beaucoup de votre aide et de votre temps !
maximefabas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 10h34   #2
Membre Expert
 
Avatar de Lorenzo77
 
Inscription : mai 2006
Messages : 1 294
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 1 294
Points : 1 220
Points : 1 220
salut

Code :
trace((this.parent as MovieClip).compteurClic);
MovieClip n'a pas de propriété "compteurClic"

ceci fonctionnera si tu n'as pas d'erreurs de ciblage
Code :
(this.parent as systemeSolaire).compteurClic
__________________
Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
Mon blog : http://web.codeur.free.fr
Lorenzo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 16h54   #3
Invité de passage
 
Fabas Maxime
Inscription : juin 2010
Messages : 4
Détails du profil
Informations personnelles :
Nom : Fabas Maxime

Informations forums :
Inscription : juin 2010
Messages : 4
Points : 0
Points : 0
Merci tout d'abord de cette réponse.
Malheureusement, flash me sort toujours l'erreur #1009.

Je viens d'essayer cette technique http://www.seangw.com/wordpress/inde...ctionscript-3/ , mais sans résultat (Erreur #1065, La variable StageReference n'est pas définie).

Je continue à chercher, et signalerai en cas de résolution de problème.

Maxime
maximefabas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 09h26   #4
Membre Expert
 
Avatar de Lorenzo77
 
Inscription : mai 2006
Messages : 1 294
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 1 294
Points : 1 220
Points : 1 220
oups, y a aussi une erreur dans la classe "systemeSolaire".

tu ne peux pas utiliser la propriété "stage" d'une occurence tant que celle ci n'est pas dans la liste d'affichage.
__________________
Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
Mon blog : http://web.codeur.free.fr
Lorenzo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 18h30   #5
Invité de passage
 
Fabas Maxime
Inscription : juin 2010
Messages : 4
Détails du profil
Informations personnelles :
Nom : Fabas Maxime

Informations forums :
Inscription : juin 2010
Messages : 4
Points : 0
Points : 0
Ok... Bon, je n'ai pas vraiment trouvé d'ou venait le problème.

Cependant, j'ai fini par tout mettre dans un seul objet, et me dispenser de la scene, en "descendant d'un niveau'. Ça a l'air de marcher !

Merci pour votre aide. ; )
maximefabas est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h17.


 
 
 
 
Partenaires

Hébergement Web