我正在尝试设置一个名为“地图”的大电影剪辑中包含的每个电影剪辑的深度。为此,我创建了一个在事件 ENTER_FRAME 上运行的函数,即:
public function set_depth(map:MovieClip) {
var arr:Array = [];
for(var i=1;i<=map.numChildren;i++) {
arr.push({ "name" : map.getChildAt(i-1).name, "y" : map.getChildAt(i-1).y});
}
arr.sortOn("y", Array.NUMERIC);
for(var h=0;h<arr.length;h++) {
map.setChildIndex(map.getChildByName(arr[h].name), h);
}
}
该函数的基本作用是根据其 y 属性对 MovieClip 进行排序,并根据 MovieClips 的 ordererd 列表设置 MovieClip 索引(y 属性最终会自行更改,因此索引顺序也会更改)。问题是,当“set_depth”函数连续运行时,我似乎无法更改“地图”电影剪辑帧,例如,我想在每次按下 Shift 键时更改地图当前帧,如下所示:
public function whenKeyUp(e:KeyboardEvent) {
if(e.keyCode == 16) {
trace('Shift pressed');
map.gotoAndStop(2);
}
}
每次我按下 Shift 键都没有发生任何事情,即使调用了跟踪函数。但是,如果“set_depth”函数被注释/删除,则地图 MovieClip 将其帧更改为 2 没有任何问题。
那么,代码有什么问题吗?我可以以某种方式修复它,以便地图 MovieClip 可以在 set_depth 函数运行时更改其帧吗?或者有没有其他解决方案?提前致谢。原谅我的英语