闪光 - 随机图像显示,无重复

时间:2011-01-27 17:24:18

标签: flash image random

我希望在横幅广告的整个过程中显示三个图像,这些图像是在加载时随机选择的。 基本上,这些图像是显示在帖子上的健康提示 - 当它播放时,它会飞出来,显示下一个提示。我还需要确保图像不重复。 我主要是一个时间线的人,但我一直在学习AS并且没有任何问题让一个图像随机显示 - 但是三个单独的图像没有重复就是让我失望。 我的想法是要么 a)将所有图像放在3个MC内的单独帧上,并以某种方式在加载时在该剪辑内显示随机帧,确保不重复 要么 b)将图像加载到3个单独的MC和XML文档中,然后随机选择一个。 任何想法或点在正确的方向将非常感激。 编辑 - 我应该澄清...... 图像一次只出现一个 - 所以我认为每个MC只包含所选择的3个随机图像中的一个。那么是否可以将随机图像加载到MC中,然后在没有图像重复的情况下复制该MC?

1 个答案:

答案 0 :(得分:0)

嗯,按照你的想法这样做的一种方法是: 将图像放在一个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) )