按钮单击计数器不递增

时间:2015-07-20 15:41:33

标签: actionscript-3 flash

我在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);

2 个答案:

答案 0 :(得分:0)

如果您的Flash影片超过一帧,那么您在舞台上放置动作的图层也需要延长该帧数。否则代码在第1帧之后不再存在。此外,当您回到第1帧时,每次都会附加另一个鼠标事件。使用yourButton.removeEventListener启动代码,以确保只向其附加一个事件。每次电影结束并返回第1帧时,您的计数器将重置为1.

答案 1 :(得分: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);

希望可以提供帮助。

相关问题