Вызов функции AS3 из ссылки html - Javascript? PHP? SWFAddress? - PullRequest
2 голосов
/ 05 апреля 2010

У меня есть функция actionscript, которая загружает внешний SWF и в настоящее время связана с кнопкой в ​​том же SWF ...

function btnClick(event:MouseEvent):void{
SoundMixer.stopAll();
 removeChild(loader); 
 loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onSWFLoaded);
 loader.load(movieSWF)
 loader.x=Xpos
 loader.y=Ypos
 addChild(loader)


}


button.addEventListener(MouseEvent.CLICK,btnClick);

Мне интересно, есть ли способ вызвать эту функцию по ссылке на странице, на которой размещен swf. Я предполагаю, что javascript, php или swfaddress были бы наиболее вероятным способом, но я невероятно новичок во всем этом, поэтому я не уверен, с чего начать и как это сделать.

Любая помощь будет оценена.

1 Ответ

9 голосов
/ 05 апреля 2010

Вы ищете функцию ExternalInterface.addCallback. Это позволяет зарегистрировать функцию, чтобы ее можно было вызывать извне из кода JavaScript.

Ваш HTML может выглядеть следующим образом (где 'IDofSWF' - это идентификатор элемента, содержащего SWF на странице):

<a href="#" onclick="document.getElementById('IDofSWF').clicky()">
    Click to call btnClick in the SWF
</a>

Со следующим кодом инициализации во Flash:

import flash.external.ExternalInterface;

// ...

// This will allow JavaScript to call a function on the SWF named 'clicky'. It will execute the anonymous function passed as the second argument:
ExternalInterface.addCallback('clicky', function () {
    btnClick(null);
});

Обратите внимание, что вы не получите MouseEvent (в качестве примера для него передается null), потому что обработчик событий вызывается вручную (извне из JavaScript), а не из SWF-файла при щелчке мыши. 1014 *

...