我有一个带有 AS 代码的 flash 文件。我想运行将运行 AS 函数的 Javascript。例如:在 AS 我有一个名为“loadXML”的函数。保存名为“pawel”的 SWF 文件的对象(对象的 ID)。如何运行将在“pawel”函数“loadXML”上运行的 Javascript 代码?我正在使用带有 AS 3 的 Flash 6。
3 回答
我建议你检查这个http://www.redcodelabs.com/2012/04/calling-actionscript-method-from-javascript/它有运行示例和 as3/js 代码。
你应该使用ExternalInterface.addCallback()
方法。有关详细信息,请参阅http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html#addCallback ()。
我相信这里的目标是向 swf(已编译外部 .as 文件)发送 xml 文件在服务器上某处的位置,以便 swf 可以编译、解析和创建某些内容。
我已经做过很多次了,使用闪存变量,这对你也可能有用。在您的网页中嵌入 .swf 时,您可以通过 js 或 html 向其发送 flash 变量,或使用 php 动态发送。一旦我的 fla 与硬编码的变量(如 xml)完美配合,我就会将 flash 变量代码添加到头部并对 fla 进行一些小的调整——这通常会破坏 fla 在 flash 中“正确”运行(因为它是现在取决于这些外部变量)
无论如何,这就是我如何做我的闪存变量(还有其他方法,值得一个好的谷歌搜索)
import flash.net.*;
var flashVars:Object = new Object();
flashVars = this.loaderInfo.parameters;
var xmlVal;
for (var item:String in flashVars)
{
switch (item)
{
case "xmlLocation" :
xmlVal = String(flashVars[item]);
break;
}
}
这是发送值的javascript:
<script type="text/javascript">
//flashObj
var flashvars = {};
flashvars.xmlLocation = "http://google.com/myXML.xml";
var params = {wmode:"transparent"};
var attributes = {};
swfobject.embedSWF("images/banner.swf", "yourSliderId", "175", "300", "9.0.0", false, flashvars, params, attributes);
</script>
这是使用 SWFObject(一个开放的 API flash 嵌入 js 库)来处理 swf 嵌入。我更喜欢它,因为如果您查看上面的代码,您可以阅读并理解它,默认方式真的很难阅读、编辑和理解。
如果您只需要 XML,然后就完成了,那么这对您有用。如果您仍然需要使用 javascript 说点击“下一个”或“上一个”按钮,请参阅此网站文章,我相信这可能会进一步帮助您:http: //arrixlive.wordpress.com/2005/03/25 /javascript-in-love-with-flash-control-swf-from-javascript/