Actionscript 3 - 更改索引时无法识别的阶段已添加 child
Actionscript 3 - Stage not recognising added child when changing index
首先,为了清楚起见,我才刚接触 ActionScript 3 6 个月。
在一个小游戏的当前项目中,玩家精灵的位图每帧都更改为所需的任何图像。在同一过程中,此精灵(作为舞台的 child)索引会更新,以确保它保持在所有其他图像的顶部。
(此代码精炼到此过程的基本必需品以避免混淆)
function playerFrame (newBitmap):void {
player.removeChild(prevBitmap);
player.addChild(newBitmap);
prevBitmap = newBitmap;
stage.setChildIndex(player, stage.numChildren - 1); //<-- targeted line
}
function tick (event:Event):void {
playerFrame(bitmap) //<-- whatever the player bitmap needs to be changed to
}
stage.addEventListener(Event.ENTER_FRAME, tick);
我已经离开这个项目一个星期了,当我回来时 - 在没有对程序进行任何更改之后 - 这个目标行出现了一个神秘的错误:
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
(作为玩家而不是舞台的 child)
谜团不是错误本身,而是错误的原因:在程序中,player
精灵作为 child 添加到舞台上,并且再也没有被碰过。
在找不到此错误的解决方案(无论是在代码中还是在线)后,我将程序恢复到之前的保存状态,证明不会产生同样的问题。不过后来加了tracer(trace()
函数)调试后,又出现了。貌似是一个没有常见原因的常见错误。
奇怪的问题,我知道,但真的很烦我。有没有人遇到过这种情况?
您应该改为这样做:player.bitmap.bitmapData=newBitmapData;
并放弃 addChild
的所有洗牌。 Bitmap
对象是显示 BitmapData
的包装器,因此可以定向显示任何位图数据。并且由于显示列表没有以这种方式更改,因此您无需对其进行丝毫重新排序(至少响应这组操作)。
首先,为了清楚起见,我才刚接触 ActionScript 3 6 个月。
在一个小游戏的当前项目中,玩家精灵的位图每帧都更改为所需的任何图像。在同一过程中,此精灵(作为舞台的 child)索引会更新,以确保它保持在所有其他图像的顶部。
(此代码精炼到此过程的基本必需品以避免混淆)
function playerFrame (newBitmap):void {
player.removeChild(prevBitmap);
player.addChild(newBitmap);
prevBitmap = newBitmap;
stage.setChildIndex(player, stage.numChildren - 1); //<-- targeted line
}
function tick (event:Event):void {
playerFrame(bitmap) //<-- whatever the player bitmap needs to be changed to
}
stage.addEventListener(Event.ENTER_FRAME, tick);
我已经离开这个项目一个星期了,当我回来时 - 在没有对程序进行任何更改之后 - 这个目标行出现了一个神秘的错误:
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
(作为玩家而不是舞台的 child)
谜团不是错误本身,而是错误的原因:在程序中,player
精灵作为 child 添加到舞台上,并且再也没有被碰过。
在找不到此错误的解决方案(无论是在代码中还是在线)后,我将程序恢复到之前的保存状态,证明不会产生同样的问题。不过后来加了tracer(trace()
函数)调试后,又出现了。貌似是一个没有常见原因的常见错误。
奇怪的问题,我知道,但真的很烦我。有没有人遇到过这种情况?
您应该改为这样做:player.bitmap.bitmapData=newBitmapData;
并放弃 addChild
的所有洗牌。 Bitmap
对象是显示 BitmapData
的包装器,因此可以定向显示任何位图数据。并且由于显示列表没有以这种方式更改,因此您无需对其进行丝毫重新排序(至少响应这组操作)。