我正在尝试创建一个益智游戏,到目前为止,移动棋子没有问题,但当我尝试在stopDrag后检查棋子位置时,我收到了一条错误消息:错误#1010:一个术语未定义,没有属性。
这是相关代码:full1是一个movieclip,它包含一张低阿尔法的拼图图片和拼图块,每个拼图块都有自己的实例名称。在本例中,tr是其中一个片段的实例名。
public function Move(even:MouseEvent)
{
even.target.startDrag();
}
public function stopMove(even:MouseEvent)
{
this.stopDrag();
checkPos(even.target.name);
}
public function checkPos(nameStr:String)
{
if(nameStr=="tr1")
{
if(this.full1.tr1.x>=460&&this.full1.tr1.x<=465.5&&this.full1.tr.y>=99&&this.full1.tr.y<=103)
{
this.full1.tr.x=460.2;
this.full1.tr.y=101.95;
}
}
}
如果有人看到我写的东西有任何问题,或者对如何处理有更好的想法,我将感谢你的帮助。谢谢
看起来应该是even.target.stopDrag()
而不是this.stopDrag()
(因为您开始拖动even.target
)。除非错误发生在stopDrag()之后,否则在这种情况下,它看起来没有足够的信息来回答。
附带说明,最好在checkPos()函数之外进行名称检查。例如:
this.stopDrag();
if(even.target.name == "tr1")
{
checkPos();
}
并从checkPos()中删除名称检查。
有一次,您使用"even.target.startDrag();"开始拖动。
但在另一个函数中,您可以使用"this.stopDrag();"来停止拖动。
您应该始终使用"this"或始终使用"even.target"。这可能是导致错误的原因。
如果能确切地知道碰撞发生在哪一行,那也很好。