按钮点击计数器不递增

Button Click Counter not incrementing

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

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

你的代码中的问题是你每次都在创建和初始化你的计数器,所以确保你每次重播都会得到值 1

因此,为避免这种情况,您只需验证是否已经创建了 hitcount 变量,否则就创建它:

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

希望能帮到你。