Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flex
Flex Forum d'entraide sur la programmation Adobe Flex : applications Internet riches (RIA)
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 12/09/2011, 19h47   #1
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 192
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 192
Points : 31
Points : 31
Par défaut AddChild sur une VBox : Référence d'objet nul

Salut tout le monde,

Je vais vous décrire directement mon cas:

- J'ai crée une VBox depuis la page mxml avec l'id "myVBox"
- Ensuite, depuis la page action script associée à la page mxml précédente, j'ai appelé la méthode addChild sur myVBox comme suit:

Code :
myVBox.addChild(myDisplayObject);
A l'éxecution de la page je reçois le message d'erreur:
Citation:
TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
(Sachant, qu'en faisant le debug, je remarque que myVBox est null)

Savez vous d'où provient le problème? (ou plus précisement pourquoi quand j'appel myVBox, je trouve que c'est null?)

Je vous remercie d'avance de vos réponses et de vos suggestions.

Cordialement.
dark_geek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 20h07   #2
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 279
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 279
Points : 2 327
Points : 2 327
bonjour,

montre nous ton code stp, sans lui on peut pas faire grand chose
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 20h55   #3
Membre régulier
 
Inscription : août 2006
Messages : 140
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 140
Points : 80
Points : 80
La réponse la plus plausible c'est que ta vbox n'est pas encore créee lorsque ton code est appelé.
Mais comme le dit Madfrix, il faudrait avoir un peu plus de ton code pour en être certain.
vilveq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 09h16   #4
Membre habitué
 
Inscription : avril 2010
Messages : 124
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 124
Points : 135
Points : 135
Hello,

Réponse la plus probable en effet comme le dit vilveq.
Appelle ton code actionscript dans le creationComplete de ton mxml pour voir. Ça devrait aller mieux.
clemoigno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 16h23   #5
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 192
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 192
Points : 31
Points : 31
Merci pour vos réponses,

Je vais vous expliquer comment mon code se déroule:
Dans mes pages action-script, je crée tout d'abord une instance de mon écran comme suit:
Code :
private var instanceDeMonEcran : monEcran= new instanceDeMonEcran ();
Ensuite, comme vous me l'avez conseillé, je fais l'appel à la fonction qui me permet de remplir ma VBox comme suit:
Code :
instanceDeMonEcran.addEventListener(FlexEvent.CREATION_COMPLETE, instanceDeMonEcran_CreationCompleteHandler);
Où j'ai défini le remplissage de ma VBox dans la fonction instanceDeMonEcran_CreationCompleteHandler.

La remarque la plus importante à l’exécution du code est que l’évènement creationComplete de l'instance de mon écran n'est jamais dispatché , et du coup la fonction instanceDeMonEcran_CreationCompleteHandler n'est jamais appelée. C'est ce qui explique également pourquoi la VBox était nulle lorsque j'essayais de la remplir avant que la création de l'écran ne soit terminée.

Je vous remercie encore pour vos propositions.
dark_geek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 16h28   #6
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 279
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 279
Points : 2 327
Points : 2 327
hello,

ta classe monEcran étend quelle classe ? Comment est elle construite ?
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 16h30   #7
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 192
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 192
Points : 31
Points : 31
c'est une composante mxml, voici sa structure générale:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
	creationPolicy="all">
 
        //....
 
	<mx:VBox id="ma VBox" 
		height="100%" width="100%" 
		horizontalAlign="center">
 
		//....
 
	</mx:VBox>
</mx:Canvas>
dark_geek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 16h37   #8
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 279
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 279
Points : 2 327
Points : 2 327
Je ne sais pas si tu le fais ou non mais l'événement FlexEvent.CREATION_COMPLETE est distribué quand :

Citation:
Distribué lorsque le composant a terminé sa construction, son traitement de propriétés, sa mesure, sa présentation et son tracé.
ce qui implique donc qu'il faut que tu l'ajoutes auparavant via addChild()
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 16h41   #9
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 192
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 192
Points : 31
Points : 31
En fait, même l'ajout de monEcran se fait dynamiquement dans mon cas.
Ce que j'essayais de faire est de remplir d'abord la VBox de monEcran et après ajouter monEcran à l'application.
Je vais corriger ça et je vous tiendrais au courant du résultat
dark_geek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 16h44   #10
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 279
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 279
Points : 2 327
Points : 2 327
Citation:
Envoyé par dark_geek Voir le message
Ce que j'essayais de faire est de remplir d'abord la VBox de monEcran et après ajouter monEcran à l'application.
tout est possible de faire mais dans ce cas de figure, tu ne peux donc pas utiliser l'event FlexEvent.CREATION_COMPLETE pour remplir la VBox avant car elle n'est pas ajoutée à la liste d'affichage et donc ne lance pas cet event
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 17h04   #11
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 192
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 192
Points : 31
Points : 31
le problème est résolu en appliquant le AddChild à monEcran.
Ce que je veux faire par la suite est d'ajouter un panel à ma VBox, en utilisant le code suivant:
Code :
1
2
var instanceDeMonPanel: monPanel= new monPanel();
monEcran.maVBox.addChild(instanceDeMonPanel);
Mais rien ne s'affiche dans la VBox, avez vous une idée sur la raison de ça?

(S'il faut créer un autre sujet pour ce problème d'affichage je le ferai)
dark_geek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 17h12   #12
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 279
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 279
Points : 2 327
Points : 2 327
Les instances de tes panels ne correspondent pas (instanceDeMonPanel vs vPanelAppli) mais je pense que c'est une coquille.

Es tu sur de bien exécuter cette portion de code ? Utilises tu un débugger ?
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 17h14   #13
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 192
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 192
Points : 31
Points : 31
désolé, j'ai fait une faute en copiant le code précédent, je l'ai corrigé.
dark_geek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 19h27   #14
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 192
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 192
Points : 31
Points : 31
La définition absolue de la hauteur et de la largeur de mon composant panel a résolu le problème
dark_geek 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 00h05.


 
 
 
 
Partenaires

Hébergement Web