切换问题

时间:2010-12-09 06:40:21

标签: actionscript-3 string switch-statement

我的问题是我不能(不知道)让我的开关工作。在我的第一个案例中,我输入"hache",但它没有通过低谷。奇怪的是,在我的trace(traget); [对象hache]或[对象extincteur](取决于我点击的mc)出来了......为什么它不会通过第一种情况?我没有线索。我试着删除“”。

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,target是我点击a.k.a.对象extincteur或对象hache的movieClip。

1 个答案:

答案 0 :(得分:1)

问题是objetClique不是字符串。您可能想要执行switch (objetClique.name)

之类的操作

如果你想了解发生了什么,请用这种方式重写代码:

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

我希望这更清楚地说明了为什么开关不起作用。 objetClique不能等于字符串"hache",因为它不是字符串。从它的外观objetClique引用DisplayObject,它们有一个名为name的属性,这是您想要比较的内容:

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

代码可以工作,它等同于一个看起来像这样的开关:

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