Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用swfobject通知HTML容器SWF已完成_Html_Actionscript 3_Flash - Fatal编程技术网

如何使用swfobject通知HTML容器SWF已完成

如何使用swfobject通知HTML容器SWF已完成,html,actionscript-3,flash,Html,Actionscript 3,Flash,我将一个flash对象(swf文件)嵌入到HTML页面中。该对象以as3编写,并使用Flash Builder构建。其目的是显示一些动画,然后完成 能够通知容器动画已经完成对我来说非常重要,但是我找不到任何有效的方法。我正在使用 在Chrome 40和IE 11上都试用过 HTML(示例): 我的“flashFinished”函数从未被调用。有人能告诉我我做错了什么吗?谢谢 如果flash代码的工作已经完成,而您不再需要它,只需在as3中终止javascript: var exitStr:Str

我将一个flash对象(swf文件)嵌入到HTML页面中。该对象以as3编写,并使用Flash Builder构建。其目的是显示一些动画,然后完成

能够通知容器动画已经完成对我来说非常重要,但是我找不到任何有效的方法。我正在使用

在Chrome 40和IE 11上都试用过

HTML(示例):


我的“flashFinished”函数从未被调用。有人能告诉我我做错了什么吗?谢谢

如果flash代码的工作已经完成,而您不再需要它,只需在as3中终止javascript:

var exitStr:String = "javascript:terminate()";
navigateToURL(new URLRequest(exitStr),"_self");
然后在HTML中添加一个onUnload函数,该函数将在此时调用:

onUnload="flashFinished();"

注意:我在swfobject v1.4中使用了这段代码,但不确定v2.2是否正确,这实际上是一个安全问题,因为@akmozo建议使用本地环境。我进入了Flash Player的全球安全设置:


并将包含所有HTML页面/SWF对象的树的根文件夹添加到允许的位置。因此,现在它也可以在本地工作。

为了避免Flash player阻止本地swf访问外部URL(internet,…)或与javascript或其他一些通常引发安全沙盒冲突错误的操作进行通信,您必须将其(swf)添加到可信位置列表中,如下所示:

对于Flash播放器PPAPI(如Opera和Chrome):

  • 右键单击浏览器中打开的swf,然后单击全局设置…:

它将打开

  • 然后单击右侧的链接,将显示此页面:

  • 然后,如图中所述,单击编辑位置…组合框,然后单击添加位置,将显示此框:

您只需键入swf位置,或者它的父目录,或者像我在图中所做的那样键入整个分区。尽量避免使用“浏览…”按钮,有时它不起作用(至少对我来说)。确认并关闭页面并刷新swf的页面

对于Flash Player ActiveX(如IE)和NPAPI(如Firefox):

  • 右键单击浏览器中打开的swf,然后全局设置…,您也可以转到系统控制面板并打开Flash Player

  • 然后转到“高级”选项卡并单击“可信位置设置…”按钮:

  • 然后您必须使用添加..按钮添加swf位置添加文件…添加文件夹…按钮选择您的文件/目录或分区,然后按确定确认并关闭所有对话框


然后你只需要刷新你的页面

我会使用外部接口呼叫,您是否尝试了警报以查看其是否有效?->外部接口呼叫(“警报”、“来自闪存的呼叫”);我认为您的代码很好,但如果您在本地尝试,可能会出现安全异常,因此请在web服务器上尝试。@Shaeldon SecurityError:Error#2060:安全沙盒冲突:ExternalInterface callerfile:///C:/...../myflash.swf 无法访问file:///C:/...../page.html. 看起来akmozo毕竟是对的。让我印象深刻的是,在将allowscriptaccess设置为“always”后,我得到了相同的安全错误;adobe文档表示,在这种情况下,调用应始终被许可安全错误:错误#2051:安全沙箱冲突:file:///C:/...../myflash.swf 无法在中计算脚本URLfile:///C:/...../mypage.html (allowScriptAccess是sameDomain)。尝试的URL是javascript:terminate()。我认为应该给出一个答案来解释这一切;)是的,这是针对Flash Player PPAPI(如Opera和Chrome),针对Flash Player ActiveX(如IE)和NPAPI(如firefox),它位于控制面板>Flash Player>高级选项卡>受信任位置设置。。。或者只需右键单击>全局设置…@akmozo是的,请,如果您发布巡演答案,我将选择并投票
var exitStr:String = "javascript:terminate()";
navigateToURL(new URLRequest(exitStr),"_self");
onUnload="flashFinished();"