我的问题是我不能(不知道)让工作成为我的开关。在我的第一个例子中,我输入了
"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”。
问题在于
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;
}