将变量从HTML传递到Flash影片中

时间:2009-08-12 11:02:19

标签: flash flash-cs4 flashvars

作为Flash新手,我发现这非常令人困惑,而且花了我几个小时。如果有人遇到同样的问题,请在这里回答我自己的问题。

从技术上讲,你应该能够做到这样的事情:

<param name="movie" value="movie.swf?param=value" />
<embed src="movie.swf?param=value" ...

或者这个:

<PARAM NAME "FlashVars" VALUE="param=value">
<EMBED .... FlashVars="param=value">

两者都应该在_root或_level0范围内创建一个名为'param'的变量,并使用正确的值。

记录在案here

但是,在我的特定版本的Flash(CS4,ActionScript 2.0)中,这不起作用。

2 个答案:

答案 0 :(得分:1)

您还可以使用 ExternalInterface 在HTML页面上调用返回值的JavaScript函数。这具有附加价值,您无需对该值进行硬编码,您可以将参数传递给JavaScript函数。

在Flash电影中:

import flash.external.ExternalInterface;

function getOutsideValue(argToJS:String):Void {
 var jsArgument:String = argToJS;
 var result:Object = ExternalInterface.call("stringAdd", jsArgument);
}

在HTML页面的Javascript中:

function stringAdd(inptStr){
 var strToAdd = inptStr;
 strToAdd += " added text";
 return strToAdd;
}

所以当你在Flash中调用ActionScript函数时:

getOutsideValue("I get");

它将返回:

I get added text

请注意,ExternalInterface也可用于从JavaScript调用Flash中的函数。这两个例子可以在这里找到:http://kb2.adobe.com/cps/156/tn_15683.html

这似乎是向SWF电影传递信息的推荐方式,它肯定比使用硬编码值更具动态性和强大性。

答案 1 :(得分:0)

对我有用的答案是修改CS4生成的HTML中的AC_FL_RunContent()函数,添加需要传递给电影的参数,例如

'flashvars', 'param=value',

似乎此函数会覆盖OBJECT和EMBED标记或查询字符串中直接指定的任何内容。

可能有更好的解决方案......