2015-07-20 143 views
0

我在Flash中有一個類似的動畫,底部有一個重放按鈕。一旦動畫完成,它不會循環。相反,如果您單擊重播,動畫會再次啓動。按鈕點擊計數器不增加

我想要一個文本框,它將顯示按鈕被按下的次數。

我現有的代碼正在播放動畫。它將跟蹤中的計數遞增到1(從0開始),但不會在文本框中設置。此外,如果我再次單擊該按鈕,跟蹤將再次顯示1 - 不會發生增量(1到2,2到3等)。

如果我註釋掉gotoAndPlay(1),增加的工作很好,並顯示在文本框中 - 但動畫不再播放。

我在做什麼錯?

import flash.events.MouseEvent; 

var hitcount:Number = 0; 
textCounter.text = String(hitcount); 

function incCounter(event:MouseEvent):void 
{ 
    hitcount++; 
    textCounter.text = String(hitcount); 
    trace(hitcount); 
    gotoAndPlay(1); 
} 

replay_btn.addEventListener(MouseEvent.CLICK, incCounter); 

回答

0

您的代碼中的問題是您每次創建和初始化計數器,因此確保您將獲得每次重播的值1

因此,爲了避免這種情況,你可以驗證,如果你已經創建了hitcount VAR否則創建:

if(!hitcount){ // hitcount is null, so create it 
    var hitcount:Number = 0; 
} 

作爲一個很好的做法,也可以在您的按鈕刪除MouseEvent.CLICK,如果你不」不需要它。所以,你得到這樣的事情:

if(!hitcount){ 
    var hitcount:Number = 0; 
} 
count.text = hitcount.toString(); 

function incCounter(event:MouseEvent):void 
{ 
    event.target.removeEventListener(MouseEvent.CLICK, incCounter); 
    hitcount++; 
    count.text = hitcount.toString(); 
    gotoAndPlay(1);  
} 
replay_btn.addEventListener(MouseEvent.CLICK, incCounter); 

希望能有所幫助。

0

如果您的Flash影片長於一幀,那麼您將動作放置在舞臺上的圖層也需要延長該幀的數量。否則,代碼不再出現在第1幀之後。同樣,當您回到第1幀時,您每次都會附加另一個鼠標事件。使用yourButton.removeEventListener開始您的代碼,以確保您只附加一個事件。並且每次電影結束並返回到第1幀時,您的計數器都將重置爲1.