你知道导致这个错误的原因吗? TypeError:错误#1006:setChildIndex不是函数。 在Function /()[iVision_Game_fla.MainTimeline :: frame83:151]
这是我认为错误发生的地方......
function dragObject(indx1:int,indx2:int):Function {
return function(event:MouseEvent){
var item:MovieClip=MovieClip(event.currentTarget);
item.startDrag();
var topPos:uint=this.numChildren-1;
var itemSound:Sound = new Sound();
itemSound.load(new URLRequest("sounds/"+dirArray[indx1])+indx2+".mp3"));
if(!activeSound)
{
itemSound.play();
activeSound=true;
}
this.setChildIndex(item, topPos);
}
}
//在另一个函数上调用它
var functionOnDrag:Function = dragObject(indexc[count-1],index[count2]);
pb[i].addEventListener(MouseEvent.MOUSE_DOWN,functionOnDrag);
答案 0 :(得分:0)
我认为范围是这里的问题。如果项目的父项未更改,则可以使用item.parent.setChildIndex(item,topPos)
此外,在此之前,topPos:uint = item.parent.numChildren -1;
更新
要进一步调试,请在setChildIndex(151)的行上放置一个断点。 (添加一个断点:点击行号的左侧。它会添加一个小红圈。当代码在调试模式下点击时,它将停止。)
然后转到Debug - >调试电影 - >调试
当它停止时,打开调试面板:Window-> Debug Panels-> Variables,Window-> Debug Panels-> Callstack
在变量面板中,您应该看到范围中的所有当前变量。您正在寻找的是调用setChildIndex的对象的问题。在这种情况下,项目的父项。你可以深入了解它是什么。它应该是DisplayObjectContainer(MovieClip,Sprite等...)。项目来自事件,所以我也会检查event.currentTarget。您基本上是在确认在该断点处,item存在,它有一个父节点,它的父节点是DisplayObjectController。如果其中一个不正确,您可以从这里向后追踪为什么不是这种情况。
答案 1 :(得分:0)
TypeError:错误#1006:setChildIndex不是函数
您已经创建了匿名函数,如果您想要捕获this
,您可以进行这样的构建:
var selfRef:MyClass = this;
现在您的MouseEvent处理程序将显示:
function dragObject(indx1:int, indx2:int):Function {
return function (event:MouseEvent) {
//Your code
selfRef.setChildIndex(item, topPos);
}
}