[問題] 引入的類別之事件的處理

看板Flash作者 ((茶))時間16年前 (2008/08/29 02:48), 編輯推噓3(3018)
留言21則, 2人參與, 最新討論串1/4 (看更多)
例如說 我現在引入類別 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

08/29 10:33, , 1F
是addEventListener(Event.Trigger, f);
08/29 10:33, 1F

08/29 10:34, , 2F
還有其時我看不太出來你想要達到的目的耶
08/29 10:34, 2F

08/29 10:35, , 3F
你想要這麼做,是想要有什麼具體上的應用嗎?
08/29 10:35, 3F

08/29 10:37, , 4F
至於為什麼你this.parent會是undefined
08/29 10:37, 4F

08/29 10:37, , 5F
因為你這個class沒有繼承DisplayObject
08/29 10:37, 5F

08/29 10:38, , 6F
沒有parent這個property,而且沒有被addChild
08/29 10:38, 6F

08/29 10:38, , 7F
所以不管怎麼做,他都沒有所謂的parent
08/29 10:38, 7F

08/29 10:40, , 8F
然後就是,你這樣並沒有違反OOP的原則
08/29 10:40, 8F

08/29 10:41, , 9F
只是...沒有用到OOP的概念
08/29 10:41, 9F

08/29 12:47, , 10F
我遇到的問題是 類別C內已經定義了obj的事件處理函式,如果
08/29 12:47, 10F

08/29 12:48, , 11F
外面的主程式new個C出來時 希望立即能使用經由事件處理函式
08/29 12:48, 11F

08/29 12:49, , 12F
存取的c.v值 但是主程式new完後不會等事件被觸發後才執行
08/29 12:49, 12F

08/29 12:50, , 13F
下一行,而是會在事件未觸發 事件處理函式未運作前就存取
08/29 12:50, 13F

08/29 12:52, , 14F
c.v的值 導致錯誤。 我想問的是 是否我只能選擇將事件處
08/29 12:52, 14F

08/29 12:52, , 15F
理函式拔出來寫在主程式中 如此主程式就可以寫到new完C後就
08/29 12:52, 15F

08/29 12:54, , 16F
結束,並將後續所希望進行的主程式過程全部再放到事件處理
08/29 12:54, 16F

08/29 12:56, , 17F
函式中? 也因為該函式是寫在主程式中 才能使用一些主程式
08/29 12:56, 17F

08/29 12:56, , 18F
定義的全域變數
08/29 12:56, 18F

08/29 12:57, , 19F
不知道這樣是否比較清楚@@ 我可以再把我的code PO上來
08/29 12:57, 19F

08/29 22:22, , 20F
話說,不是沒有Event.Trigger這個東西嗎?
08/29 22:22, 20F

08/29 22:22, , 21F
你想要用什麼樣的事件呢?
08/29 22:22, 21F
文章代碼(AID): #18jlB-ki (Flash)
文章代碼(AID): #18jlB-ki (Flash)