2

作为一个 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' 且具有正确值的变量。

这些记录在这里

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

4

2 回答 2

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 电影之间传递信息的推荐方式,它肯定比仅使用硬编码值更动态和强大。

于 2009-08-12T12:05:21.930 回答
0

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

'flashvars', 'param=value',

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

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

于 2009-08-12T11:06:56.947 回答