You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计MovieClip(ballAnim)的播放循环次数?

统计MovieClip播放循环次数的解决方案

你的代码存在几个关键问题,导致计数始终为0,以下是具体修正方法:

问题分析

  • 变量未正确更新:loopCounter+1仅执行加法运算,但没有将结果赋值回变量,等于没有修改loopCounter的实际值,正确写法应为loopCounter += 1或loopCounter++。
  • 触发逻辑重复:ENTER_FRAME事件每帧都会触发,若ballAnim停在第20帧,会重复计数;而我们需要的是完成一次完整循环的计数,即从第1帧播放到第20帧后回到第1帧的时刻,才应该增加计数。
  • trace位置错误:原代码的trace(loopCounter)仅在初始化时执行一次,此时计数还未开始,所以输出0,需将trace放在计数逻辑内部,才能实时查看更新后的数值。

修正后的代码

import flash.events.Event;

var loopCounter:int = 0;
// 新增标志位,避免同一帧内重复计数
var hasCounted:Boolean = false;

ballAnim.addEventListener(Event.ENTER_FRAME, checkLoop);

function checkLoop(e:Event):void{
    // 检测是否到达第20帧且未计数过
    if(ballAnim.currentFrame == 20 && !hasCounted){
        loopCounter++;
        hasCounted = true;
        trace("已完成" + loopCounter + "次循环");
    }
    // 回到第1帧时重置标志位,允许下次计数
    else if(ballAnim.currentFrame == 1){
        hasCounted = false;
    }
}

额外说明

  • 这个需求不需要使用类,仅用时间轴代码就能实现。
  • 只要你的ballAnim是默认循环播放的MovieClip,上述逻辑就能准确统计每次完整循环的次数。

内容的提问来源于stack exchange,提问作者FlashNewBee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:25:31