我有一個Main.fla(由Main.as控制),它有一個名爲Slide的小孩(由另一個類Slide.as控制的Movieclip)。這是在ActionScript 3中的依賴注入?
有時,我的Slide對象必須在他父親Main對象上調用方法「nextSlide」。要做到這一點我想「this.parent.nextSlide()」,但我得到這個錯誤:
1061:通過靜態類型flash.display使用的引用調用可能未定義的方法nextSlide:級DisplayObjectContainer。
所以,我試圖通過構造函數傳遞父對象:
VAR幻燈片:幻燈片=新的幻燈片(這)
而且,在我的Slide類,一個用這樣的:
public function Slide(myParent:Main) {
this.myParent = myParent;
}
...
myParent.nextSlide();
這是正確的嗎?這是依賴注入嗎?
謝謝。
在一個側面說明你應該重組你如何創建所有這些。我喜歡將OOP看作是試圖對現實生活中存在的東西進行建模,並抽象和封裝信息。因爲現實生活中的物體不會改變,所以你的物體不應該改變太多。因此,Slide對象不應該控制Main類。幻燈片應該只包含可能的圖像,幻燈片編號等。控制類將接受更改幻燈片的輸入,然後通知主。使用事件監聽器和調度是獲取不同對象進行通信的好方法 – Allan 2009-11-04 23:27:37