2010-02-03 6 views
0

j'ai une zone de texte (dynamique) dont la valeur est modifiée par javascript en utilisant la méthode setVariable.Actionscript sur les gestionnaires de changement

Bascially Je suis maintenant coincé à obtenir l'application flash pour reconnaître quand la valeur de zone de texte a été modifié, onKeyUp etc .. ne semblent pas fonctionner.

Le code ci-dessous fonctionne si les types d'utilisateur dans la boîte, mais si elle est modifiée par JS, il ne capte pas le changement, therfore pas peuplant mes variables. Quel auditeur dois-je utiliser?

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); 
+0

Que voulez-vous dire, la valeur est modifiée par JavaScript? Essayez-vous de changer flashvars via JavaScript? – poke

Répondre

0

Au lieu de manipuler directement les données dans la zone de texte, au lieu acheminer votre appel à une fonction javascript actionscript interne qui permettra à la fois remplacer/ajouter les données et déclencher votre fonction programatically de onChange de manière synchrone.

Par exemple, si vous avez un film flash et donnez l'objet et Embed le même exemple 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> 

Vous pouvez alors déclencher des fonctions actionscript et modifier les variables à l'intérieur du flash en utilisant un javascript simple tel que :


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

maintenant, vous pouvez facilement attacher un écouteur à la variable, « myTextAreaConents » dans l'exemple ci-dessus, en attendant des changements. A quel moment il déclencher une fonction pour remplir un nouveau contenu des variables dans la zone de texte.

+0

Comme la classe ExternalInterface? – Richard

+0

J'ai mis à jour ma réponse avec un exemple. Faîtes moi savoir si vous avez d'autres questions. – DoctorLouie

Questions connexes