我将flash对象(swf文件)嵌入到HTML页面中。该对象使用as3编写,并使用Flash Builder构建。它的目的是展示一些动画,然后完成。
能够通知容器动画已经完成,但我找不到任何有效的东西对我来说非常重要。我正在使用swfobject version 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”函数永远不会被调用。任何人都可以建议我做错了什么?谢谢!
答案 0 :(得分:1)
如果完成了Flash代码的工作并且您不再需要它,只需在as3中终止javascript:
var exitStr:String = "javascript:terminate()";
navigateToURL(new URLRequest(exitStr),"_self");
然后在HTML中添加一个onUnload函数,该函数将在此时调用:
onUnload="flashFinished();"
注意:我在swfobject v1.4中使用了这段代码,不确定v2.2
答案 1 :(得分:1)
为避免Flash播放器阻止您的本地swf访问外部URL(互联网,...)或与javascript或其他一些通常会触发安全沙箱违规错误的操作进行通信,您必须添加它( swf)到这样的受信任位置列表:
对于Flash Player PPAPI(如Opera和Chrome):
将打开this page。
您只需键入您的swf位置,或者它的父目录,或者只是像我在图像中所做的那样输入整个分区。尽量避免使用“浏览...”按钮,有时它不起作用(至少对我而言)。 确认并关闭页面并刷新swf。
对于Flash Player ActiveX(如IE)和NPAPI(如Firefox):
然后您只需刷新页面即可。
答案 2 :(得分:0)
由于当地环境,这实际上是一个安全问题,正如@akmozo所建议的那样。我进入了Flash Player的全局安全设置:
http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html
并添加树的根文件夹,将所有HTML页面/ SWF对象包含在允许的位置。所以现在它也在本地运作。