2010-12-09 38 views
0

Mon problème est que je ne peux pas (je ne sais pas) faire fonctionner mon interrupteur. Ici, dans mon premier cas, je tape "hache", et ça ne passe pas au creux. Etrangement, dans mon trace(traget); [Object hache] ou [Object extincteur] (en fonction de ce que je clique sur mc) sort ... Pourquoi ne va-t-il pas dans le premier cas? Je n'ai aucune idée. J'ai essayé d'enlever le "".Problème avec le commutateur

package cem 
{ 
    import flash.display.MovieClip; 

    public class actionObjets{ 

     /*--inventaire--*/ 
     private static var inventaireHache:Boolean = false; 
     private static var inventaireExtincteur:Boolean = false; 

     private var objetClique:MovieClip; 

     public function actionObjets(target) { 
      this.objetClique = target; 
      switch(objetClique){ 
       case "hache": 
        inventaireHache = true; 
        ajouterInventaire(objetClique); 
        break; 
       case "extincteur": 
        inventaireExtincteur = true; 
        ajouterInventaire(objetClique); 
        break; 
      } 
      trace(target); 
     } 
     private function ajouterInventaire(objetEnlever):void{ 
      objetClique.parent.removeChild(objetClique); 
      trace(inventaireHache + " - Hache"); 
      trace(inventaireExtincteur + " - Extincteur"); 
     } 

    } 

} 

BTW, la cible est le movieClip que je clique sur l'objet extincteur a.k.a. ou objet Haché.

Répondre

1

Le problème est que objetClique n'est pas une chaîne. Vous voulez probablement faire quelque chose comme switch (objetClique.name).

Si vous voulez comprendre ce qui se passe, réécrire le code de cette façon:

if (objetClique == "hache") { 
    // ... 
} else if (objetClique == "extincteur") { 
    // ... 
} 

J'espère que cela illustre plus clairement pourquoi l'interrupteur ne fonctionne pas. objetClique n'a pas pu être égal à la chaîne "hache", car ce n'est pas une chaîne. Des regards de celui-ci objetClique fait référence à une DisplayObject et ils ont une propriété appelée name, qui est ce que vous voulez comparer:

if (objetClique.name == "hache") { 
    // ... 
} else if (objetClique.name == "extincteur") { 
    // ... 
} 

que le code fonctionnerait, et il est équivalent à un commutateur qui ressemble à ceci:

switch (objetClique.name) { 
    case "hache": 
    // ... 
    break; 
    case "extincteur": 
    // ... 
    break; 
} 
+0

Hummmm! C'est à peu près ce dont j'ai besoin. Maintenant, mon problème est: il suit instance7, instance8 etc ... Y at-il un moyen de nommer les instances avec des noms réels? – Elggetto

+0

nvm ... Je viens de faire quelques recherches. whatiwant.name = "nameiwant". Haha quel noob je suis! Merci beaucoup!! Vous êtes d'une grande aide! J'accepte ta réponse! hehe. – Elggetto

+0

Si c'est Flash, vous pouvez cliquer sur l'élément sur la scène et remplir le nom dans le champ de nom dans l'un des inspecteurs. Sinon, vous pouvez juste 'myDisplayObject.name =" helloworld "' partout où vous avez un objet d'affichage que vous voulez nommer. – Theo