2011-06-21 20 views
0

我无法使swfobject嵌入文件与我的html进行通信。当我嵌入swfs使用AC_RunActiveContent的标准方式,它的作品,任何想法,为什么这将是?基本上,底部的导航按钮可以阻止swfs在点击时播放。我非常感谢任何帮助!swfobject不与html进行通信

<script type="text/javascript" src="js/swfobject.js"></script> 

<script type="text/javascript"> 
var flashvars = {}; 
var params = {}; 
params.play = "true"; 
params.loop = "false"; 
params.menu = "true"; 
params.quality = "high"; 
params.scale = "showall"; 
params.wmode = "opaque"; 
params.bgcolor = "#ffffff"; 
params.devicefont = "false"; 
params.allowscriptaccess = "always"; 

var attributes = {}; 
swfobject.embedSWF("images/blank1.swf", "blank1", "747", "420", "9.0.0", flashvars, params, attributes); 
swfobject.embedSWF("images/blank2.swf", "blank2", "747", "420", "9.0.0", flashvars, params, attributes); 
swfobject.embedSWF("images/blank3.swf", "blank3", "747", "420", "9.0.0", flashvars, params, attributes); 
</script> 


<script language="javascript"> 
function getFlashMovie(movieName) { 
var isIE = navigator.appName.indexOf("Microsoft") != -1; 
return (isIE) ? window[movieName] : document[movieName]; 
} 

function stopFlash(){ 
    getFlashMovie("blank1").commandFlash(); 
    getFlashMovie("blank2").commandFlash(); 
    getFlashMovie("blank3").commandFlash(); 
} 

HTML:

<div> 
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="747" height="420"> 
    <param name="movie" value="images/blank1.swf" /> 
    <!--[if !IE]>--> 
    <object type="application/x-shockwave-flash" data="images/blank1.swf" width="747" height="420"> 
    <!--<![endif]--> 
    <img src="images/blank1.jpg" alt="" width="747px" height="420px" /> 
    <!--[if !IE]>--> 
    </object> 
    <!--<![endif]--> 
    </object> 
</div> 

<div id="navigation"> 
<a href="#" name="btn" onClick="stopFlash()"><div id="slideshow-previous"></div></a> 
<a href="#" name="btn" onClick="stopFlash()"><div id="slideshow-next"></div></a> 
<a href="#" name="btn" onClick="stopFlash()"><div id="slideshow-first"></div></a> 
</div> 

感谢您的任何反馈!

回答

1

在你的SWF中,你有没有导入flash.external.ExternalInterface?

如果没有,您需要这样做,然后在您的SWF中公开'commandFlash'方法。您也可能需要在您的网域上允许进行这种沟通。

import flash.external.ExternalInterface; 

System.security.allowDomain('*'); 
var flashAvailable:Boolean = ExternalInterface.available; 

ExternalInterface.addCallback('commandFlash', null, commandFlash); 
function commandFlash(args...){ 
    // 
} 

除了上述内容,也许你的SWF隐藏着display:none;在某个时间点在页面上,然后透露?这在过去为Firefox导致了一些奇怪的现象。

(不知道,如果你使用AS2/3在SWF)

+0

嗨Danjah,感谢您的回复,我使用AS3并在我的swfs中导入了flash.external.ExternalInterface。当我嵌入swf'标准'的方式(使用发布的代码)时,swfs'停止'按钮被点击,但是当我使用swfobject时,它们不会。 – Dave

+0

当您使用SWF测试coms可用性时返回什么?或者你甚至不能从SWF中获取它?找到一个我可以窥视的URL? – danjah

+0

我知道我超出了我的深度! - 还有很多东西需要学习!我不确定什么coms可用性是(抱歉)。我确实有一个URL,但由于该网站不是我的,我有点不愿发布链接。它与AC_RunActiveContent一起工作良好,但是如果最终用户没有使用闪光灯,我无法获得“替换”图像,因此我认为我会使用swfobject,这似乎导致了比我最初的问题更多的问题! – Dave

1

你SWFObject的代码有错误:它缺少明确的安装参数。

swfobject.embedSWF("images/blank1.swf", "blank1", "747", "420", "9.0.0", "expressinstall.swf", flashvars, params, attributes); 
swfobject.embedSWF("images/blank2.swf", "blank2", "747", "420", "9.0.0", "expressinstall.swf", flashvars, params, attributes); 
swfobject.embedSWF("images/blank3.swf", "blank3", "747", "420", "9.0.0", "expressinstall.swf", flashvars, params, attributes); 

当然,您需要将“expressinstall.swf”替换为您的expressinstall.swf文件的正确路径。如果您不想使用快速安装,请改为使用false布尔值。

swfobject.embedSWF("images/blank1.swf", "blank1", "747", "420", "9.0.0", false, flashvars, params, attributes); 
swfobject.embedSWF("images/blank2.swf", "blank2", "747", "420", "9.0.0", false, flashvars, params, attributes); 
swfobject.embedSWF("images/blank3.swf", "blank3", "747", "420", "9.0.0", false, flashvars, params, attributes); 
0

排序 - 设法解决(见下文)感谢大家的输入/支持! 现在唯一的问题是Internet Explorer在启动stopFlash命令的按钮上返回一个错误“对象不支持此属性或方法”,但至少它仍然有效。哎呀。

var flashvars = {}; 
var params = {wmode:"opaque", allowscriptaccess:"always" }; 
var attributes = {}; 

swfobject.embedSWF("images/clients/blank1.swf", "blank1", "747", "420", "9.0.0", false, flashvars, params, attributes); 
swfobject.embedSWF("images/clients/blank2.swf", "blank2", "747", "420", "9.0.0", false, flashvars, params, attributes); 
swfobject.embedSWF("images/clients/blank3.swf", "blank3", "747", "420", "9.0.0", false, flashvars, params, attributes); 


function getFlashMovie(movieName) { 
var isIE = navigator.appName.indexOf("Microsoft") != -1; 
return (isIE) ? window[movieName] : document[movieName]; 
} 


function stopFlash(){ 
getFlashMovie("blank1").commandFlash(); 
getFlashMovie("blank2").commandFlash(); 
getFlashMovie("blank3").commandFlash(); 
return true; 
}