Я думаю, что, возможно, здесь упущен смысл, но это должно дать желаемый результат:
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);
}