当它击中舞台底部的球时,用if (bomb1.hitTestObject(ball)) {
试图使炸弹爆炸时爆炸。但是当炸弹击中其中一个球时没有发生任何事情。它适用于放置在舞台上而不是球上的其他物体。ball
是一个变量,用于在舞台底部随机散布的8个球。
import flash.events.Event;
bomb1.gotoAndStop(1);
var minLimit: int = 31;
var maxLimit: int = 42;
var range: int = maxLimit - minLimit;
var balls: Array = [],
ball: bomb30a;
for (var i: int = 0; i < 8; i++) {
ball = new bomb30a();
ball.x = 150 + i * (Math.ceil(Math.random() * range) + minLimit);
ball.y = 350;
balls.push(ball);
addChild(ball);
}
thisButton.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
function fl_MouseClickHandler(event: MouseEvent): void {
bomb1.gotoAndPlay(1);
this.addEventListener(Event.ENTER_FRAME, handleCollision);
}
function handleCollision(evt: Event): void {
if (bomb1.hitTestObject(ball)) {
this.removeEventListener(Event.ENTER_FRAME, handleCollision);
bomb1.stop();
bomb1.bomb2.gotoAndPlay(31);
}
}
stop();
答案 0 :(得分:0)
你正在制作8个bomb30a对象,但你继续将它们分配给同一个变量ball
。这意味着ball
将在您的循环后引用最后一个 。因此,当你执行hitTest时,它只检查你创建的最后一个球。您将需要循环遍历balls
数组,并分别在每个数据上尝试hitTest,如...
for ( var i:int = 0; i < balls.length; ++i )
{
if ( bomb1.hitTestObject( balls[i] ) )
{
...
}
}