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 :

[test visible] erreur1050


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 33
    Par défaut [test visible] erreur1050
    Bonjour,

    CONTEXTE:
    Je dispose de 5 clips, intitulés titre11, titre21, titre31, titre41, titre51.
    A chaque affichage il n'y a qu'un clip qui est en "visible".

    OBJECTIF
    Je souhaite tester quel clip est en visible pour activer des fonctions

    DEMARCHE
    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
     
    function fonction1 (event:MouseEvent) :void{
    	for (var i:int=11; i<=51; i++) {
    	 if ('titre'+i.visible=true) {
    	 var titre:String = 'titre'+i;  
    	}}
     
    	switch(titre){
    	case "titre11":
    		colonne2();
    	case "titre21":
    	    colonne3();
    	case "titre31":
    		colonne4();
    	case "titre41":
    		colonne5();
    	case "titre51":
    		colonne1();		
     
    }}
    ERREUR
    1050:affectation impossible à une valeur non référentielle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ('titre'+i.visible=true) {
    PISTE
    Y'a til une erreur de syntaxe?
    Ou alors mon test visible n'est pas correct?
    J'ai déjà testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ('titre'+i.visible==true) {
    mais cela me renvoit:
    Erreur 1119: accès à la propriété visible peut être non définie via la référence de type static int.

  2. #2
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    Bonjour,

    pour tester une valeur il faut utiliser == et non =.
    ensuite si il y a 5 clips donc il faut faire une boucle avec 5 itérations, de 1 à 5 et non de 11 à 51.
    pour accéder à un clip avec son nom dans une chaine de caractère il faut utiliser les crochets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clipContainer["titre" + i + "1"].visible
    sinon au lieu de tester la valeur du titre qui va de "titre11" à "titre51" c'est plus pratique de tester la valeur de i de 1 à 5.

    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
    function fonction1 (event:MouseEvent) :void{
        var clipConteneur = ...
        var targetPos:int = 1;
        for (var i:int=1; i<=5; i++)
        {
            if (clipConteneur["titre"+i+"1"].visible == true)
            {
                targetPos = i;
                break;
            }
        }
    
        switch(targetPos){
        case 1:
            colonne2();
        case 2:
            colonne3();
        case 3:
            colonne4();
        case 4:
            colonne5();
        case 5:
            colonne1();        
        }
    }
    ( il reste à définir la variable clipConteneur )

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 33
    Par défaut
    Merci pour cette réponse.

    mes clips se nomment titre11, titre21 parceque d'autres clip dans mon projet se nomment déjà titre1,titre2,etc.Sinon en effet c'est plus simple de les nommer comme vous l'indiquez.

    En fait "titre" est précisément le nom de l'occurence de clip.
    Mon problème se trouve là. je dois tester:
    titre11.visible==true?
    titre21.visible==true?
    etc.
    car
    le nom d'occurence de clip11=titre11
    le nom d'occurence de clip21=titre21
    etc.
    Donc je n'ai pas d'interêt à créér un clipConteneur.

    EN fait ce que je veux faire avec un switch correspond à cela avec des else if:
    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
     
    function fonction1 (event:MouseEvent) :void{
     
    	if (titre11.visible==true){
    		colonne2();		
    	}else if(titre21.visible==true){
    		colonne3();
    	}else if (titre31.visible==true){
    		colonne4();
    	}else if (titre41.visible=true){
    		colonne5();
    	}else if (titre51.visible==true){
    	    colonne1();
    	}
     
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 26
    Par défaut
    Salut, dans ton code "i" est une variable. Tu ne peux pas affecter la propriété ".visible" à une variable, ça ne marche que pour les Sprite, MovieClip, Composants.

    De plus, tu aurais intérêt à rentrer tes clips dans un tableau du genre (je n'ai pas testé !!) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var tableau:Array = new Array(titre11, titre21, titre31, titre41, titre51);
     
    function verifieVisible(){
        for(var i:int = 0; i<tableau.length; i++){
            if( tableau[i].visible == true){
                //là je fais un trace, mais tu n'as plus qu'a lancer la suite de ta fonction
                trace(tableau[i].name+" est visible !!!");
            }
        }
    }
    Du coup, tu les isoles dans un tableau à part, et grâce à lui tu vas pouvoir les atteindre facilement. Regardes si ça correspond à ce que tu recherches.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 26
    Par défaut
    voici un exemple en PJ
    Fichiers attachés Fichiers attachés

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 33
    Par défaut
    Merci beaucoup.

    EN fait dans mon code j'ai plusieurs boutons.
    Du coup, je comprends bien l'interêt de fonctionnaliser et la fonction visible de "ions" est pertinente mais difficilement applicable dans mon cas (à chaque bouton selon le clip.visible==true, la fonction appelée varie), du moins, je ne vois pas comment l'appliquer.
    En d'autres termes, mon souhait serait d'alleger le code suivant, qui fonctionne désormais mais qui peut être optimisé, j'en suis persuadé.

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    // on click
    bouton2.addEventListener(MouseEvent.CLICK, powerClick2);
    bouton3.addEventListener(MouseEvent.CLICK, powerClick3);
    bouton4.addEventListener(MouseEvent.CLICK, powerClick4);
    bouton5.addEventListener(MouseEvent.CLICK, powerClick5);
     
     
    //actions boutons
    function powerClick2 (event:MouseEvent) :void{
     
    	if (titre11.visible==true){
    		colonne2();		
    	}else if(titre21.visible==true){
    		colonne3();
    	}else if (titre31.visible==true){
    		colonne4();
    	}else if (titre41.visible==true){
    		colonne5();
    	}else if (titre51.visible==true){
    	    colonne1();
    	}
    }
    function powerClick3 (event:MouseEvent) :void{
    	if (titre11.visible==true){
    		colonne3();		
    	}else if(titre21.visible==true){
    		colonne4();
    	}else if (titre31.visible==true){
    		colonne5();
    	}else if (titre41.visible==true){
    		colonne1();
    	}else if (titre51.visible==true){
    	    colonne2();
    	}
    }
    function powerClick4 (event:MouseEvent) :void{
    	if (titre11.visible==true){
    		colonne4();		
    	}else if(titre21.visible==true){
    		colonne5();
    	}else if (titre31.visible==true){
    		colonne1();
    	}else if (titre41.visible==true){
    		colonne2();
    	}else if (titre51.visible==true){
    	    colonne3();
    	}
    }
    function powerClick5 (event:MouseEvent) :void{
    if (titre11.visible==true){
    		colonne5();		
    	}else if(titre21.visible==true){
    		colonne1();
    	}else if (titre31.visible==true){
    		colonne2();
    	}else if (titre41.visible==true){
    		colonne3();
    	}else if (titre51.visible==true){
    	    colonne4();
    	}
    }

Discussions similaires

  1. Application visible que dans la page de test
    Par IsraGab dans le forum Silverlight
    Réponses: 3
    Dernier message: 08/05/2011, 12h22
  2. Fenêtre visible au démarrage !?
    Par Lung dans le forum Langage
    Réponses: 6
    Dernier message: 28/11/2002, 14h55
  3. determiner les ligne visible ds un RichEdit
    Par hhfr dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/09/2002, 18h15
  4. Form principale non visible au demarrage!!!!
    Par toufou dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/07/2002, 21h49
  5. test collisions
    Par tatakinawa dans le forum OpenGL
    Réponses: 5
    Dernier message: 08/06/2002, 06h03

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