2011-09-02 56 views
1

我有以下幾點:幫助比例和頻率

package { 
    import flash.display.MovieClip; 
    public class Ratio extends MovieClip { 
    private var counter:Number; 
    private var frequency:Number; 
    private var ratio:String; 
    private var max:Number; 

    public function Ratio() { 
     ratio ="2/8"; 
     var arr = ratio.split("/"); 

     max = arr[1]; 
     frequency = arr[0]; 
     counter = 0; 
     addEventListener(Event.ENTER_FRAME, loop, false, 0, true); 
    } 

     private function loop(e:Event):void { 
      trace(counter + ": " + (counter < frequency)); 
      counter++; 

      if (counter == max) { 
       counter = 0; 
      } 
     } 

     public function destroy():void { 
      removeEventListener(Event.ENTER_FRAME, loop); 
     } 
    } 
} 

這個輸出是這樣的:

0: true 
1: true 
2: false 
3: false 
0: true 
1: true 
2: false 
3: false 

但我實際上喜歡的是:

0: true 
1: false 
2: true 
3: false 
0: true 
1: false 
2: true 
3: false 

即更均勻分散(交替)...有沒有辦法做到這一點?

回答

0

我想我可以在這裏忽略了一點,但這應該得到所需要的輸出:

private function loop(e:Event):void { 
    trace(counter + ": " + !Boolean(counter % 2)); 
    counter++; 
    if (counter == max) counter = 0; 
} 

更新:

雖然它變得有點笨拙,下面創建一個交替分散,這是完全可能的。其他一切都以一個連續的順序運行。儘管我不是數學家,但我覺得可以做得更好。例如,這將把3/9的1,1,1,0,0,0,0,0,0,而「更好」的分佈可能是0,1,0,0,1,0,0,1,0

var ratio:String = "3/5"; 

var counter:int = 0; 
var arr = ratio.split("/"); 
var frequency:int = arr[0]; 
var max:int = arr[1]; 

addEventListener(Event.ENTER_FRAME,loop); 

function loop(e:Event):void { 
    if((max+1)/frequency == 2 || max/frequency == 2) { 
     trace(counter + ": " + !Boolean(counter % 2)); 
    } else if((max-1)/frequency == 2) { 
     trace(counter + ": " + Boolean(counter % 2)); 
    } else { 
     trace(counter < frequency); 
    } 
    counter++; 
    if (counter == max) removeEventListener(Event.ENTER_FRAME,loop); 
} 
+0

*排序* ...說,如果我的比例是3/5,然後我想它是道道通假 - 真 - 假 - 真...或如果它是1/5我想真假 - 假 - 假 - 假...是甚至可能的? – redconservatory

+0

所以你希望true/false的比例儘可能均勻分佈? 4/5的預期輸出是多少? – shanethehat

+0

就像說,如果它是1/5或4/5,你會得到true-false-false-false-false或false-false-false-false-true ......但對於2/5或3/5,你會得到替代...我懷疑這聽起來像是一團糟,但我只想保持一些不「團塊」的東西 – redconservatory