2010-07-28 7 views
0

Je connais donc la syntaxe MXML standard de BlazeDS pour créer des objets distants. Ex:Création libre de BlazeDS RemoteObjects

<s:RemoteObject id="sim" destination="SimulationWebService" > 
     <s:method name="getAvailableTargetNames" result="setTargetNames(event)" /> 
     <s:method name="getAvailableToolNames" result="setToolNames(event)" /> 
     <s:method name="getAvailableActionNames" result="setActionNames(event)" /> 
     <s:method name="simulate" result="resetFields(event)" /> 
    </s:RemoteObject> 

Mais ce n'est pas tout à fait ce que je veux faire. Cela me force à créer une instanciation de la classe derrière SimulationWebService dès que la page se charge, alors que je peux vouloir faire une variété de choses différentes en fonction des actions de l'utilisateur, y compris ne pas en créer un du tout. Comment créer ce même objet à partir d'ActionScript?

Répondre

0

Je ne sais pas si je comprends bien. Voulez-vous dire que le code provoque la création d'une instance du service distant? Si oui, c'est incorrect. Rien sur le serveur n'est créé jusqu'à ce que vous exécutiez le service. Je crois en utilisant la méthode send(). Ou êtes-vous en train de dire que ce code provoque la création d'une instance de RemoteObject nommée sim dans votre application Flex? Si c'est le cas, alors c'est probablement vrai, bien que nous ne puissions pas dire avec certitude avec seulement l'extrait de code que vous avez fourni.

Vous pouvez créer le RemoteObject sous condition dans ActionScript. Ou vous pouvez créer RemoteObject dans un composant autre que le composant principal et initialiser ce composant pour effectuer des appels à distance.

+0

Bien que je puisse me tromper, ce que je voulais dire, c'est que lors du chargement de la page, le constructeur de la classe derrière SimulationWebService est appelé. Ce que je voulais faire était de créer un objet en utilisant la destination à partir d'ActionScript au lieu de MXML. – duckworthd

+0

Pour en créer un dynamiquement lors de l'exécution, faites juste quelque chose comme: var ro: RemoteObject = new RemoteObject(); ro.destination = "SimulationWebService"; ro.endpoint = "/ foo/messagebroker/amf"; ro.addEventListener ("result", function (event: Evénement): void { // fait quelque chose }); Plus de détails sur RemoteObject ici: http://help.adobe.com/fr_FR/FlashPlatform/reference/actionscript/3/mx/rpc/remoting/RemoteObject.html?allClasses=1 –

+0

Merci James! Exactement ce que je cherchais. – duckworthd