我在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 :(得分: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);
希望可以提供帮助。