0
Вот мой ActionScript (скомпилирован с mxmlc, встроенный в HTML, а функции вызываются с JS):ошибка доступа к переменным класса в пределах ExternalInterface обратного вызова
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]
Любые идеи?
Я точно не знаю, что вы просите, но если вы имеете в виду, что если вы удалите // из строки out.stop() в вы получаете ошибку, не будет ли это инициировать ошибку при первом вызове воспроизведения, так как переменная out еще не установлена в экземпляр SoundChannel? –
Я исправил это и уточнил свой вопрос. Благодарю. – colinmarc
Попробуйте изменить имена обратного вызова ExternalInterface, вместо этого используйте lyrePlay, если вы играете. –