0

J'ai un swf (hôte) Flash CS4 AS3 qui charge un swf Flash 8 AS2 (client) en utilisant swfBridge de gSkinner.Comment appeler une fonction dans un swf AS2 hébergé par un swf AS3 et renvoyer un tableau à swf AS3? (en utilisant SwfBridge)

Cela fonctionne très bien et l'hôte peut appeler des fonctions dans le client sans problème. Cependant, je veux être en mesure d'appeler une fonction dans le client et que cette fonction renvoie un tableau à l'hôte.

Ceci est le code que je pensais que cela fonctionnerait -

Hôte (AS3) Code -

var hostArray:Array = new Array(); 
hostArray = mySwfBridge.send("getArray"); 

client (AS2) Code

var theArray = new Array("item1, item2, item3); 
function getArray() :Array { 
    return theArray; 
} 

des idées?

Répondre

2

Le problème que vous avez rencontré est que le LocalConnection (utilisé par SwfBridge) appelle-t-il de manière asynchrone. En d'autres termes, l'exécution du script appelant n'arrêtera pas son exécution pour attendre un résultat de la fonction invoquée.

Si vous devez récupérer une valeur de l'autre côté du LocalConnection, vous devez le configurer pour fonctionner de manière bidirectionnelle. c'est-à-dire que votre script client doit renvoyer son résultat à une méthode de rappel sur l'objet hôte via LocalConnection (SwfBridge dans ce cas) au lieu de le faire via return.

+0

Merci Théo, par une méthode de rappel, voulez-vous dire que lorsque la fonction appelée est terminée, j'appelle simplement une fonction dans l'appelant d'origine pour gérer ce qui aurait été envoyé par l'instruction return. J'avais pensé à cela mais je pensais que c'était un peu désordonné ... si c'est le seul moyen cependant ... merci beaucoup :) – undefined

Questions connexes