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);
}