看板 Flash 關於我們 聯絡資訊
例如說 我現在引入類別 C File: C.as package{ public class C{ public var v = 0; public function C(){ ... this.an_obj_in_C.addEventListener(Event.Trigger, f() ); } private function f(){ this.v = 1; } } } 而 我在主程式test.fla中寫道 var c:C = new C() trace(c.v); 然後很快地 c.v因為事件在下指令後還未被觸發 因此trace到的值都會是0 請問 如果我想要等到事件被觸發後才去存取c.v的值 除了目前我想到的方法 就是去修改C類別的定義 把addEventListener的工作拔出來 放到test.fla 也就是把這些加到主程式中 c.an_obj_in_C.addEventListener(Event.Trigger, f()); function f(){ c.v = 1; } 但是 還有什麼方法可以不必動到太多類別的定義 也達到相同目的呢? 另外一個問題 如果我想在引入的類別的函式中 使用主程式的變數(呃 大概就是指MainTimeLine下的變數吧) 要怎麼寫呢? 我有試過例如 trace(this.parent) 可是會顯示undefined 還是說 這兩個妄想 可能根本就違反了物件導向設計的原則呢?XD 謝謝各位m(__"__)m -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 221.169.194.146
cjcat2266:是addEventListener(Event.Trigger, f); 08/29 10:33
cjcat2266:還有其時我看不太出來你想要達到的目的耶 08/29 10:34
cjcat2266:你想要這麼做,是想要有什麼具體上的應用嗎? 08/29 10:35
cjcat2266:至於為什麼你this.parent會是undefined 08/29 10:37
cjcat2266:因為你這個class沒有繼承DisplayObject 08/29 10:37
cjcat2266:沒有parent這個property,而且沒有被addChild 08/29 10:38
cjcat2266:所以不管怎麼做,他都沒有所謂的parent 08/29 10:38
cjcat2266:然後就是,你這樣並沒有違反OOP的原則 08/29 10:40
cjcat2266:只是...沒有用到OOP的概念 08/29 10:41
ayuiop:我遇到的問題是 類別C內已經定義了obj的事件處理函式,如果 08/29 12:47
ayuiop:外面的主程式new個C出來時 希望立即能使用經由事件處理函式 08/29 12:48
ayuiop:存取的c.v值 但是主程式new完後不會等事件被觸發後才執行 08/29 12:49
ayuiop:下一行,而是會在事件未觸發 事件處理函式未運作前就存取 08/29 12:50
ayuiop:c.v的值 導致錯誤。 我想問的是 是否我只能選擇將事件處 08/29 12:52
ayuiop:理函式拔出來寫在主程式中 如此主程式就可以寫到new完C後就 08/29 12:52
ayuiop:結束,並將後續所希望進行的主程式過程全部再放到事件處理 08/29 12:54
ayuiop:函式中? 也因為該函式是寫在主程式中 才能使用一些主程式 08/29 12:56
ayuiop:定義的全域變數 08/29 12:56
ayuiop:不知道這樣是否比較清楚@@ 我可以再把我的code PO上來 08/29 12:57
cjcat2266:話說,不是沒有Event.Trigger這個東西嗎? 08/29 22:22
cjcat2266:你想要用什麼樣的事件呢? 08/29 22:22