2010-07-14 3 views
0

Je travaille avec URLLoader et URLRequest dans ce cas.En utilisant AS3, devrais-je déclarer des variables globalement ou dans une fonction seulement quand elles sont nécessaires?

J'ai deux boutons. On écoute pour l'événement clic de souris et exécute ensuite la fonction suivante (moins de code pas applicable à cette question):

function loadURL (e:MouseEvent):void { 

    .... 

    var myRequest:URLRequest=new URLRequest("*URL*"); 
    myRequest.method=URLRequestMethod.POST; 
    myRequest.data=postVars; 

    var myLoader:URLLoader = new URLLoader(); 
    myLoader.load(myRequest); 

    .... 

} 

L'autre bouton, lorsque vous cliquez dessus, appelle une autre fonction, par exemple resetAll, qui remet à zéro alors la « session "en supprimant toutes les variables actuelles et en annulant tout ce qui est en cours. Dans cette fonction, je veux appeler myLoader.close(myRequest); mais myLoader n'est pas accessible depuis resetAll.

Dans ce cas, devrais-je déclarer var myRequest:URLRequest=new URLRequest("*URL*"); et var myLoader:URLLoader = new URLLoader(); en dehors de la fonction même si je n'en ai pas encore besoin?

Je pense qu'il me manque quelques connaissances de bon sens sur AS3 ici, mais je ne sais pas ce que c'est. Il serait apprécié que quelqu'un puisse me renseigner sur les meilleures pratiques dans ce cas.

Répondre

2

Vous pouvez déclarer une variable URLLoader globalement et utiliser une déclaration locale ou une variable URLRequest. URLRequête est de toute façon que vous devez recréer pour chaque nouvelle demande, en les déclarant localement serait plus sûr pour GC de le collecter après son utilisation. URLLoader ne crée aucune création à chaque fois, vous pouvez simplement passer un nouvel objet URLReqest dans la méthode Load chaque fois que vous voulez charger quelque chose à partir du serveur.

0

Si cette fonction n'est exécutée qu'une seule fois, vous pouvez utiliser les variables depuis l'intérieur de la fonction. Si cette fonction est exécutée plus d'une fois dans la durée de vie de l'application, vous devez déclarer les variables une seule fois, puis les reconfigurer ou les réinstaurer. Une autre chose, si vous avez besoin d'utiliser ces variables en dehors de la fonction alors vous devriez bien sûr les déclarer globalement. (resetAll)

+0

Nous vous remercions de votre réponse. Que voulez-vous dire par "si cette fonction est exécutée une seule fois"? – Structure

+0

Si l'exécution de cette fonction est une chose ponctuelle dans votre application (à la création complète par exemple) si elle est exécutée de façon répétée sur demande d'utilisateur ou autre logique d'application, vous devez utiliser les variables globales. – KensoDev

0

Dans certains cas, les fermetures sont très utiles. (Spécialement pour gérer des événements ou contrôler des codes asynchrones.) Vous pouvez conserver toutes les références des variables locales à la fois. Mais quand le code source des fermetures devient énorme dans la fonction, vous devriez penser à les déplacer dans une autre classe.

Voici un exemple

Closure Example - wonderfl build flash online

Une chose que vous pouvez penser est le coût des fermetures. L'exécution de fermetures coûte beaucoup plus cher que les codes habituels, mais elle est négligeable pour les cas ordinaux.

Questions connexes