我有一個磚夾,當被一個球夾擊中時,它會轉到第2幀。此代碼是磚類中,這就是爲什麼它爲什麼被稱爲「這個」:碰撞事件兩次as3
if (this.hitTestObject(_root.mcBall)){
_root.ballYSpeed *= -1;
this.gotoAndStop(2);
}
我的問題是,當它被擊中,第二次怎麼能轉到第3幀?我需要添加哪些代碼?
我有一個磚夾,當被一個球夾擊中時,它會轉到第2幀。此代碼是磚類中,這就是爲什麼它爲什麼被稱爲「這個」:碰撞事件兩次as3
if (this.hitTestObject(_root.mcBall)){
_root.ballYSpeed *= -1;
this.gotoAndStop(2);
}
我的問題是,當它被擊中,第二次怎麼能轉到第3幀?我需要添加哪些代碼?
可以驗證磚的當前幀,然後,如果它是幀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)
}
}
我希望更清楚。
嘗試一個「乾淨」的方式,像這樣:
if (this.hitTestObject(_root.mcBall)){
_root.ballYSpeed *= -1;
if (this.currentFrame !== 3) {
this.nextFrame();
}
}
這使得夾到其下一幀如果當前幀不3.
可能更好一些,謝謝!但我需要再次打到第3幀,而不是在第2幀時自動打印。 – Johnnien 2014-11-02 14:55:54
@Johnnien第2次打到第2幀時,第2次打開第3幀......如果你不明白你至少可以試用它的代碼......我不能用這段代碼破壞你的系統,我可以嗎? ;)無論如何,它基本上是在每次擊中它時都會說「如果幀不是3,就去下一幀」。 – Cilan 2014-11-03 13:52:59
對不起!我不想聽起來很有意思.....在我寫信給你之前,我確實嘗試了它,然後直接進入第3幀。無論如何。謝謝! – Johnnien 2014-11-03 22:41:10
謝謝!我不太瞭解布爾人。你能給我一個例子嗎? – Johnnien 2014-11-02 15:01:29
我試過了:if(this.hitTestObject(_root.mcBall))&& \t \t if(this.currentFrame == 2); { this.gotoAndStop(3);它不會工作,你知道有沒有像我可以使用的東西? – Johnnien 2014-11-02 15:05:24
你的代碼應該是這樣的:'if(this.hitTestObject(_root.mcBall)&& this.currentFrame == 2){this.gotoAndStop(3); ''。請注意,這只是對您的代碼的更正。 – akmozo 2014-11-02 17:32:42