Mal eine ganz kuriose Sache, die wir der Welt mal nicht vorernthalten wollen.

Ich baue hier gerade für einen Kunden an einem “virtuellen Videostudio”. Mach richtig Spass, weil ich die Idee cool finde und daß ja auch was ist, was man nicht immer baut. Jetzt bin ich hier an dem Punkt angekommen, an dem ich die Tonspuren wiedergeben will. Also vergleich ich einfach die Position des Playheads mit der Position der Sound-Schnippsel in der jeweiligen Leiste, und wenn die sich überschneiden, spielt er den Sound ab.

So weit so gut :) . Jetzt hab ich dem guten Folgendes gesagt:

if(this.currSoundID !== obj.id){
    this.cSound = new Sound(new URLRequest(obj.file));
    this.cChannel = this.cSound.play();
    this.currSoundID = obj.id;
}

wobei this.currSoundID die ID des aktuelle wiezugebenden Sounds darstellt. Jetzt teste ich das, und was soll ich sagen, der spielt den Sound zig mal ab. Und ich so “Häh???” und er so “Ja Sound halt…”. Okay, was macht man als Erstes? Richtig, man testet die Bedingung. Also munter mal

trace(this.currSoundID !== obj.id);

eingebaut. Und siehe, erstaunlicherweise lacht mich ein “true” an. Jetzt wurde ich langsam ein wenig verwirrt und nervös. Also flink paralell auch noch mal ein

trace(this.currSoundID == obj.id);

eingebaut. Und da lacht mich auch ein “true” an. Wem es jetzt geht wir mir (totaler Verwirrung, wie kann eine Sache gleichzeitig gleich und ungleich sein) schicke bitte eine Mail an wtf-at-phihochzwei.com :)

Des Rätsels Lösung ist eigentlich Simpel: Falscher Datentyp!
Ich hatte this.currSoundID als Number definiert. Die ID ist aber eigentlich ein String (weil wegen GUID und so). Und deswegen knallte das. Naja, EIGENTLICH sollte das ja eine Fehlermeldung geben, aber wir verbuchen das jetzt mal unter “Dinge, die wir uns einfach mal merken”.

In diesem Sinne,

Happy Flashing