在没有重复的情况下,在AS3中随机化帧顺序的最简单方法是什么?

时间:2011-10-03 11:28:53

标签: flash actionscript-3 random

我在flash项目中有一个场景,我想在运行时随机化帧的顺序。我希望每个帧只显示一次。我希望每个演示文稿的持续时间保持不变。

我一直在玩David Stiller的几条建议:

它们有点过时(Void而不是voidthis._totalframes - 1而不是MovieClip.totalFrames),但校长看似合理。

尽管如此,这种方法似乎还不够理想。大卫的例子对于少量的帧序列非常有效。但我有大约100个单独的帧。

这样做的最佳方式是什么?

我的愿望清单:

  1. 无需单独标记每个框架
  2. 理想情况下,无需在每个帧上重复代码
  3. 轻松更改每个帧格式的持续时间
  4. 我没有Flash经验,所以我要求一些显然不可能的事情,但我有兴趣看看有关如何最好地继续的建议。

1 个答案:

答案 0 :(得分:1)

如果不加考虑,我会做这样的事情:

(未经测试)

//On frame 1 on a clear layer present on all frames. First frame should probably be empty

var frames:Array = [];
for(var i:Number = 1; i<this.totalFrames, i++) {
  frames.push(i+1);
}
this.addEventListener(Event.ENTER_FRAME, frameFunc);
function frameFunc(e:Event) {
  var frameNum:Number = Math.floor(Math.random()*frames.length);
  var frame:Number = frames[frameNum];
  frames[frameNum] = frames.pop(); //You could also use splice.
  gotoAndStop(frame);
}

stop();