Actionscript 3 Actionscript 3-更改索引时无法识别添加的子级

Actionscript 3 Actionscript 3-更改索引时无法识别添加的子级,actionscript-3,Actionscript 3,首先,为了清楚起见,我对ActionScript3是6个月的新手 在一个小游戏的当前项目下,玩家的精灵位图每一帧都会更改为所需的任何图像。在同一过程中,此精灵(作为舞台的子级)索引将更新,以确保它保持在其他所有图像的顶部 (为了避免混淆,本规范针对该过程的基本需要进行了细化) 函数playerFrame(newBitmap):无效{ player.removeChild(预览位图); player.addChild(newBitmap); prevBitmap=newBitmap; stage.

首先,为了清楚起见,我对ActionScript3是6个月的新手

在一个小游戏的当前项目下,玩家的精灵位图每一帧都会更改为所需的任何图像。在同一过程中,此精灵(作为舞台的子级)索引将更新,以确保它保持在其他所有图像的顶部

(为了避免混淆,本规范针对该过程的基本需要进行了细化)

函数playerFrame(newBitmap):无效{
player.removeChild(预览位图);
player.addChild(newBitmap);
prevBitmap=newBitmap;

stage.setChildIndex(玩家,stage.numChildren-1);//您应该这样做:
player.bitmap.bitmapData=newBitmapData;
并删除
addChild
的所有乱序。
bitmap
对象是用于显示
bitmapData
的包装器,因此可以定向显示任何bitmapData。而且,由于显示列表不以这种方式更改,因此您不需要稍微重新排序(至少是对这组操作的响应)。

即使这个错误是神奇的,在问题行之前的简单if(player.parent)将修复它。上面尝试过(感谢,@Organi)并且有效地绕过了错误,只出现了另一个类似性质的错误。尝试加载上一次保存的副本时,它声称文件已损坏。最后再次加载副本时,没有出现任何错误。我只是得出结论,这是由于文件问题。事实上,可能是这样。我见过稳步降级FLA source Aff的情况以不可预测的方式执行编译后的SWF。如果FLA中有大量不同的内容(包括库和时间线),则更可能出现此错误这经历了大量的保存。如果是这样的话,你需要创建一个新的FLA并将其复制到那里,你可能会得到一个未损坏的文件。将6个月的代码保存到一个txt文件中进行备份,在我所有的FLA文件备份也损坏后,这很有用。我创建了一个新的文件,并复制了代码,并且从那里成功地工作。谢谢
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);