Actionscript для обработчиков изменений - PullRequest
0 голосов
/ 03 февраля 2010

У меня есть текстовое поле (динамическое), значение которого изменяется javascript с помощью метода setVariable.

По сути, я застрял в том, чтобы заставить приложение флэш-памяти распознавать, когда значение текстового поля было изменено, 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);

1 Ответ

0 голосов
/ 03 февраля 2010

Вместо того, чтобы напрямую манипулировать данными внутри текстового поля, вместо этого направьте ваш вызов javascript на внутреннюю функцию actionscript, которая будет одновременно заменять / добавлять данные и программно запускать функцию onChange синхронно.

Например, если у вас есть флэш-фильм и вы даете объекту и встраиванию один и тот же пример 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>

Затем вы можете запускать функции ActionScript и изменять переменные внутри Flash, используя простой JavaScript, такой как:


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

Теперь вы можете легко прикрепить слушатель к переменной myTextAreaConents в приведенном выше примере, ожидая изменений. В это время он запустит функцию для заполнения нового содержимого переменных в текстовой области.

...