0

したがって、as3にはポインターがないことはわかっていますが、オブジェクト変数をポインターとして使用する方法があるのではないかと思いました。

現在、get関数を取得する関数を渡すことに依存していますが、これは次のような非常に洗練されたソリューションではありません。

myvar = function():int{return objectName.getVarValue};

もう1つのオプションは、すべてのgetsメソッドとsetメソッドをget関数とset関数に変更するか、これらをに追加することです。名前だけを格納するリンククラスを作成することもできますが、それは大きな頭痛の種です。

これよりも複雑なことをせずに、オブジェクトの変数の最新の値を取得する方法が本当にないことを誰かが私に確認できますか?


ほぼMVCのように、基本的に3つの関係者が関与します。1つのオブジェクトはコントローラーであり、「ビュー」のどの値をどのデータキーと一致させるかを指示します。ビューは一種のダムであり、データ/モデルも同様であるため、すべてがコントローラーを介して、これらのイベントが重複する順序で実行されます。したがって、最初にすべての異なるパラメーターを定義することにより、データ取得をデータキーに委任します。後で、更新を呼び出してデータキーを選択するだけで、データを取得できます。今、私はこのように作成している関数を介して値にリンクされたコンストラクターを持っています

onUpdate:function():int{return objectName.getVarValue};

それよりも少し複雑ですが、それが要点です。Flexではデータバインディングを実行できますが、これはFlexであり、AS3ではなく、正確にはポインターでもありません。

as3がおそらくas4でポインタを実行できることを望みますか?知らなかった関数としてゲッターを取得する方法があるのではないかと思いました。

4

3 に答える 3

1

参照はポインタのように動作するため、オブジェクト自体を渡すだけです。動的プロパティを使用して、独自のデータバインディングを作成できます。ビューをデータモデルに接続する場合、コントローラーはデータソースオブジェクトとのデータバインディング、データソースにバインドするプロパティの名前、およびビューにバインドするプロパティの名前を作成します。

view.AddBinding(dataObjectName, "somePropertyOnObject", "propertyNameOnView");

これらは、作成したある種のBindingクラスに格納でき、AddBindingを呼び出すたびに、コレクションに追加します。おそらく、特定の「propertyNameOnView」に重複がないことを確認します。データオブジェクトのプロパティ更新イベントに応答する必要がある場合は、次のように割り当てを行います。ただし、Bindingオブジェクトから文字列を取得し、Bindingsのコレクション全体を反復処理して、の完全な更新を実行する場合を除きます。景色:

this["propertyNameOnView"] = dataObjectName["somePropertyOnObject"];

しかし、バインディングオブジェクトを使用すると、次のようになります。

someBinding.DestinationObject[someBinding.DestinationProperty] = 
  someBinding.DataSource[someBinding.SourceProperty];

このコードをUpdateメソッドを介して公開されたBindingオブジェクト自体に直接配置して、特定のバインディングでUpdate()を呼び出すだけで、データモデルのプロパティからビューのプロパティにデータを表示することもできます。

これは、動的プロパティに慣れていない場合に開始するための動的プロパティに関する情報です。http: //www.colettas.org/?p = 17

于 2010-02-01T07:21:18.553 に答える
0

値のためにオブジェクトをヒットしないのはなぜですか?特定の時間に特定の値が必要でない限り、なぜ別の変数に格納する必要があるのですか?

于 2010-01-30T01:12:45.390 に答える
0

オブジェクトの変数の最新値を取得する方法-Daniel

あなたが何を達成しようとしているのかははっきりしていません。たぶん、あなたがこれを単にあなたの要件を満たさない理由を説明することができれば?

myvar = return objectName.getVarValue;
于 2010-01-30T01:18:29.720 に答える