Yuv*_* A. 5 javascript flash actionscript-3 externalinterface
据Adobe称,嵌入Flash对象的"现代"更新方式:
<object id="theFlash" name="theFlash" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
width="400" height="225" align="middle">
<param name="movie" value="theflashfile.swf" />
<param name="allowScriptAccess" value="always" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash"
data="getStreamFrame.swf" width="400" height="225">
<param name="allowScriptAccess" value="always" />
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflash">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
</a>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
Run Code Online (Sandbox Code Playgroud)
尝试在SWF中调用AS3函数时,从Javascript:
var flashObj = document.getElementById('theFlash');
flashObj.someASFunction();
Run Code Online (Sandbox Code Playgroud)
(在AS方面:)
import flash.external.*;
function someASFunction() {
//show some text
}
ExternalInterface.addCallback("someASFunction", someASFunction);
Run Code Online (Sandbox Code Playgroud)
这不会在Firefox和Chrome的工作.闪光灯工作和加载.flashObj确实获得了对象的引用,但someASFunction未定义且不会被调用.
如果我用embed标签替换object标签:
<embed id="theFlash" name="theFlash" height="225" width="400" align="middle"
type="application/x-shockwave-flash" allowscriptaccess="always"
src="theflashfile.swf" />
Run Code Online (Sandbox Code Playgroud)
然后它适用于Firefox和Chrome(AS函数被调用并正常工作) - (虽然它在IE中不起作用).
怎么用对象标签不起作用?
使用embed标签而不是object标签有多"安全"?它不是过时的吗?
注意,它绝对不是时间问题 - 如果我从一个onclick函数调用JS的AS函数 - 那么结果是相同的.
小智 1
对于静态嵌入(我更喜欢),我使用这段代码(这个代码用于我的隐形 mp3 播放器):
<object style="position:fixed" id="1pixPlayer" width="1" height="1" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param value="transparent" name="wmode">
<param value="1pxMp3.swf" name="movie">
<param value="always" name="allowScriptAccess">
<embed name="1pixPlayer" width="1" height="1" type="application/x-shockwave-flash" wmode="transparent" allowscriptaccess="always" src="1pxMp3.swf"></object>
Run Code Online (Sandbox Code Playgroud)