Flash, ActionScript 3: en utilisant les propriétés get / set pour obtenir des valeurs des autres classes crée beaucoup de code en double peut-il différent `?

StackOverflow https://stackoverflow.com/questions/3173293

Question

J'utilise get et setters dans mon code AS3 pour modifier les valeurs d'une autre classe (parce que ces variables sont partagées) je ne aime pas mettre stage.sharedVar.isScrabble dans mon code à chaque fois pour changer une variable si je l'ai utilisé get / fonctions définies

voir ci-dessous

private function get isScrabble(){return stage.sharedVar.isScrabble;} 
private function set isScrabble(val){stage.sharedVar.isScrabble = val;}  

private function get superGrid(){return stage.sharedVar.superGrid} 
private function set superGrid(val){stage.sharedVar.superGrid = val;} 

private function get gridSize(){return stage.sharedVar.gridSize} 
private function set gridSize(val){stage.sharedVar.gridSize = val}

private function get blokDefaultWidth(){return stage.sharedVar.blokDefaultWidth} 
private function set blokDefaultWidth(val){stage.sharedVar.blokDefaultWidth = val}

private function get blokDefaultHeight(){return stage.sharedVar.blokDefaultHeight} 
private function set blokDefaultHeight(val){stage.sharedVar.blokDefaultHeight = val}

comme vous le voyez van a beaucoup de code en double chaque fois que le « retour stage.sharedVar ». et le "stage.sharedVar." + la valeur + "= val" est constamment comming retour.

Je me demandais est-il une autre façon de créer ces get / ensembles? quelque chose comme:

private function get variable1(){getValue("hisOwnFunctionName")} 
private function set variable1(val){setValue("hisOwnFunctionName")}

et ainsi de suite ??

Merci, Matthy

Était-ce utile?

La solution

Si je comprends bien votre question, vous voulez juste pour obtenir et définir des propriétés multiples sur un objet. Selon votre situation, vous pouvez essayer:

private function setProperty(name:Object,value:Object):void {
    stage.sharedVar[name]=value;
}
private function getProperty(name:Object):Object {
    return stage.sharedVar[name];
}
private function example():void {
    setProperty("foo","bar");
    trace(getProperty("foo")); //prints: bar
}

Ces fonctions vous permettent de définir et d'accéder aux propriétés que vous voulez, et vous wont devez continuer à changer les fonctions. Cela signifie que si vous changez Supergrille d'être quelque chose d'autre, vous ne pouvez pas changer la fonction, vous devez changer partout où vous utilisez le get et setProperty. Mais cela ne signifie pas que vous ne devez pas continuer à écrire de nouvelles fonctions.

Hope this helps.

Autres conseils

Si vous êtes dans Flex Builder, téléchargez la boîte à outils standard web à partir de http: // téléchargement. eclipse.org/releases/galileo/ et utiliser « extraits » d'écrire ces pour vous.

Dans le cas contraire, si vous avez vraiment besoin de le faire dans le programme à l'exécution, vous pouvez faire une classe proxy wrapper pour faire toutes sortes de choses: http://ltslashgt.com/2008/01/24/proxy-class-as3/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top