【问题标题】:Flash - Random image display, no repeatFlash - 随机图像显示,不重复
【发布时间】:2011-01-27 17:24:17
【问题描述】:

我希望在横幅广告的整个持续时间内显示三张在加载时随机选择的图片。 基本上,这些图像是在贴子上显示的健康提示 - 当它播放时,贴子飞走,显示下一个提示。我还需要确保图像不会重复。 我主要是时间线专家,但我一直在学习 AS,并且可以毫无问题地随机显示一张图像 - 但是三个没有重复的独立图像让我失望。 我的想法是要么 a) 将所有图像放在 3 个 MC 内的单独帧中,并在加载时以某种方式在该剪辑中显示随机帧,确保不重复 或者 b) 将图像加载到 3 个单独的 MC 的 through 和 XML doc 中,并随机选择一个。 任何朝着正确方向的想法或观点将不胜感激。 编辑 - 我应该澄清...... 这些图像一次只出现一个 - 所以我认为每个 MC 只会包含选择的 3 个随机图像之一。那么是否可以将随机图像加载到 MC 中,然后复制该 MC 而没有图像重复的机会?

【问题讨论】:

    标签: flash image random


    【解决方案1】:

    嗯,按照您的想法执行此操作的一种方法是: 将图像放在一个 mc 中。 创建一个数组,其中包含与每个图像对应的帧号。 打乱该数组以获得随机顺序。 使用洗牌数组中的帧播放图像帧。

    要对数组进行洗牌,您可以使用以下内容:

    function shuffleArray(a:Array):Array {
        var copy:Array = a.concat()
        var length:int = copy.length;
        var result:Array = new Array(length);
        for(var i:int = 0; i<length; i++)
        {
        result[i] = copy.splice(int(Math.random() * (length - i)), 1)[0];
        }
        return result;
    }
    

    要使用该方法,只需:

    var imgFrames:Array = [1,2,3];
    trace( shuffleArray(imgFrames) )
    trace( shuffleArray(imgFrames) )
    trace( shuffleArray(imgFrames) )
    

    【讨论】:

    • 啊,我看到输出工作正常 - 你如何将它应用到包含图像的 MC?即,我将 AS 放在顶层的一个空框架中 - 底层包含一个带有图像的 3 帧 MC。
    • 这将取决于你的代码,如果你想循环图像或不。但是您从数组中提取当前索引,然后创建一个 mc.gotoAndPlay(index)
    • 对不起,如果这是一个愚蠢的问题......但是你如何拉索引? :) 非常感谢
    • 我明白了 - 将 xml 拆分为三个单独的文件,由各个 swfs 调用。那些瑞士法郎然后进入我的主要横幅。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多