Vincent2
%Europe/Berlin %581 %2009, 13:57
Ik zou graag een mini sequencer(geluidjes die je in een bepaald ritme laat afspelen) schrijven maar zit met het volgende probleem.
De timer wordt wel mooi om de 200miliseconden opgeroepen, maar het duurt niet altijd evenlang om het geluid af te spelen (altijd ergens anders in arraylist halen). Weet iemand hoe dit (algemeen) probleem heet? Kan me voorstellen dat dit probleem veel voorkomt in het ontwerpen van games. En weet iemand een oplossing?
dbv
import flash.net.FileReference;
import flash.media.Sound;
import flash.events.*;
import flash.utils.Timer;
var sound1:Sound = new sound_kick();
//var sound2:Sound = new sound_poink();
var sound2:Sound = new sound_kick();
var sound3:Sound = new sound_kick();
var sound4:Sound = new sound_kick();
var sound5:Sound = new sound_kick();
var sound6:Sound = new sound_kick();
var sound7:Sound = new sound_kick();
var sound8:Sound = new sound_kick();
var sound9:Sound = new sound_kick();
var sound10:Sound = new sound_kick();
var sound11:Sound = new sound_kick();
var sound12:Sound = new sound_kick();
var sound13:Sound = new sound_kick();
var sound14:Sound = new sound_kick();
var sound15:Sound = new sound_kick();
var sound16:Sound = new sound_kick();
var sound17:Sound = new sound_kick();
var sound18:Sound = new sound_kick();
var sound19:Sound = new sound_kick();
var sound20:Sound = new sound_kick();
var sound21:Sound = new sound_kick();
var soundArray:Array = new Array();
soundArray[0]=sound1;
soundArray[1]=sound2;
soundArray[2]=sound3;
soundArray[3]=sound4;
soundArray[4]=sound5;
soundArray[5]=sound6;
soundArray[6]=sound7;
soundArray[7]=sound8;
soundArray[8]=sound9;
soundArray[9]=sound10;
soundArray[10]=sound11;
soundArray[11]=sound12;
soundArray[12]=sound13;
soundArray[13]=sound14;
soundArray[14]=sound15;
soundArray[15]=sound16;
soundArray[16]=sound17;
soundArray[17]=sound18;
soundArray[18]=sound19;
soundArray[19]=sound20;
soundArray[20]=sound21;
var sequenceTimer:Timer = new Timer(200);
var sequenceCount:int = 0;
var sequenceAmount:int = 21;
playButton.addEventListener(MouseEvent.MOUSE_DOWN, startSequence);
function startSequence(event:Event) {
sequenceTimer.addEventListener(TimerEvent.TIMER, playNextSequence);
sequenceTimer.start();
}
function playNextSequence(event:Event) {
if(sequenceCount==sequenceAmount-1) {
sequence=0;
}
else {
trace(sequenceCount);
soundArray[sequenceCount].play();
sequenceCount=sequenceCount+1;
}
}
De timer wordt wel mooi om de 200miliseconden opgeroepen, maar het duurt niet altijd evenlang om het geluid af te spelen (altijd ergens anders in arraylist halen). Weet iemand hoe dit (algemeen) probleem heet? Kan me voorstellen dat dit probleem veel voorkomt in het ontwerpen van games. En weet iemand een oplossing?
dbv
import flash.net.FileReference;
import flash.media.Sound;
import flash.events.*;
import flash.utils.Timer;
var sound1:Sound = new sound_kick();
//var sound2:Sound = new sound_poink();
var sound2:Sound = new sound_kick();
var sound3:Sound = new sound_kick();
var sound4:Sound = new sound_kick();
var sound5:Sound = new sound_kick();
var sound6:Sound = new sound_kick();
var sound7:Sound = new sound_kick();
var sound8:Sound = new sound_kick();
var sound9:Sound = new sound_kick();
var sound10:Sound = new sound_kick();
var sound11:Sound = new sound_kick();
var sound12:Sound = new sound_kick();
var sound13:Sound = new sound_kick();
var sound14:Sound = new sound_kick();
var sound15:Sound = new sound_kick();
var sound16:Sound = new sound_kick();
var sound17:Sound = new sound_kick();
var sound18:Sound = new sound_kick();
var sound19:Sound = new sound_kick();
var sound20:Sound = new sound_kick();
var sound21:Sound = new sound_kick();
var soundArray:Array = new Array();
soundArray[0]=sound1;
soundArray[1]=sound2;
soundArray[2]=sound3;
soundArray[3]=sound4;
soundArray[4]=sound5;
soundArray[5]=sound6;
soundArray[6]=sound7;
soundArray[7]=sound8;
soundArray[8]=sound9;
soundArray[9]=sound10;
soundArray[10]=sound11;
soundArray[11]=sound12;
soundArray[12]=sound13;
soundArray[13]=sound14;
soundArray[14]=sound15;
soundArray[15]=sound16;
soundArray[16]=sound17;
soundArray[17]=sound18;
soundArray[18]=sound19;
soundArray[19]=sound20;
soundArray[20]=sound21;
var sequenceTimer:Timer = new Timer(200);
var sequenceCount:int = 0;
var sequenceAmount:int = 21;
playButton.addEventListener(MouseEvent.MOUSE_DOWN, startSequence);
function startSequence(event:Event) {
sequenceTimer.addEventListener(TimerEvent.TIMER, playNextSequence);
sequenceTimer.start();
}
function playNextSequence(event:Event) {
if(sequenceCount==sequenceAmount-1) {
sequence=0;
}
else {
trace(sequenceCount);
soundArray[sequenceCount].play();
sequenceCount=sequenceCount+1;
}
}