私はdynamic Class
を持っていますが、実行時にプロパティがクラスに追加されるたびにメソッドを呼び出しています。例えばAS2:新しいプロパティが設定されたときの呼び出しメソッド
:
dynamic class Example
{
public function Example()
{
trace("New instance created");
}
public function setter(name:String, value:String):Void
{
trace("Property '"+name+"' created with value '"+value+"'");
}
}
そして、私が例に新しいプロパティを追加するタイムラインから:
Example.newProperty = "some value";
私はそれをトレースする:
プロパティ ' newProperty 'は値' some value 'で作成されました
私はこれがそうのようにプロパティを設定する機能を使用することにより可能であることを十分に承知しています:
public function setter(name:String, value:String):Void
{
this[name] = "some value";
trace("Property '"+name+"' created with value '"+value+"'");
}
などのようにそれを呼び出す:私はこの方法がときに自動的に起動するようにしたいしかし
Example.setter("newProperty", "some value");
プロパティは通常の.dot
演算子を介して追加され、関数を明示的に呼び出す必要はありません。
これは可能ですか?
おそらく疑問がありますが、私は可能な限り簡単に他の人が使用できるようにクラスを構築しています。私は '__resolve'は誰かが割り当てられていないときに関数を呼び出さないようにオブジェクトの未割り当てのプロパティを読み込もうとすると思ったのですか? –
私はプロパティとして関数を格納しようとしていないので、後でそのプロパティを呼び出すことはありません。私が望むのは、以前に定義されていないプロパティが設定されている場合に、インスタンスが(クラスですでに定義されている)メソッドを実行することです。この場合はドロップダウンクラス用で、誰かが 'dropdown.newOption =" blah blah "'と言って新しいドロップダウンオプションを任意の時点でリストに追加できるようにすると、新しいオプションを描画して割り当てるメソッドが実行されますドロップダウンに。 –
未定義のパラメータを使用しようとしない限り、 '__resolve(x)'は呼び出されません。 'example.something'が設定されていないときは、' trace(example.something);です。 'example.something =" value "'を試みると呼び出されません。また、この方法は、私が使用するために設計している人にとっては100%簡単です。彼らはプログラマーではなく、構造やコードの真意を気にしません。構文の理解とコーディングがはるかに簡単です。 –