Flash、ActionScript 3:Get/SETプロパティを使用して他のクラスから値を取得すると、多くの重複コードが作成できますか? `
-
02-10-2019 - |
質問
AS3コードでGETとセッターを使用して他のクラスの値を編集しています(これらの変数が共有されているため)stage.sharedvar.isscrabbleを使用して、変数を変更して、get/set関数を使用して使用します
下記参照
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}
バンがわかるように、「return stage.sharedvar」のたびに、多くの重複コードがあります。 「stage.sharedvar。」 + value + "= val"は常に戻ってきています。
これらのget/setを作成する他の方法があるのだろうかと思いましたか?何かのようなもの?:
private function get variable1(){getValue("hisOwnFunctionName")}
private function set variable1(val){setValue("hisOwnFunctionName")}
等々??
ありがとう、マッシー
解決
私があなたの質問を理解しているなら、あなたはただオブジェクトに複数のプロパティを取得して設定したいだけです。あなたの状況に応じて、あなたは試すことができます:
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
}
これらの機能により、必要なプロパティを設定およびアクセスできるようになり、関数を変更し続ける必要がありません。 SuperGridを他の何かに変更する場合、関数を変更するだけでは、GetとSetPropertyを使用するすべての場所を変更する必要があることを意味します。しかし、それはあなたが新しい機能を書き続ける必要がないことを意味します。
お役に立てれば。
他のヒント
フレックスビルダーにいる場合は、からWeb Standard Toolkitをダウンロードしてください http://download.eclipse.org/releases/galileo/ そして、「スニペット」を使用してこれらを書きます。
それ以外の場合、実行時にプログラム内でこれを行う必要がある場合は、ラッパープロキシクラスを作成して、あらゆる種類のことを行うことができます。 http://ltslashgt.com/2008/01/24/proxy-class-as3/