Как сказал Пит, ExternalInterface, безусловно, необходимо для вызова функций между SWF и соседней HTML-страницей.
Вы также можете использовать swfobject, чтобы выполнять кросс-браузерное встраивание SWF/загрузку на страницу динамически.
Я сделал небольшой демо из двух функций, которые вы ищете здесь: http://akineticblog.com/fl/ExtIntDemo/index.html
Код AS3 для этого:
import flash.external.ExternalInterface;
var recording:Boolean = false;
//These are two TextFields instantiated on the stage as visual indicators
recordingTF.visible = false;
notRecordingTF.visible = true;
function recording_toggle():void {
recording = ! recording;
//Your actual record start/stop code would go here//
recordingTF.visible = recording;
notRecordingTF.visible = ! recording;
}
if (ExternalInterface.available) {
//This registers the AS3-side function to the JS-side reference
ExternalInterface.addCallback("recording_toggle", recording_toggle);
}
Для/JS стороны HTML, вы можете проверить исходный код страницы в ссылке выше, но основные части:
function swf_load() {
swfobject.embedSWF("ExtIntDemo.swf", "flashMovie", "500", "250", "10.1", "swf/expressinstall.swf", flashvars, params, attributes);
};
- будет вызвана, когда вы хотите загрузить в SWF, заменяя div
с идентификатором 'FlashMovie.
И:
<button onclick="flashMovie.recording_toggle()">Toggle recording</button>
- послать вызов функции 'recording_toggle' в самой SWF.
Невозможно ли «загрузить» готовый SWF при нажатии кнопки? – wrahool
Является ли SWF уже на сайте на странице загрузки или вы хотите динамически вставлять SWF? Если вы просто хотите встроить SWF, вы можете использовать [SWFObject] (https://code.google.com/p/swfobject/) -библиотеку для работы для вас (см. [Пример] (http: // stackoverflow .com/а/137349/2138943)). В любом случае, если вы хотите иметь кнопку JavaScript, которая что-то делает для SWF, вам нужно использовать ExternalInterface. –