OK, I think this should work: Frame 1 code: var soundArray:Array = [[8,"test"], [15,"pete"], [21,"test"], [27,"pete"], [36,"test"]]; var counter:int = 0; var syncTimer:Timer = new Timer(0, 1); syncTimer.addEventListener(TimerEvent.TIMER, syncReady, false, 0, true); var speech:Sound = new Sound(); speech.addEventListener(Event.COMPLETE, onSoundLoaded); var req:URLRequest = new URLRequest("audio/993_m2_p6.mp3"); speech.load(req); function onSoundLoaded(event:Event):void { speech.play(); counter = -1; waitForSync(); } function waitForSync():void { syncTimer.reset(); counter++ if(counter == 0){ syncTimer.delay = soundArray[counter][0] * 1000; }else{ syncTimer.delay = (soundArray[counter][0] - soundArray[counter - 1][0]) * 1000; } syncTimer.start(); } function syncReady(e:TimerEvent):void { gotoAndStop(soundArray[counter][1]); //play(); } All I did was use a 2D array and add the frame labels as part of the timing.
... View more