我在actionscript 3.0中遇到一些代码很难。我不知道如何随机化存储在儿童上的动画片段并且只挑选8个动画片段,其中存储了10个动画片段。我希望你能帮我解决这个问题。感谢
以下是代码:
//start stage function
this.mainmc.addEventListener (Event.ENTER_FRAME, setupStage1);
this.waitingCounter=0;
//set up current stage
function setupStage1 (e:Event) {
//wait for timeline
if (this.waitingCounter<2) {
this.waitingCounter++;
//not ready yet, do nothing
return;
}
//Start the timer
timer.start();
//hide hint
this.mainmc.hintmc.visible=false;
//hide star animation
this.mainmc.starAnimation.visible=false;
//listener for hint button
this.mainmc.hintbut.addEventListener (MouseEvent.CLICK, showHint1);
//create objects array
this.obArr=[];
//count the objects on stage
for (var n=0; n<this.mainmc.numChildren; n++) {
//get the children
var ob=this.mainmc.getChildAt(n);
//only take movie clips
if (ob is MovieClip) {
//only count the movie clips that have name declared
if (ob.myname!=null) {
//push to array
this.obArr.push (MovieClip(ob));
}
}
}
在上面的代码中,代码将存储舞台中存在的所有动画片段。它将它们存放在一个孩子身上。每10个动画片段都有一个变量名“myname”。
答案 0 :(得分:1)
如果您只是想对数组中的项目进行随机排序,请使用array.sort方法并在sort函数中,只需创建1到2之间的随机数。如果为1,则返回true,如果为2,则返回false 。这是一个actionscript 2片段以及一些教程的链接:
var a:Array = new Array(“a”, “b”, “c”, “d”, “e”);
function shuffle(a,b):Number {
var num : Number = Math.round(Math.random()*2)-1;
return num;
}
var b:Array = a.sort(shuffle);
trace(b);
http://mrsteel.wordpress.com/2007/05/26/random-array-in-as2-as3-example-using-sort/
这是一篇更长,更深入的教程:
http://active.tutsplus.com/tutorials/actionscript/quick-tip-how-to-randomly-shuffle-an-array-in-as3/