Flash and External Javascript

Flash and External Javascript

本文关键字:Javascript External and Flash      更新时间:2023-09-26

可能重复:
用JavaScript 调用Flash ExternalInterface

我有一个带有AS代码的闪存文件。我想运行Javascript,它将运行一个函数AS。例如:在AS中,我有一个名为"loadXML"的函数。保存SWF文件的对象称为"pawel"(对象的ID)。如何运行将在"pawel"函数"loadXML"上运行的Javascript代码?我正在将Flash 6与AS 3一起使用。

您应该使用ExternalInterface.addCallback()方法。看见http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html#addCallback()了解详细信息。

我建议您检查一下http://www.redcodelabs.com/2012/04/calling-actionscript-method-from-javascript/它有运行示例和as3/js代码。

我相信这里的目标是将xml文件的位置发送给swf(它已经编译了一个外部.as文件),以便swf可以编译、解析和创建一些东西。

我已经用flash变量做过很多次了,这可能对你也有用。在网页中嵌入.swf时,您可以通过js或html或php动态地向其发送flash变量。一旦我的fla与硬编码变量(如xml)完美结合,我就会将flash变量代码添加到头部,并对fla进行一些小的调整——这通常会使fla无法在flash中"正常"运行(因为它现在依赖于这些外部变量)

不管怎样,以下是我如何进行flash vars(还有其他方法,值得在谷歌上好好搜索)

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/