2012-11-07 37 views
1

所以在我的閃光燈,我有部分,你有選擇哪種方式選擇,你選擇的道路應該有隨機化在他們,我試圖建立它,使當用戶選擇一條道路時,他被隨機拋入三個標記幀中的一個,我甚至考慮過將一些隨機化部分添加到發生最少機會的道路上。actionscript 3,gotoandstop隨機框出來的下一個3

stop(); 

road1a.addEventListener(MouseEvent.CLICK, firstroadA); 

function firstroadA(e:MouseEvent):void{ 
    if(this.currentFrame == 9){ 
     var randomNumber:Number = Math.floor(Math.random()*3) 
     if (randomNumer == 0){ 
      gotoAndStop(10); 
     } 
     if (randomNumber == 1){ 
      gotoAndStop(11); 
     } 
     if (randomNumber == 2){ 
      gotoAndStop(12); 
     } 
    } 
    else{ 
     nextFrame(); 
    } 

} 
這個測試

,我試圖做到這一點,這樣的user's選擇發生在第9幀,而當他選擇點擊firstroadA他去一些隨機幀,10,11或12 ......所以,我希望我已經清楚了; 我的問題是簡而言之,如何隨機化gotoAndStop框架,以及如何添加一些較少機會被選爲gotoAndStop的罕見框架....謝謝!

回答

0

你可以隨心所欲地使用加權隨機數。看看這個代碼,但它確實是你想要的:

stop(); 

gotoAndStop(9); 

road1a.addEventListener(MouseEvent.CLICK, firstroadA); 

function firstroadA(e:MouseEvent):void 
{ 
    if(this.currentFrame == 9) 
    { 
     // These are the weight chance for each "road" 
     // I used 30%, 50%, and 10% arbitrarily 
     var choiceWeights:Array = [30, 50, 10]; 

     // frame choices 
     var roadFrames = [10, 11, 12]; 

     // get a weighted random 
     var r:int = makeChoiceWithWeight(choiceWeights); 

     //go to the selected frame 
     gotoAndStop(roadFrames[r]); 
    } 
    else 
    { 
     nextFrame(); 
    } 
} 

function makeChoiceWithWeight(choiceWeights:Array):int 
{ 
    var sumOfWeights:int = 0; 
    var numWeights:int = choiceWeights.length; 

    // add all weights 
    for(var i:Number = 0; i < numWeights; i++) sumOfWeights += choiceWeights[i]; 

    // pick a random number greater than zero and less than the total of weights 
    var rnd:Number = Math.floor(Math.random()*sumOfWeights); 

    //keep reducing the random number until less than a choices weight 
    for(var ii:Number = 0; ii < numWeights; ii++) 
    { 
     if(rnd < choiceWeights[ii]) return ii; 

     rnd -= choiceWeights[ii]; 
    } 

    // should never reach this point 
    return 0; 
} 

爲了更深入地瞭解加權隨機數檢查這個蘇答案: Weighted random numbers