actionscript-3 - Actionscript 3 - 更改索引时阶段不识别添加的孩子
问题描述
首先,为了清楚起见,我是 ActionScript 3 的 6 个月新手。
在一个小游戏的当前项目下,玩家精灵的位图每帧都会更改为任何需要的图像。在同样的过程中,这个精灵(作为舞台的一个孩子)的索引被更新,以确保它保持在所有其他图像的顶部。
(此代码已针对此过程的基本必需品进行了细化以避免混淆)
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.
(作为玩家不是舞台的孩子)
谜团不在于错误本身,而在于错误的原因:在程序中,player
精灵作为一个孩子被添加到舞台上,并且再也没有被触摸过。
在找不到此错误的解决方案(在代码中或在线)后,我将程序恢复到以前的保存,证明不会产生相同的问题。然而后来,在添加了一个跟踪器(trace()
函数)进行调试后,它又出现了。这似乎是一个没有常见原因的常见错误。
奇怪的问题,我知道,但真的困扰着我。有没有人经历过这样的事情?
解决方案
相反,您应该这样做:player.bitmap.bitmapData=newBitmapData;
并删除addChild
. Bitmap
对象是用于显示 的包装器,BitmapData
因此可以指示显示任何位图数据。而且由于显示列表没有以这种方式更改,因此您无需对其进行重新排序(至少响应这组操作)。
推荐阅读
- github - 如果 gitlab 管道中的条件为真,则运行依赖项作业
- buffer-overflow - 在不知道缓冲区大小和地址的情况下进行缓冲区溢出攻击
- android - 如何在 Kotlin Gradle dsl 中使用 Firebase BoM?
- svg - d3.js:将 SVG 地理路径转换为画布
- conv-neural-network - 将批量规范添加到非批量规范层
- python - 根据python中的特定属性重新排序树节点
- php - 不能在数组中使用 containsKey 方法
- php - 将字符串转换为多维数组以在php中计算日期
- c# - 在 .NET Core 控制台应用程序中为 EF Core DbContext 服务错误建立依赖注入
- c++ - 为什么不能 p = itv?(来自 C++ 的向量问题)