Re: [問題] 外部class如何知道內部class中的按鈕被 …
※ 引述《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