actionscript 开关问题未执行第一种情况

问题描述 投票:0回答:1

我的问题是我不能(不知道)让工作成为我的开关。在我的第一个例子中,我输入了

"hache"
,但它没有通过。奇怪的是,在我的
trace(traget);
[Object hache]或[Object 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");
        }
        
    }
    
}

顺便说一句,目标是我点击的电影剪辑,又名“Object extincteur”或“Object hache”。

actionscript-3 string switch-statement
1个回答
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;
 }
© www.soinside.com 2019 - 2024. All rights reserved.