2014-11-01 100 views
0

我有一個磚夾,當被一個球夾擊中時,它會轉到第2幀。此代碼是磚類中,這就是爲什麼它爲什麼被稱爲「這個」:碰撞事件兩次as3

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

我的問題是,當它被擊中,第二次怎麼能轉到第3幀?我需要添加哪些代碼?

回答

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) 
    } 
} 

我希望更清楚。

+0

謝謝!我不太瞭解布爾人。你能給我一個例子嗎? – Johnnien 2014-11-02 15:01:29

+0

我試過了:if(this.hitTestObject(_root.mcBall))&& \t \t if(this.currentFrame == 2); { this.gotoAndStop(3);它不會工作,你知道有沒有像我可以使用的東西? – Johnnien 2014-11-02 15:05:24

+0

你的代碼應該是這樣的:'if(this.hitTestObject(_root.mcBall)&& this.currentFrame == 2){this.gotoAndStop(3); ''。請注意,這只是對您的代碼的更正。 – akmozo 2014-11-02 17:32:42

1

嘗試一個「乾淨」的方式,像這樣:

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

這使得夾到其下一幀如果當前幀不3.

+0

可能更好一些,謝謝!但我需要再次打到第3幀,而不是在第2幀時自動打印。 – Johnnien 2014-11-02 14:55:54

+0

@Johnnien第2次打到第2幀時,第2次打開第3幀......如果你不明白你至少可以試用它的代碼......我不能用這段代碼破壞你的系統,我可以嗎? ;)無論如何,它基本上是在每次擊中它時都會說「如果幀不是3,就去下一幀」。 – Cilan 2014-11-03 13:52:59

+0

對不起!我不想聽起來很有意思.....在我寫信給你之前,我確實嘗試了它,然後直接進入第3幀。無論如何。謝謝! – Johnnien 2014-11-03 22:41:10