Actionscript 3 在AS3中使用addChild和hitTest时出现奇怪的问题
在动作脚本3中添加孩子时,我遇到了几个问题。我目前正在制作一个太空入侵者游戏,我正在编写将小行星添加到舞台上的功能 我的第一个问题是,每次我尝试添加一个新的小行星时,都会添加以前的所有小行星 我的第二个问题是当我添加HitteProject函数时。它抛出一个错误,当宇宙飞船撞击小行星时,它什么也不做 以下是我收到的hitTestObject错误: TypeError:错误#1034:类型强制失败:无法转换“ast#U 0” 到flash.display.DisplayObject。在 佛罗里达州:MainTimeline/addAstroid()位于 flash.utils::Timer/_timerDispatch()在flash.utils::Timer/tick()处 这是我的密码。我使用计时器,因此每5000ms添加一颗小行星:Actionscript 3 在AS3中使用addChild和hitTest时出现奇怪的问题,actionscript-3,flash,object,hittest,addchild,Actionscript 3,Flash,Object,Hittest,Addchild,在动作脚本3中添加孩子时,我遇到了几个问题。我目前正在制作一个太空入侵者游戏,我正在编写将小行星添加到舞台上的功能 我的第一个问题是,每次我尝试添加一个新的小行星时,都会添加以前的所有小行星 我的第二个问题是当我添加HitteProject函数时。它抛出一个错误,当宇宙飞船撞击小行星时,它什么也不做 以下是我收到的hitTestObject错误: TypeError:错误#1034:类型强制失败:无法转换“ast#U 0” 到flash.display.DisplayObject。在 佛罗里达州
// Add astoid
var astTimer:Timer = new Timer(5000);
astTimer.addEventListener(TimerEvent.TIMER, addAstroid);
var i:Number = 0;
function addAstroid (e:TimerEvent):void{
var ast = new astroid();
ast.name = "ast_"+i;
ast.y = Math.random()*stage.stageHeight;
ast.x = 565;
addChild(ast);
trace(i);
if(ship.hitTestObject(ast.name)){
gotoAndStop("2");
}
i = i+1;
}
astTimer.start();
一些建议、建议和答案将不胜感激:)
更新
我对循环错误进行了排序。旧的小行星不再出现了!:D
非常感谢,
彼得·斯图尔特(Peter Stuart)对于您的第一个问题,它不会以增量的形式出现,而是始终为
0
分配名称时,递增i
:
ast.name = "ast_" + (i++).toString();
基本上,说i=i+1代码>
接下来,针对实例本身而不是标识进行命中测试:
ship.hitTestObject(ast)
不确定你的游戏是如何运作的,但看起来你真正想要的是两个处理程序:
- 偶尔添加一个新的小行星
- 测试碰撞的人
当前,您的addAsteroid()
函数会添加一个新的小行星,并立即测试它在创建时是否与飞船碰撞。那颗小行星再也不会进行碰撞试验了。如果这类似于经典的小行星游戏,您可能希望将每个小行星推送到一个数组中,并为ENTER\u FRAME
添加一个事件侦听器,以测试每个小行星是否与船发生碰撞 ship.hitTestObject(ast.name)
不起作用,因为ast.name
是一个字符串,而不是一个DisplayObject
试试这个:
if(ship.hitTestObject(ast)){
gotoAndStop("2");
}
根据您刚才的编辑,我看到您添加了I=I+1大家好,Jason,是的,我在调试时删除了增量代码,我忘了添加它,但是这并没有什么不同。每个小行星对象都是一个电影剪辑,电影剪辑正在循环。我通过在运动tween的末尾添加“stop()”修正了这个问题。现在我的hitTestObject开始工作了?是的,你的回答对我来说很有意义!我将创建一个计时器,每500毫秒检查一次点击!谢谢:)运气不好,ship.hitTestObject(ast)返回false:(问题是关于强制错误,这解决了问题。如果它返回false,而你不知道为什么,这是另一个问题。打开一个新问题。我有:所以接受这个答案,它解决了强制错误。如果你不接受解决问题的答案,你认为有人会在下一个iss中帮助你的可能性有多大ue?--顺便说一句,这个新问题和这个答案解决的问题是一样的。不,但它不能解决整个问题。不要告诉我接受什么答案,这是我自己的决定。它确实解决了部分问题,1+,但脚本中仍然存在问题……我现在仍然认为hitTest是错误的,但我认为是错误的因为它是在添加hitTest时运行的,而不是以后。