2011-09-02 91 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