ExternalInterface 是你的朋友:
http ://help.adobe.com/nl_NL/Flash/CS5/AS3LR/flash/external/ExternalInterface.html
使用 ExternalInterface 时的一些提示:
- 在 html 嵌入代码中设置
allowScriptAccess
为“始终”
- 确保 flash 在您的 html 代码中有一个 id
一些简单的例子:
1.从javascript中抓取一个值到flash
// actionscript 3 code
if (ExternalInterface.available)
{
var url:String = ExternalInterface.call("document.location");
// output to textfield
var t:TextField = new TextField();
addChild(t);
t.text = url;
}
2.从flash调用一个带参数的函数
// actionscript 3 code
if (ExternalInterface.available)
{
var result:String = "Flash rocks"
ExternalInterface.call("alert", result);
}
3.从javascript调用一个带参数的函数到Flash:
// javascript
window.onLoad = function()
{
document.getElementById('flashId').doSomething("javascript rocks");
}
.. 和
// actionscript 3
if (ExternalInterface.available)
{
ExternalInterface.addCallback("doSomething", handleSomethingFromJavascript);// links js function to as3 function
function handleSomethingFromJavascript(value:String):void
{
// output to textfield
var t:TextField = new TextField();
addChild(t);
t.text = value;
}
}
您可以在 flash 和 javascript 之间做很多事情,因为您可以看到集成几乎是无痛的!唯一需要注意的是,在 flash 中 ExternalInterface 不可用,因此您必须在浏览器中进行测试。您可以使用wmode="transparent"
. 您不能使用display:none
or visibility
(css),因为这样闪存不会执行或动作较慢。为了确保它继续运行,请将它position:fixed
(css)放在页面的角落或其他地方。浏览器使 Flash 对象在屏幕外或非活动时(即在非活动选项卡中)以一种睡眠模式运行(较慢)