Вопрос

Я пытаюсь отредактировать флэш-память для вызова внешней функции javascript, но безуспешно. Вот мой код Actionscript 2.0:

//testing external .js calls

import flash.external.ExternalInterface;

//attempting to make external js call

ExternalInterface.call("createPlaylist","It's my Life!");

а вот и мой javascript;

function createPlaylist(mess){
  alert("called createPlaylist: " + mess);
}

Я видел много примеров, и я в основном запутался в использовании ExternalInterface.addCallback . Я не нуждаюсь в javascript, чтобы вернуть что-либо для прошивки, так ли это необходимо?

По какой-то причине я никогда не вижу предупреждение. Кто-нибудь видит какие-либо проблемы в моем коде? Есть ли какая-нибудь библиотека ExternalInterface , которой у меня нет? Кроме того, как лучше всего использовать ExternalInterface (т. Е. Проверку ошибок и т. Д.) Заранее спасибо ...

Это было полезно?

Решение

ExternalInterface.addCallback предназначен для вызова JavaScript в вашем приложении Flash. Например, если вам нужна кнопка HTML, которая запускает / останавливает видео, вы просто добавляете обратный вызов для именованного метода, и ваш js может затем вызвать [FlashObject] .callback имя метода.

Я бы сказал, что лучший способ добавить методы ExternalInterface в ваше приложение - это создать класс, отвечающий за взаимодействие JS для каждого случая взаимодействия в приложении. Например:

public class ExternalVideoControl {

    private var video:MediaDisplay;

    public function ExternalVideoControl(video:MediaDisplay) {
        //ExternalInterface.addCallback  - one callback for each method you want to expose, pointing to a method within this class;
        //add listeners on the video player and point them to methods in this class, for example onProgress
    }
    public function playVideo():void {
        //play the video on the mediaDisplay
    }
    private function onProgress(event:ProgressEvent):void {
        //ExternalInterface.call - report progress back to javascript
    }
}

Чтобы проверить ExternalInterface более напрямую, попробуйте вызвать

ExternalInterface.call("alert", "Hello World!");

Другие советы

Как говорили другие в комментариях к сообщению Йохана, сначала нужно проверить, доступен ли внешний интерфейс, проверяя ExternalInterface.available.

Кроме этого ... как запустить приложение Flex? Сначала он должен быть включен в оболочку, которая содержит этот JavaScript, конечно. Это тривиально. Однако в случае, если вы запускаете его как файл из локальной файловой системы (URL браузера начинается с file: //), вы также должны убедиться, что SWF-файл имеет необходимые разрешения для запуска функции JavaScript.

Вы должны доверять SWF-файлу, чтобы он мог обращаться к локальным ресурсам, таким как файлы, или JS для локальных файлов. Для этого создайте файл, подобный myapp.cfg, и добавьте путь к нему в виде одной строки в этой строке. Поместите этот файл в папку FlashPLayerTrust. В системах Linux это ~ / .macromedia / Flash_Player / # Security / FlashPlayerTrust /.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top