AS3 - ExternalInterface.addCallback, доступ к неопределенному свойству - PullRequest
0 голосов
/ 10 сентября 2011

Я пытаюсь использовать JavaScript для запуска функций AS3. Когда я пытаюсь скомпилировать, я получаю сообщение об ошибке «Доступ к неопределенному свойству».

Я прочитал несколько вещей в Интернете об этом, но я все еще не понимаю этого. Я хочу, чтобы файл флэш-памяти всегда слушал javascript.

Вот мой код AS3:

ExternalInterface.addCallback("song4", PauseMusicExt);

И мой Javascript & HTML:

 function returnVar3(song3) { return this[song3]; }
  <input type="submit" name="playButton" id="playButton" value="Submit" onClick="returnVar('song3')"/>

Редактировать: вот функция pauseMusic:

function pauseMusicExt():void
    {
        songPosition = channel.position;
        channelSilence.stop();
        channel.stop();
        channel2.stop();
        btnPlay.mouseEnabled = true;
    }

Ответы [ 2 ]

4 голосов
/ 10 сентября 2011

Я не уверен насчет расширения вашего приложения, но вы перепутали параметры функции addCallback ..

См. документ , первый параметр - это имя, которое выхотите представить функцию как javascript, вторая - это фактическая внутренняя функция AS3, которую вы хотите вызвать.

Таким образом, объявление должно выглядеть примерно так:

ExternalInterface.addCallback ("song4", pauseMusic);

(при условии, что ваша функция находится в той же области, в которой вы вызываете addCallback)

Этот оператор создаст метод "song4", который вы можете вызывать в своем объекте flash dom

var fl = document.getElementById('myflashobject');
fl.song4()

После проблемы с pauseMusic требуется параметр (похоже, вы сделали это обработчиком событий мыши).Вы, вероятно, хотите иметь чистый метод, который не требует такого параметра, как внутренний параметр события as3.Перепишите pauseMusic, чтобы он не требовался (вам может потребоваться создать другой метод для внутренней обработки события мыши - например, onPause (evt: MouseEvent), который затем вызывает pauseMusic.

Edit Я не знаю, думали ли многие об этом, но вы также можете полностью использовать внешний интерфейс для вызова функции console.log в firebug для отправки сообщений в Firebug из флэш-памяти (это действительно полезно для отладки проблем ExternalInterface или любых других проблем).проблемы со вспышкой - см. функцию ExternalInterface.call )

0 голосов
/ 10 сентября 2011

Надеюсь, вы захотите приостановить воспроизведение аудиоплеера.

AS-код:

 ExternalInterface.addCallback("sndToAS",rcvdFmJS);
    function rcvdFmJS(val){
       if (val == "pause"){
      audioPause();
       }
    }

JS-код:

    document.getElementById("movie").sndToAS("pause");    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...