我在flash项目中有一个场景,我想在运行时随机化帧的顺序。我希望每个帧只显示一次。我希望每个演示文稿的持续时间保持不变。
我一直在玩David Stiller的几条建议:
它们有点过时(Void
而不是void
,this._totalframes - 1
而不是MovieClip.totalFrames
),但校长看似合理。
尽管如此,这种方法似乎还不够理想。大卫的例子对于少量的帧序列非常有效。但我有大约100个单独的帧。
这样做的最佳方式是什么?
我的愿望清单:
我没有Flash经验,所以我要求一些显然不可能的事情,但我有兴趣看看有关如何最好地继续的建议。
答案 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();