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

AS3实现无重复随机跳转帧,遍历全部后停在第5帧求助

解决AS3随机遍历所有帧不重复、遍历完成后停在第5帧的问题

原代码问题分析

原代码通过++count1 % frames.length实现循环跳转,每次序列回到起点时重新排序数组,导致帧会被重复访问;同时没有终止逻辑,会持续重复跳转,无法满足“遍历完所有帧后停止”的需求。

修改后的代码

var frames:Array = [];
var currentIndex:int = 0;

function start():void
{
    // 生成包含所有帧号的数组
    for (var i:int = 0, total:int = totalFrames; i < total; i++)
    {
        frames.push(i + 1);
    }
    // 对数组进行一次随机排序,生成不重复的遍历序列
    frames.sort(randomSort);
    // 开始遍历
    nextFrame();
}

function nextFrame():void
{
    if (currentIndex < frames.length)
    {
        // 跳转到当前序列的帧
        gotoAndStop(frames[currentIndex]);
        currentIndex++;
        // 如需自动连续跳转,取消下方注释并调整间隔(单位:毫秒)
        // setTimeout(nextFrame, 1000);
    }
    else
    {
        // 所有帧遍历完成,跳转到第5帧并停止
        gotoAndStop(5);
    }
}

function randomSort(a:*, b:*):Number
{
    return Math.random() > 0.5 ? 1 : -1;
}

start();

代码说明

  • 随机序列生成:初始化时对所有帧号数组做一次随机排序,确保遍历顺序随机且全程不重复
  • 遍历控制:通过currentIndex跟踪当前遍历位置,每访问一个帧就递增索引,直到覆盖所有帧
  • 终止逻辑:当currentIndex等于数组长度时,判定所有帧已遍历完成,直接跳转到第5帧并停止
  • 手动触发适配:如果需要通过按钮等交互触发每一次跳转,可将nextFrame()绑定到对应交互事件,去掉自动跳转的setTimeout即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:52:10