IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode..


Sujet :

ActionScript 3

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Points : 281
    Points
    281
    Par défaut TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode..
    Bonjour,
    Je débute en Flex/AS et j'essaie de créer une application permettant d'ajouter et éditer des graphismes.

    Mon code pour créer un graphisme est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public function CreateEllipse():void
    			{
    				var conteneur:UIComponent = new UIComponent();
    				conteneur.id = "ellipse"+ ellipseN;
    				ellipseN++;
     
    				var el:Shape = new Shape();
    				el.graphics.beginFill(rgb2hex(parseInt(EllipseR.text), parseInt(EllipseG.text), parseInt(EllipseB.text)), parseInt(EllipseA.text)/255);
    				el.graphics.drawEllipse(parseInt(EllipseL.text), parseInt(EllipseT.text), parseInt(EllipseW.text), parseInt(EllipseH.text));
    				conteneur.addChild(el);
     
    				ellipseLi.addItem(conteneur.id);
    				Display.addChild(conteneur);
    			}
    J'ai donc dans mon Canvas "Display" un UIcomponent d'Id "ellipse..." contenant mon graphisme et l'Id de ce graphisme est affiché dans une liste ayant pour fonction de changement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private function SelectEllipse():void
    		{
    			var conteneur:UIComponent = EllipseLi.selectedItem.toString() as UIComponent;
    ...
    C'est cette fonction qui me renvoie l'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 VectorGraphics/SelectEllipse()[D:\Dev\Adobe\Flex\VectorGraphics\src\VectorGraphics.mxml:60]
    at VectorGraphics/__EllipseLi_change()[D:\Dev\Adobe\Flex\VectorGraphics\src\VectorGraphics.mxml:108]
    ...
    J'ai testé l'affichage de "EllipseLi.selectedItem.toString()" et ça m'affiche bien l'Id de mon UIComponent. Si j'ai bien compris, il n'y a pas de fonction comme getElementById() en AS car les objets sont accessibles directement, donc je ne comprends pas du tout pourquoi cet objet est considéré comme null...

    Merci de votre aide.

  2. #2
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    le toString n'a rien a faire la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var conteneur:UIComponent = EllipseLi.selectedItem as UIComponent;
    regarde les méthodes de la classe DisplayObjectContainer, tu as getChildByName, getChildAt ...
    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

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Points : 281
    Points
    281
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var conteneur:UIComponent = Display.getChildByName(EllipseLi.selectedItem.toString()) as UIComponent;
    var el:Shape = conteneur.getChildAt(0) as Shape;
    Ce code fonctionne avec les graphismes créés avec un attribut name au lieu de id, merci

    C'est donc réglé, mais juste par curiosité, pourquoi l'id ne fonctionne pas ?

  4. #4
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    pourquoi encore le toString ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (EllipseLi.selectedItem as UIComponent).name
    j'ai oublié de te dire qu'il y avait aussi les méthodes getChildByName / getChildAt de UIComponent ... j'ai un peu perdu l'habitude de Flex
    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

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Points : 281
    Points
    281
    Par défaut
    Parce que sans le toString() j'ai un message d'erreur :
    1118: Contrainte implicite d'une valeur du type statique Object vers un type peut-être sans rapport String.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/03/2011, 01h54
  2. Error #1009: Il est impossible d'accéder.
    Par zack990 dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 25/02/2011, 09h02
  3. Réponses: 5
    Dernier message: 11/06/2009, 17h46
  4. Réponses: 6
    Dernier message: 11/11/2008, 13h20
  5. Réponses: 3
    Dernier message: 02/06/2008, 09h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo