ошибка доступа к переменным класса в обратном вызове ExternalInterface - PullRequest
0 голосов
/ 29 августа 2011

Вот мой код действия (скомпилированный с mxmlc, встроенный в html, и функции вызываются с помощью js):

package {
    import flash.display.Sprite;
    import flash.external.ExternalInterface;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.net.URLRequest;

    public class LyrePlayer extends Sprite {
        private var out:SoundChannel;
        private var player:Sound;

        public function LyrePlayer() {
            out = new SoundChannel();
            player = new Sound();
            ExternalInterface.addCallback("play", play);
            ExternalInterface.addCallback("stop", stop);
        }

        private function play(url:String):void {
            var request:URLRequest = new URLRequest(url);
            player.load(request);
            if(out.position != 0) out.stop();
            out = player.play();
        }

        private function stop():void {
            out.stop();
        }
    }
}

Это все работает, вроде. Я могу воспроизвести один файл и звонить stop() любое количество раз. Но если я позвоню play() во второй раз, он выдаст ошибку:

> flashObject.play("/static/test.mp3")
[the song plays]
> flashObject.stop()
[the song stops]
> flashObject.play("/static/test.mp3")
Error
arguments: undefined
message: "Error calling method on NPObject."
> flashObject.stop()
[no error]

Есть идеи?

1 Ответ

0 голосов
/ 29 августа 2011

похоже, вам нужно позвонить player.close(), вот рабочий пример

...