0

他のクラスの値を編集するためにas3コードでgetとsetterを使用しています(これらの変数は共有されているため)変数を変更するたびに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}

ご覧のとおり、「returnstage.sharedVar」のたびに重複するコードがたくさんあります。そして、「stage.sharedVar。」+値+「=val」は常に戻ってきます。

これらのget/setを作成する他の方法があるのだろうかと思っていましたか?何かのようなもの?:

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

等々??

ありがとう、マシー

4

3 に答える 3

1

それ以外の場合、実行時にプログラム内でこれを行う必要がある場合は、ラッパープロキシクラスを作成して、あらゆる種類の処理を実行できます。http: //ltslashgt.com/2008/01/24/proxy-class-as3 //

于 2010-07-04T02:00:22.603 に答える
1

私があなたの質問を理解しているなら、あなたはただオブジェクトに複数のプロパティを取得して設定したいだけです。状況に応じて、次のことを試すことができます。

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を使用するすべての場所を変更する必要があります。しかし、それはあなたが新しい関数を書き続ける必要がないことを意味します。

お役に立てれば。

于 2010-07-05T16:36:08.933 に答える
1

flex Builderを使用している場合は、http: //download.eclipse.org/releases/galileo/からWeb標準ツールキットをダウンロードし、 「スニペット」を使用してこれらを作成してください。

于 2010-07-04T01:57:00.580 に答える