static function main()
{
...
trace('Initializing synthsizer');
_player = new SynthPlayer();
trace('Done');
}
class SynthPlayer extends Sprite
{
public function new()
{
super();
if (Worker.current.isPrimordial)
{
startPlayer();
}
else
{
startGenerator();
}
}
/* Player */
private var _generator:Worker;
private var _playerToGenerator:MessageChannel;
private var _generatorToPlayer:MessageChannel;
...
private function startPlayer()
{
trace('starting player');
trace('initializing generator worker');
trace(loaderInfo); // null
trace(loaderInfo.bytes);
_generator = WorkerDomain.current.createWorker(loaderInfo.bytes);
_playerToGenerator = Worker.current.createMessageChannel(_generator);
_generator.setSharedProperty("playerToGenerator", _playerToGenerator);
_generatorToPlayer = Worker.current.createMessageChannel(Worker.current);
_generatorToPlayer.addEventListener(Event.CHANNEL_MESSAGE, generatorToPlayerMessage);
_generator.setSharedProperty("generatorToPlayer", _generatorToPlayer);
trace('initializing audio');
...
trace('starting generator worker');
_generator.start();
}
...
/* Generator Part */
public function startGenerator()
{
trace('initializing generator');
_generatorToPlayer = Worker.current.getSharedProperty("generatorToPlayer");
_playerToGenerator = Worker.current.getSharedProperty("playerToGenerator");
_playerToGenerator.removeEventListener(Event.CHANNEL_MESSAGE, playerToGeneratorMessage);
trace('opening synthesizer');
...
}
...
}