碰撞事件两次as3

时间:2014-11-01 13:47:59

标签: actionscript-3 object collision hit

我有一个砖夹,当被球夹击中时会进入第2帧。这段代码在brick类中,这就是为什么它被称为"这":

if (this.hitTestObject(_root.mcBall)){
    _root.ballYSpeed *= -1;
    this.gotoAndStop(2);
}

我的问题是它第二次被击中时它怎么能进入第3帧?我需要添加什么代码?

2 个答案:

答案 0 :(得分:1)

尝试一种“干净”的方法,如下所示:

if (this.hitTestObject(_root.mcBall)){
    _root.ballYSpeed *= -1;
    if (this.currentFrame !== 3) {
        this.nextFrame();
    }
}

如果当前帧不是3,则剪辑将转到下一帧。

答案 1 :(得分:0)

您可以验证砖块的当前边框,然后验证它的第2帧是否转到第3帧,如下所示:

if (this.currentFrame === 2){     
    this.gotoAndStop(3)
}

您还可以使用boolean来表明您的砖块是否已被击中。如果是true,请转到第3帧。

修改

AS代码:

- 使用布尔值:

...

var hit:Boolean = false

...

if (this.hitTestObject(_root.mcBall)){
    _root.ballYSpeed *= -1
    if(!hit){        // this is the 1st time so set hit to true and go to frame 2
        hit = true
        this.gotoAndStop(2)
    } else {         // this is the 2nd time so go to frame 3
        this.gotoAndStop(3)
    }
}

- 使用currentFrame:

if (this.hitTestObject(_root.mcBall)){  
    _root.ballYSpeed *= -1  
    if (this.currentFrame == 1){    // we are in the 1st frame so go to frame 2 
        this.gotoAndStop(2)
    } else {                        // we are certainly not in the 1st frame so go to frame 3
        this.gotoAndStop(3)
    }
}

我希望更清楚。