我在使用swapDepths函数时遇到了一些麻烦。我正在编写一个拖放系统。我创建了一个具有最高深度的空MovieClip(depthSwaper),每次拖动我的一个对象时,我都会用depthSwaper交换它的深度,所以我的对象总是在最高深度。
问题,我收到此错误:“错误#1006:swapDepths不是函数”。
这是我的剧本:
public function monDown(e:MouseEvent) {
e.currentTarget.icone.swapDepths(depthSwaper);
e.currentTarget.startDrag();
} //monDown
public function monUp(e:MouseEvent) {
e.currentTarget.icone.swapDepths(depthSwaper);
e.currentTarget.stopDrag();
if(e.currentTarget.hitTestObject(slotTete) && (e.currentTarget.type == "arme")) {
e.currentTarget.x = slotTete.x;
e.currentTarget.y = slotTete.y;
} else if(e.currentTarget.hitTestObject(slotTorse) && (e.currentTarget.type == "torse")) {
e.currentTarget.x = slotTorse.x;
e.currentTarget.y = slotTorse.y;
} else {
annulerDrag(e.currentTarget);
}
} //monUp
currentTarget.icone是我正在移动的MovieClip。我尝试使用swapdepth只有一个数字,如下所示:e.currentTarget.icone.swapDepths(10); 但我得到了同样的错误。
有没有人有想法?
感谢阅读!
答案 0 :(得分:2)
没有swapDepths功能是AS3。您可以使用swapChildren()
执行所需操作。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObjectContainer.html#swapChildren%28%29
基本上你在两个剪辑的容器上调用它,然后交换它们的深度:
myContainer.swapChildren(child1,child2);
或者,在上下文中(希望如此):
e.currentTarget.swapChildren(icone,depthSwaper);
答案 1 :(得分:1)
swapDepths是AS2,你需要使用AS3的一个新技巧
在这里解释清楚:http://www.as3dtk.com/?p=493