Невозможно получить ExternalInterface во Flash для работы - PullRequest
1 голос
/ 14 мая 2009

очень новый для вспышки. Я использую музыкальный проигрыватель XSPF (тонкая версия, найденная здесь (http://musicplayer.sourceforge.net/),, написанная на AS2) для воспроизведения списка mp3-файлов на веб-сайте. Мне нужно делать вызов javascript каждый раз, когда загружается дорожка. Я пытаюсь сделать это через ExternalInterface, но пока безуспешно. Вот мои настройки: я пишу сайт на Linux-машине, на которой также находится тестовый сервер, но редактирую флеш в Windows. Я тестирую сайт на том же Linux-боксе с Firefox 3.0.10. HTML и ActionScript размещены здесь (http://pastebin.com/f36b1da0e). Кто-нибудь видит что-то не так с моим кодом? Есть идеи, почему он не работает? Я чувствую, что это что-то в мои основные настройки ...

Спасибо, Dan

1 Ответ

0 голосов
/ 15 мая 2009

Я быстро взглянул на ваш код, и он кажется нормальным (ActionScript в любом случае). Что я бы сказал, это попробовать разные методы встраивания SWF. Много лет назад (так что я не могу вспомнить все детали), но я тестировал внешний интерфейс с различными браузерами, и иногда он работал в IE, но не в Firefox, и если бы я попробовал другой метод встраивания SWF, он работал бы в Firefox, но не IE или просто IE 6, а не 7!

Это было очень неприятно. Во всяком случае, единственный метод, который я нашел, который работал в обоих основных браузерах в то время (Chrome отсутствовал), это использовать HTML, который создается из flexbuilder при публикации вашего приложения. Конечно, мне пришлось немного его изменить (потому что мы используем cocoon & xsl's), но это сработало.

(с тех пор я думаю, что swfobject был улучшен, я мог бы попробовать и это на вашем месте)

Я разместил шаблон HTML от flexbuilder на http://pastebin.com/f79b5b3f3. Для этого потребуется файл AC_OETags.js (http://pastebin.com/f3937a336) и playerProductInstall.swf (вам может потребоваться загрузить flexbuilder, чтобы получить это) .


код комментария ниже

<mx:HTTPService id="mySerivceCall" 
    url="{'myPHPFile.php'}"
    result="resultHandler(event)" 
    fault="faulthandler(event)"
    showBusyCursor="false" 
    resultFormat="e4x"> 
    <mx:request>
        <time>{new Date().getTime()}</time>
    </mx:request>
</mx:HTTPService>

Я всегда добавляю время к httpservice, чтобы убедиться, что оно не кэшируется (что IE очень плохо). Просто вставьте любые другие параметры в раздел запроса, и формат результата просто скажет flex, что результатом является форматирование XML в e4x, что делает обработку XML очень простой.

...