Javascript 操作脚本3-ArgumentError:错误#2025:提供的DisplayObject必须是调用方的子对象
我将在下面的教程中学习《动作脚本3》 我正在编写第2部分的编码投射物我不知道为什么每次按play键时都会出错 “ArgumentError:Error#2025:提供的DisplayObject必须是调用者的子对象。” 这是我在按下空格键时试图通过的精确代码,除了idk如何修复参数错误外,还有更多的代码Javascript 操作脚本3-ArgumentError:错误#2025:提供的DisplayObject必须是调用方的子对象,javascript,actionscript-3,flash,actionscript,flash-cs6,Javascript,Actionscript 3,Flash,Actionscript,Flash Cs6,我将在下面的教程中学习《动作脚本3》 我正在编写第2部分的编码投射物我不知道为什么每次按play键时都会出错 “ArgumentError:Error#2025:提供的DisplayObject必须是调用者的子对象。” 这是我在按下空格键时试图通过的精确代码,除了idk如何修复参数错误外,还有更多的代码 函数addBullet(startX,startY):无效{ } 函数moveBullet():void{ //循环遍历项目符号的所有实例 //从“0”循环到“项目符号数” 对于(变量i:in
函数addBullet(startX,startY):无效{ } 函数moveBullet():void{
//循环遍历项目符号的所有实例
//从“0”循环到“项目符号数”
对于(变量i:int=0;istage.stageWidth){
//把子弹从舞台上拿下来
阶段。移除儿童(子弹[i]);
//从阵列中取出子弹
子弹(i);
}
}
}
有人能给我一些提示来改变什么吗?这个错误意味着当这行运行时:
stage.removeChild(bullets_arr[i]);
bullets\u arr[i]
引用的项目实际上不在舞台上。可能是因为它已经从舞台上移除了
虽然这可能不是导致错误的确切原因,但这里的一个大问题是从当前迭代的数组中删除项
当您这样做时:bullets\u arr.removeAt(i)代码>,您正在更改项目符号\u arr
数组的大小
在第一次迭代中,i
是0
。第一个项目符号是项目符号\u arr[0]
,第二个项目符号是项目符号\u arr[1]
第三个项目符号是项目符号\u arr[2]
等。如果在第一个循环中,您最终从数组中删除了项目,这意味着索引已经移动,因此现在您的第二个项目符号是项目符号\u arr[0]
,但是在下一个循环中,i
增加到1
,因此现在您实际上跳过了第二个项目符号并正在检查第三个项目,在删除第一个项目符号后,它现在位于索引1
在moveBullet
函数中,更改循环,使其向后迭代,这样,如果删除某个项,它不会移动尚未迭代的索引
for (var i: int = bullets_arr.length - 1; i >= 0; i--) {
你的问题解决了吗?
stage.removeChild(bullets_arr[i]);
for (var i: int = bullets_arr.length - 1; i >= 0; i--) {