Actionscript 比率和频率的帮助

Actionscript 比率和频率的帮助,actionscript,modulo,Actionscript,Modulo,我有以下资料: 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()

我有以下资料:

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: false
2: true
3: false
0: true
1: false
2: true
3: false

i、 e.更均匀的分散(交替)…有没有办法做到这一点?

我想我可能没有抓住要点,但这应该会给出所需的输出:

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,1,0,0,1,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);
}
var比率:String=“3/5”;
变量计数器:int=0;
var arr=分割比率(“/”);
无功频率:int=arr[0];
var max:int=arr[1];
addEventListener(事件输入帧,循环);
函数循环(e:事件):无效{
如果((最大值+1)/频率==2 | |最大值/频率==2){
跟踪(计数器+”:“+!布尔值(计数器%2));
}否则,如果((最大值-1)/频率==2){
跟踪(计数器+”:“+布尔值(计数器%2));
}否则{
跟踪(计数器<频率);
}
计数器++;
if(counter==max)removeEventListener(事件输入\帧,循环);
}

有点。。。如果我的比率是3/5,那么我希望它是真的,如果是1/5,那么我希望它是真的,假的,假的,这是可能的吗?所以你希望真/假的比率尽可能均匀分布?4/5的预期输出是什么?比如说,如果它是1/5,或者4/5,你得到的是真假假假假真…但是对于2/5或3/5,你得到的是另一个…我怀疑这听起来有点离谱,但我只想让事情不要“笨拙”@red温室-更新。不过我并不特别喜欢它。
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);
}