Actionscript 3 将此AS3转换为数组并使用它
如何将此基本函数方法转换为数组并轻松调用。我只是在比较对象是否变假,然后做些什么……但这似乎是一个非常简单的代码。有什么想法吗Actionscript 3 将此AS3转换为数组并使用它,actionscript-3,Actionscript 3,如何将此基本函数方法转换为数组并轻松调用。我只是在比较对象是否变假,然后做些什么……但这似乎是一个非常简单的代码。有什么想法吗 var b:Boolean = true; var i:Boolean = true; var t:Boolean = true; var a:Boolean = true; var m:Boolean = true; var ii:Boolean = true; v
var b:Boolean = true;
var i:Boolean = true;
var t:Boolean = true;
var a:Boolean = true;
var m:Boolean = true;
var ii:Boolean = true;
var n:Boolean = true;
var e:Boolean = true;
var s:Boolean = true;
level5_mc.let_b_mc.addEventListener(MouseEvent.CLICK, hitB);
level5_mc.let_i_mc.addEventListener(MouseEvent.CLICK, hitI);
level5_mc.let_t_mc.addEventListener(MouseEvent.CLICK, hitT);
level5_mc.let_a_mc.addEventListener(MouseEvent.CLICK, hitA);
level5_mc.let_m_mc.addEventListener(MouseEvent.CLICK, hitM);
level5_mc.let_ii_mc.addEventListener(MouseEvent.CLICK, hitII);
level5_mc.let_n_mc.addEventListener(MouseEvent.CLICK, hitN);
level5_mc.let_e_mc.addEventListener(MouseEvent.CLICK, hitE);
level5_mc.let_s_mc.addEventListener(MouseEvent.CLICK, hitS);
function hitB(event:MouseEvent){
b=false;
trace("good");
level5_mc.removeChild(level5_mc.let_b_mc);
}
function hitI(event:MouseEvent){
if (b==false){
i=false;
level5_mc.removeChild(level5_mc.let_i_mc);
}
else {
//decrease timer
i=true;
}
}
function hitT(event:MouseEvent){
if (b==false && i==false){
t=false;
level5_mc.removeChild(level5_mc.let_t_mc);
}
else {
//decrease timer
i=true;
}
}
等等。。。编辑如下
var b=level5_mc.let_b_mc;
var i=level5_mc.let_i_mc;
var t=level5_mc.let_b_mc;
var movieClips:Array = [b,i,t];
var movieClipFlags:Object = {
b:[],
i:[b],
t:[b,i]
};
for each(var mc:MovieClip in movieClips) {
mc.addEventListener(MouseEvent.CLICK,movieClipHit);
}
function movieClipHit(e:MouseEvent) {
var mc:MovieClip = e.target as MovieClip;
if(readyToRemove(mc))
level5_mc.removeChild(mc);
else
trace("Can't remove yet.");
}
function readyToRemove(mc:MovieClip):Boolean {
for each(var mc:MovieClip in movieClipFlags[mc]) {
//if it has parent, it isn't removed yet.
if(mc.parent)
return false;
}
return true;
}
下面的内容应该会给你一些想法。我还没有测试代码,您可能不需要根据需要进行一些调整
//put other movies clips in this array too.
var movieClips:Array = [level5_mc.let_b_mc,level5_mc.let_i_mc];
var movieClipFlags:Object = {
level5_mc.let_b_mc:[],
level5_mc.let_i_mc:[level5_mc.let_b_mc],
level5_mc.let_t_mc:[level5_mc.let_b_mc,level5_mc.let_i_mc]
//put other movie clips here too with the movie clips that need to be removed in the array
};
foreach(var mc:MovieClip in movieClips) {
mc.addEventListener(MouseEvent.CLICK,movieClipHit);
}
private function movieClipHit(e:MouseEvent) {
var mc:MovieClip = e.target as MovieClip;
if(readyToRemove(mc))
level5_mc.removeChild(mc);
else
trace("Can't remove yet.");
}
private function readyToRemove(mc:MovieClip):Boolean {
foreach(var mc:MovieClip in movieClipFlags[mc]) {
//if it has parent, it isn't removed yet.
if(mc.parent)
return false;
}
return true;
}
希望能有所帮助。我不断发现语法错误“在这些level5_-mc.let_-mc:[],level5_-mc.let_-mc:[level5_-mc.let_-mc],level5_-mc.let_-mc:[level5_-mc.let_-mc.let_-mc:[level5_-mc.let_-mc,level5_-mc.let_-mc],在对象部分。我喜欢你的方法,只是语法有问题,非常感谢,如果你能找到它,帮助我解决这些错误将是非常棒的。不管怎样,你的逻辑是值得的,感谢你删除了导致错误的代码,你仍然需要将你所有的movieclips放入该数组
movieclips
and进入movieClipFlags
。我修复了所有错误(见上文),我制作了movieclips变量,如var b=level5_mc.let_b_mc;并在数组和对象中使用了b等,但现在我得到了这个…ArgumentError:Error#2025:提供的DisplayObject必须是调用方的子对象。at flash.display::DisplayObjectContainer/removeChild()at MethodInfo-271()当您试图从不是movieclip父容器的容器中删除movieclip时,会发生这种情况,请确保您正在从正确的父容器中删除。当我跟踪数组movieClips时,我得到let_b_mc_50、let_i_mc_52、let_t_mc_54等等。添加的数字是多少。如果我将(mc)替换为(b)它对b有效,所以我的(mc)一定有问题。不管怎样,我想我会让它保持原样。这对我来说是难以置信的lol