2010-03-25 43 views

回答

1

WHIS AS3,沒有更多的觀察名單。 Adobe Livedoc建議將代理模式與setter和getter一起使用。

這裏是一類不一樣的手錶對象,是很容易,代理使用方法:

package 
{ 
    import flash.events.Event; 
    import flash.events.EventDispatcher; 
    public class Model extends EventDispatcher 
    { 
     public static const VALUE_CHANGED:String = 'value_changed'; 
     private var _number:Number = Number; 
     public function Model():void 
     { 
      trace('The model was instantiated.'); 
     } 
     public function set number(newNb:Number):void 
     { 
      _number=newNb; 
      this.dispatchEvent(new Event(Model.VALUE_CHANGED)); 
     } 
     public function get number():Number 
     { 
      return _number; 

     } 
    } 
} 

_number變量,變量類型可以通過必要的操作類型替換。

用法:

var objectToWatch:Model = new Model(); 
objectToWatch.addEventListener(Model.VALUE_CHANGED, onValuedChanged); 

function onValuedChanged(e:Event) { 
    //do what you need here 
} 
+0

感謝o15a3d4l11s2。這很有趣,如果我真的需要陷入一個對象來調試它,它會很有用。 如果Adobe可以再次添加一個監視列表,那麼對於更偶然的場景,也許還會添加將鼠標懸停在調試器中的屬性和字段以查看其值的功能。 – 2010-03-27 12:35:05

+0

因此,基本上,沒有辦法象AS2那樣「觀察」AS3中的* existing *對象定義的屬性。您必須修改對象的類定義,將追蹤語句添加到其getter和setter中,或者將您要觀看的每個對象的基類更改爲「Proxy」的一些自定義實現,該自定義實現會覆蓋「setProperty」方法以跟蹤或分派事件當值改變...當然。 – Triynko 2012-08-28 17:11:32