2011-01-13 8 views
0

私はProxyクラスを拡張するクラスを持っている、とnumと呼ばれる静的に定義されたメンバ変数を持っていますActionscript - クラスの事前定義されたプロパティの取得をオーバーライドする方法は?

public dynamic class TestProxy extends Proxy 
{ 
private var num:Number = 100; 

public function TestProxy() 
{ 
    super(); 
} 

override flash_proxy function getProperty(name:*):* 
{ 
    trace("***** "+name); 
} 
} 

私がアクセスnumをしようとしたときのgetProperty()が呼び出されることにしたいです。これは、既存のフィールドには有効ですが、あらかじめ定義されているフィールドには適用されません。

これを実現する方法はありますか?何とか動的にnumを取り除くことはできますか?または、他の何か?

+0

。 –

答えて

0

もし、あらかじめ定義されているのであれば、getter/setterメソッドとプライベートvarへのプロキシアクセスを使用できないのですか?

private var _num:Number = 100; 
//.... 
function get num() : Number { } 
function set num (val : Number) : void { } 
+0

これはまさに私が避けようとしていることです。インスタンス化時にクラス内にデータが存在しないため、プロパティを取得するときにプロパティが遅延して検索されるモデルオブジェクトを定義しようとしています。ただ1つのオブジェクトではなく、潜在的に数十です。これらのゲッター/セッターを書くことは**それぞれのプロパティーの**まったく同じこと**を行うことはひどい面倒であり、本当に汚れているようです。 – Fragsworth

+0

@ Fragsworth - Gotcha –

0

Proxyにクラスのプライベート事前定義プロパティをアクセスさせる方法はありません。あなたはそれがアクセスしたい場合は、それは公開する、または変数の名前を変更し、その後num呼び出しに応答のいずれか:それはプライベートなので、このクラスの外にそれは不定となりますので、あなたは `num`を呼び出しているとき

public dynamic class TestProxy extends Proxy 
{ 
    private var _num:Number = 100; 

    public function TestProxy() 
    { 
     super(); 
    } 

    override flash_proxy function getProperty(name:*):* 
    { 
     if (name == "num") 
     { 
      return _num; 
     } 
    } 
} 
関連する問題