0

我有一个文本框(动态),其值由 javascript 使用 setVariable 方法更改。

基本上,我现在坚持让 Flash 应用程序识别文本框值何时更改,onKeyUp 等。似乎不起作用。

如果用户在框中键入以下代码,则以下代码有效,但如果通过 JS 更改它,它不会获取更改,因此不会填充我的变量。我应该使用什么监听器?

someListener = new Object();
someListener.onKeyUp = function () {
 var StationName = StationBox;
 var Test = "the station is:" + StationName;
 trace(Test);
 _global.StationNameGlobal = StationBox;
 OutputTxt = "TEST";
}
Key.addListener(someListener);
4

1 回答 1

0

与其直接操作文本框中的数据,不如将您的 javascript 调用路由到一个内部 actionscript 函数,该函数将替换/附加数据并以编程方式同步触发您的 onChange 函数。

例如,如果您有一个 flash 电影并为对象和嵌入提供相同的 ID 示例:


<object ID="myMovie" CLASSID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" WIDTH="230" HEIGHT="50" CODEBASE="download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0">
<PARAM NAME="MOVIE" VALUE="some.swf">
<param NAME="PLAY" VALUE="true">
<param NAME="LOOP" VALUE="false">
<param NAME="QUALITY" VALUE="high">
<param NAME="MENU" VALUE="false">
<param NAME="WMODE" VALUE="transparent">
<embed ID="myMovie" wmode="transparent" SRC="some.swf" WIDTH="230" HEIGHT="50" PLAY="true" LOOP="false" QUALITY="high" MENU="false" TYPE="application/x-shockwave-flash" PLUGINSPAGE="www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
</embed>
</object>

然后,您可以使用简单的 javascript 触发 actionscript 函数并更改 flash 内的变量,例如:


function changeTheField(incomingText) {
    var controlledMovie = document.myMovie;
    controlledMovie.SetVariable("_root.myTextAreaConents", incomingText);
}

现在,您可以轻松地将侦听器附加到上面示例中的变量“myTextAreaConents”,等待更改。此时它会触发一个函数来将变量的新内容填充到文本区域中。

于 2010-02-03T11:44:10.533 回答