如何统计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
相关产品推荐
相关产品推荐

