Flash, Actionscript 3: Verwendung von get / set-Eigenschaften Werte von den anderen Klassen erhalten schafft viel doppelten Code kann es anders `?

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

Frage

Ich bin mit get und Setter in meinem AS3-Code zu bearbeiten Werten einer anderen Klasse (weil diese Variablen werden gemeinsam) i wie nicht jedes Mal stage.sharedVar.isScrabble in meinem Code zu setzen, eine Variable zu ändern, damit ich gewöhnungs / set-Funktionen

siehe unten

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}

, wie Sie van sehen es hat eine Menge von doppeltem Code jedes Mal der „Rückkehr stage.sharedVar.“ und der "stage.sharedVar." + der Wert + "= val" ist ständig comming zurück.

Ich frage mich, gibt es eine andere Möglichkeit, diese get / Sätze zu schaffen? so etwas wie:

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

und so weiter ??

Danke, Matthy

War es hilfreich?

Lösung

Wenn ich Ihre Frage verstehen, wollen Sie nur erhalten und mehrere Eigenschaften für ein Objekt festgelegt. Je nach Situation könnten Sie versuchen:

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
}

Diese Funktionen können Sie angeben, und Zugriff auf die Eigenschaften, die Sie wollen, und Sie werden nicht die Funktionen zu halten haben zu ändern. Es bedeutet, dass, wenn Sie Supernetz ändern, etwas anderes zu sein, man kann nicht einfach die Funktion ändern, müssen Sie ändern, wohin man die get und setProperty verwenden. Aber es bedeutet, dass Sie auf neue Funktionen nicht halten zu schreiben.

Hope, das hilft.

Andere Tipps

If you're in flex builder, download the web standard toolkit from http://download.eclipse.org/releases/galileo/ and use "snippets" to write these for you.

Otherwise, if you really need to do this within the program at run-time, you can make a wrapper proxy class to do all kinds of things: http://ltslashgt.com/2008/01/24/proxy-class-as3/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top