PDA

Volledige versie bekijken : Timer probleem (altijd evenlang timermethode uitvoeren)


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

behived
%Europe/Berlin %882 %2009, 21:10
De timer roept om de 200 miliseconden een functie op. Deze functie wordt eerst uitgevoerd en dan pas wordt er terug afgeteld. Het hangt er dus vanaf hoelang het duurt dat de functie uitgevoerd wordt hoeveel werkelijke tijd er tussen je twee timerevents zit.

in de documentation staat dit netjes uitgelegd: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/Timer.html

Een mogelijke oplossing: in de flash.utils package zit de getTimer functie die bijhoudt hoelang de movie aan het spelen is. Misschien kan je dit combineren met een enterFrame event? (http://livedocs.adobe.com/flex/201/langref/flash/utils/package.html#getTimer%28%29)
(http://livedocs.adobe.com/flex/201/langref/flash/utils/package.html#getTimer%28%29)

Vincent2
%Europe/Berlin %674 %2009, 16:11
De timer roept om de 200 miliseconden een functie op. Deze functie wordt eerst uitgevoerd en dan pas wordt er terug afgeteld. Het hangt er dus vanaf hoelang het duurt dat de functie uitgevoerd wordt hoeveel werkelijke tijd er tussen je twee timerevents zit.

in de documentation staat dit netjes uitgelegd: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/Timer.html

Een mogelijke oplossing: in de flash.utils package zit de getTimer functie die bijhoudt hoelang de movie aan het spelen is. Misschien kan je dit combineren met een enterFrame event? (http://livedocs.adobe.com/flex/201/langref/flash/utils/package.html#getTimer%28%29)
(http://livedocs.adobe.com/flex/201/langref/flash/utils/package.html#getTimer%28%29)


oké jo, hier kan ik wat mee. Hartelijk bedankt!