2011-01-27 126 views
0

我正在寻找在横幅广告的整个持续时间内显示随机加载选择的三幅图像。 基本上,这些图像是在发布后显示的健康提示 - 当它播放后,它会飞走,揭示下一个提示。我还需要确保图像不会重复。 我主要是一个时间线的家伙,但我一直在学习AS,并没有问题让一个图像随机显示 - 但三个单独的没有重复的是让我离开。 我的想法是要么 a)把所有的图像放在单独的框架内3 MC,并在加载时以某种方式显示在该剪辑内的随机帧,确保不重复 或 b)将图像加载到3个单独的MC通过和XML文档,并随机选择一个。 任何想法或正确的方向点将不胜感激。 编辑 - 我应该澄清... 图像一次只出现一个 - 所以我认为每个MC只会包含选定的3个随机图像之一。那么是否有可能将随机图像加载到MC中,然后复制该MC而没有图像重复的机会?Flash - 随机图像显示,不重复

回答

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)) 
+0

啊,我看到输出完美的工作 - 你怎么把它应用到包含图像的MC?即,我在顶层的空帧中有AS - 底层包含一个带有图像的3帧MC。 – collin 2011-01-27 18:22:43