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 :

Accès à une méthode d'une classe stockée dans un arraycollecton


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 85
    Par défaut Accès à une méthode d'une classe stockée dans un arraycollecton
    Bonjour à tous,

    je développe une appli en flex, et j'ai un soucis en as3.

    J'ai une classe Cours qui extends ArrayCollection, dans laquelle je créer et stocke des instances d'une autre classe CoursItem, qui elle extends Panel, car elle est vouée a l'affichage.

    Après avoir créer mes CoursItem, je les initié (x,y,heigth,width,....), en passant pas le ArrayCollection.

    Voici mon code :

    var tempItem:Object = new CoursItem();

    for(var i:uint=0;i<5;i++){
    tempItem = CC.getItemAt(i,0);
    InitializePanel(tempItem,i);
    }

    //CC c'est une variable Cours (arraycollection) qui contient mes cours item
    Le problème est que dans ma classe coursItem, j'ai une méthode pour ajouter les CoursItem (donc Panel), a ma fenetre, mais je n'arrive pas à faire de tempItem.MaMéthode();

    l'erreur est "MaMéthode n'est pas une fonction."

    Pourriez-vous m'aider, parce que j'ai passé la journée dessus et je craque.

    A la base je code plus en Csharp .net et le flexbuilder, désolé pour le pro fles, mais je trouve ça nulle.
    C'était juste mon avis de débutant.

    merci d'avance

  2. #2
    Membre chevronné Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Par défaut
    Pourquoi Object et pas CoursItem en type ? Oo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var tempItem: CoursItem  = new CoursItem();
    Humm sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var tempItem:Object = new CoursItem();
     
    for(var i:uint=0;i<5;i++){
        tempItem = CC.getItemAt(i,0);
        InitializePanel(tempItem,i);
    }
    tu peux remplacer par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(var i:uint=0;i<5;i++)
        InitializePanel(CC.getItemAt(i,0),i);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 85
    Par défaut
    Alors j'ai mis
    var tempItem: Object = new CoursItem();
    par que lorsque que je récupère le contenu de mon arraycollection
    CC.getItemAt(i,0);
    il ne peut faire la conversion entre un type object et un type CoursItem.

    en .Net j'aurais fait un truc de ce style
    (CoursItem)(CC.getItemAt(i,0))
    et il yaurait eu aucun soucis

    voila merci de m'aider, ou de me renvoyer vers des tutos as3 orienté object avec les notions d'héritage et de polymophisme, parce que ceux que j'ai trouvé c'est juste sur la déclaration des classes

    merci d'avance

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    salut,

    sinon tu peux faire ceci en AS3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (CC.getItemAt(i,0) as CoursItem)

  5. #5
    Membre chevronné Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Par défaut
    ou comme en .net

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (CoursItem)(CC.getItemAt(i,0))
    voir meme pour etre plus lisible

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (CoursItem)CC.getItemAt(i,0)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 85
    Par défaut
    Merci IP-FIXE, mais tu te doute bien que j'ai tester et le cast n'est pas supporté en AS3, ou du moins pas de cette façon.

    Merci pour votre soutient mais le problème persiste, je vais essayer de vous détailler exactement mon pb si ca n'a pas été très clair avant.

    Voici mon code :
    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
    28
    29
    30
     
    //je suis dans ma classe Cours qui extends ArrayCollection
     
                              //j'ai testé les 3 lignes en dessous
                                var tempItem:Object = new CoursItem();
    			  //var tempItem:Object = new Object();
    			  //var tempItem:CoursItem = new CoursItem();
     
                                  //a ce moment this.length renvoi 10
    				if(this.length <5){limite=this.length;} 
    				else{ limite=5;}
     
                                  //test 1
    				for(var i:uint=0;i<limite;i++){
    					tempItem = this.getItemAt(i,0);
     
    					trace(tempItem.getPageName());
     
         //ici l'erreur est getPageName() n'est pas une fonction
        // or getPageName est une méthode de la classe CoursItem qui fonctionne //car je m'en sers auparavant                        
    //et ici tempItem est bien reconnu comme un //CoursItem                                
     
     
                                 //test 2
                                     for(var i:uint=0;i<limite;i++){
    					tempItem = (this.getItemAt(i,0) as CoursItem);
     
    					trace(tempItem.getPageName());
     
    // ici des que je fais le getItemAt, la variable tempItem passe de tempItem Object, à null, et donc tempItem.getPageName() lève une erreur (objet null) normal
    j'espère avoir été assez clair, et que quelqu'un pourra m'expliquer comment stocker des objets d'une classe perso dans un arraycollection (ou autre), et après pouvoir utiliser ces objets et leurs méthodes

    merci d'avance

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

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. Accès à une méthode d'une form depuis une autre autre form
    Par arngrimur dans le forum Windows Forms
    Réponses: 16
    Dernier message: 13/01/2012, 15h45
  3. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  4. Réponses: 0
    Dernier message: 30/09/2009, 18h42
  5. Réponses: 6
    Dernier message: 20/04/2007, 15h24

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