有没有办法将属性从HTML页面传递到使用Flex创建的Flash应用程序?

有没有办法将属性从HTML页面传递到使用Flex创建的Flash应用程序?,flash,apache-flex,actionscript-3,actionscript,Flash,Apache Flex,Actionscript 3,Actionscript,我想在包含使用Flex 3创建的Flash的HTML中指定一个字符串值。这个值是Flex代码使用的URL,我希望其他开发人员能够更新它。我该怎么做?我正在使用Flex Builder 3。您可以尝试使用javascript,或者直接使用 如果您只想传入一个参数,那么使用flashVars可能会更容易。您可以尝试使用javascript,或者只使用 如果您只想传入一个参数,那么使用flashVars可能更容易。flashVars将是最简单的解决方案 SWF的嵌入代码: <object wid

我想在包含使用Flex 3创建的Flash的HTML中指定一个字符串值。这个值是Flex代码使用的URL,我希望其他开发人员能够更新它。我该怎么做?我正在使用Flex Builder 3。

您可以尝试使用javascript,或者直接使用


如果您只想传入一个参数,那么使用flashVars可能会更容易。

您可以尝试使用javascript,或者只使用


如果您只想传入一个参数,那么使用flashVars可能更容易。

flashVars将是最简单的解决方案

SWF的嵌入代码:

<object width="300" height="250">
    <param name="flashvars" value="var1=hello&var2=world" />
    <embed src="file.swf?var1=hello&var2=world" width="300" height="250" />
</object>

FlashVars将是最简单的解决方案

SWF的嵌入代码:

<object width="300" height="250">
    <param name="flashvars" value="var1=hello&var2=world" />
    <embed src="file.swf?var1=hello&var2=world" width="300" height="250" />
</object>

正如Alex Jillard和Marty所指出的,您可以使用
flashvars
将数据传递给Flash应用程序。但是,这种方法只有在应用程序加载时存在希望传递的数据时才可行

如果希望在应用程序生命周期内的任何时间点将数据传递给Flash应用程序,可以通过在应用程序中为此目的创建一个方法,将该方法添加到应用程序的
ExternalInterface
(Alex提到过),然后用Javascript调用该方法来实现

假设Flash应用程序在HTML中表示为名为
FlashDomeElement
的DomeElement,并且前面提到的方法名为
acceptData
,则可以将该方法添加到应用程序的外部接口,如下所示:

//ActionScript
ExternalInterface.addCallback("acceptData");
并使用DomeElement调用该方法,如下所示:

//Javascript
flashDOMElement.acceptData(/*arg1, arg2, ... */);
您希望这样做(使数据可供其他开发人员修改)的原因使我相信,您可能希望在Flash应用程序收到这些数据后保留这些数据。可以使用本地共享对象执行此操作

如果我的假设是正确的,这是一个解决方案,你可能想看看。它是一个Javascript库,建立了一个统一的接口,可用于在所有本机和一些非本机存储设施(包括Flash本地共享对象)中执行公共存储操作

有了它,创建LSO可以通过以下简单代码完成:

bakedGoods.set({
    data: [{key: "key", value: "value"}],
    storageTypes: ["flash"],
    complete: function(byStorageTypeRemovedItemKeysObj, byStorageTypeErrorObj){/*code*/}
});

为了完全透明,BakedGoods由这里的这个家伙维护:)。

正如Alex Jillard和Marty所指出的,您可以使用
flashvars
将数据传递给Flash应用程序。但是,这种方法只有在应用程序加载时存在希望传递的数据时才可行

如果希望在应用程序生命周期内的任何时间点将数据传递给Flash应用程序,可以通过在应用程序中为此目的创建一个方法,将该方法添加到应用程序的
ExternalInterface
(Alex提到过),然后用Javascript调用该方法来实现

假设Flash应用程序在HTML中表示为名为
FlashDomeElement
的DomeElement,并且前面提到的方法名为
acceptData
,则可以将该方法添加到应用程序的外部接口,如下所示:

//ActionScript
ExternalInterface.addCallback("acceptData");
并使用DomeElement调用该方法,如下所示:

//Javascript
flashDOMElement.acceptData(/*arg1, arg2, ... */);
您希望这样做(使数据可供其他开发人员修改)的原因使我相信,您可能希望在Flash应用程序收到这些数据后保留这些数据。可以使用本地共享对象执行此操作

如果我的假设是正确的,这是一个解决方案,你可能想看看。它是一个Javascript库,建立了一个统一的接口,可用于在所有本机和一些非本机存储设施(包括Flash本地共享对象)中执行公共存储操作

有了它,创建LSO可以通过以下简单代码完成:

bakedGoods.set({
    data: [{key: "key", value: "value"}],
    storageTypes: ["flash"],
    complete: function(byStorageTypeRemovedItemKeysObj, byStorageTypeErrorObj){/*code*/}
});
为了完全透明,BakedGoods的维护者正是这个家伙:)