Re: [問題] 外部class如何知道內部class中的按鈕被 …

看板java作者 (you stay there)時間14年前 (2011/06/28 01:36), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ 引述《liu2007 (薯)》之銘言: : 玩家在Main Class 中按下按鍵後跳(new)出一個dialog Class : dialog裡面可以調整遊戲動作所對應的按鍵(譬如↑↓←→改成WSAD之類的) : 當玩家按下dialog中的確定鍵之後 : 呼叫這個dialog Class 的外部Main Class必須把dialog裡的值讀回去 : 目前想到兩種作法 : 一種是polling : Main class等到dialog isVisible == false 的時候讀值 : 一種是把Main class的reference丟進去讓dialog可以invoke mainObj.dospmthing(); : 是否有其他更乾淨俐落的寫法呢?? : polling感覺會拖慢程式的速度 : 而把上層物件的refer 給下層的物件,讓下層的物件去控制上層的物件 : 用起來總覺得毛毛的.... : 就好像班長可以控制部隊,而小兵卻能控制班長 : 總覺得哪裡不太對勁... 獻醜一下,大概類似這樣... // 在適合的地方建立interface public interface KeyMappingCallback { public void saveKeyMapping(int keyCode); } // main class new dialog的部份,例如mDialog mDialog.setCallback(new KeyMappingCallback(){ public void saveKeyMapping(int keyCode){ //store your key mapping config } }); // dialog 宣告一個 KeyMappingCallback interface 和它的 setter private KeyMappingCallback mCallback; public void setCallback(KeyMappingCallback mCallback) { this.mCallback = mCallback; } // dialog 的確定按鈕,例如 buttonOk buttonOk.setOnClickListener(new OnClickListener(){ public void click(){ mCallback.saveKeyMapping(keyCode); } }); -- 沒開IDE,可能有打錯 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.252.78.183
文章代碼(AID): #1E2B-0ju (java)