2015-07-20 140 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.