mboost-dp1

Flash CS4: Forsinket lyd


Gå til bund
Gravatar #1 - nielsbuus
20. jul. 2009 18:19
Hej. Jeg er ved at lave en lille applikation i Flash. I den forbindelse har jeg brug for at afspille 2 lyde samtidigt hvorefter man som bruger kan skifte i mellem dem. Men når jeg loader dem og herefter afspiller dem, så bliver de ikke afspillet samtidigt, men med en forskydning på noget der minder om et halvt sekund. Det betyder at hvis jeg f.eks. vil lave en funktion hvor man slå forskellige spor i en sang til (bass, piano, vokaler, trommer, etc...) - så kan det ikke afvikles synkront.

var soundA: Sound = new Sound();
var soundB: Sound = new Sound();
var channelA: SoundChannel;
var channelB: SoundChannel;

playA_btn.label = "Play A";
playB_btn.label = "Play B";

// Load sounds
soundA.load(new URLRequest("lyd1.mp3"));
soundB.load(new URLRequest("lyd2.mp3"));

// Delay until fully loaded
while ((soundA.bytesLoaded < soundA.bytesTotal) || (soundB.bytesLoaded < soundB.bytesTotal)) {
}

playA_btn.addEventListener(MouseEvent.MOUSE_DOWN, function(event: MouseEvent): void {
var trans: SoundTransform;

if ((channelA == null) && (channelB == null)) {
channelA = soundA.play();
channelB = soundB.play();
}

trans = channelA.soundTransform;
trans.volume = 1;
channelA.soundTransform = trans;
trans = channelB.soundTransform;
trans.volume = 0;
channelB.soundTransform = trans;
});

playB_btn.addEventListener(MouseEvent.MOUSE_DOWN, function(event: MouseEvent): void {
var trans: SoundTransform;

if ((channelA == null) && (channelB == null)) {
channelA = soundA.play();
channelB = soundB.play();
}

trans = channelA.soundTransform;
trans.volume = 0;
channelA.soundTransform = trans;
trans = channelB.soundTransform;
trans.volume = 1;
channelB.soundTransform = trans;
});


Er det bare et vilkår ved Flash og ActionScript3 eller er der nogle workarounds? Jeg er ret ny i Flash.

Tak. :)
Gravatar #2 - nielsbuus
20. jul. 2009 18:41
Jeg har lagt en test op her:

http://www.nielsbuus.dk/ting/flash

Jeg har lige testet siden på et par andre maskiner. Den Mac jeg har lavet den på som har et "SigmaTel" lydkort har forskydning, men jeg har også en bærbar PC med et "Realtek HD" lydkort og en stationær med "Realtek HD" lydkort og de afspiller begge uden lag. Jeg tror det har noget at gøre med en buffer i det enkelte lydkort måske?

Nogen ideer?
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login