Я встраиваю flash-объект (swf-файл) в HTML-страницу. Объект написан в формате as3 и построен с помощью Flash Builder. Его цель - показать анимацию, а затем закончить.
Для меня действительно важно иметь возможность уведомить контейнер о завершении анимации, но я не могу найти ничего, что работает. Я использую swfobject версии 2.2.
Пробовал как в Chrome 40, так и в IE 11.
HTML (образец):
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript">
function flashFinished() {alert('finished!');}
</script>
<script type="text/javascript">
var flashVars = {}
var flashParams = {allowscriptaccess : 'sameDomain'}
var flashAttributes = {id : 'myflash', name : 'myflash'}
swfobject.embedSWF('myflash.swf', 'flashObject', '960', '720', '9.0.0', 'swf/expressInstall.swf',
flashVars, flashParams, flashAttributes);
</script>
</head>
<body>
<div id="flashObject">
<p>To view this page please make sure that an updated version of Adobe Flash Player is installed.</p>
</div>
</body>
AS3 (образец):
package
{
public class myflash extends Sprite
{
public function myflash()
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
startPlay();
}
private function startPlay() : void {
// do whatever, then make sure function finishPlay is called in the end
}
private function finishPlay(event:TimerEvent) : void {
if (ExternalInterface.available)
ExternalInterface.call('flashFinished');
}
}
}
Моя функция "flashFinished" никогда не вызывается. Кто-нибудь может подсказать, что я делаю не так? Спасибо!
2 ответа
На самом деле это было вопросом безопасности из-за местной среды, как предлагает @akmozo. Я зашел в глобальные настройки безопасности Flash Player:
http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html
И добавил корневую папку дерева, содержащего все HTML-страницы / объекты SWF, в разрешенные места. Так что теперь он работает и локально.
Если работа с флэш-кодом выполнена и она вам больше не нужна, просто завершите javascript в as3:
var exitStr:String = "javascript:terminate()";
navigateToURL(new URLRequest(exitStr),"_self");
А затем добавьте функцию onUnload в HTML, которая будет вызываться в этот момент:
onUnload="flashFinished();"
Примечание: я использовал этот код с swfobject v1.4, не уверен насчет v2.2
Похожие вопросы
Связанные вопросы
Новые вопросы
html
HTML (язык гипертекстовой разметки) — это язык разметки для создания веб-страниц и другой информации, отображаемой в веб-браузере. Вопросы относительно HTML должны включать минимальный воспроизводимый пример и некоторое представление о том, чего вы пытаетесь достичь. Этот тег редко используется отдельно и часто в паре с [CSS] и [JavaScript].