需求
首先,需求是這樣的。戰鬥結算介面(就是戰鬥結束後會有乙個介面顯示這場戰鬥的得失)要顯示一些東西。
這些東西並不是固定的,比如,今天有可能要顯示「國慶快樂」,明天又是要顯示一幅圖。
此處將會舉例顯示乙個元件,因為元件上可以放任何你需要顯示的東西。
難點如果需要顯示什麼,就手動在這個介面上,加什麼。那麼後面要改變的時候,也同樣需要手動修改。甚至如果不需要顯示的時候,還要手動刪除,這樣的維護成本很高。
so思路
寫乙個介面 inte***ce iresultadd ,這個介面有兩個方法,乙個是 update() 方法,這個方法就是當戰鬥結算介面出現的時呼叫,還有乙個方法是 onpageremoved() 方法,這個方法是當戰鬥結算介面要關閉的時候呼叫的
需要在戰鬥介面顯示東西的類,就要來實現這個介面,在 update() 方法中將自己需要新增的東西新增進去,所以這個方法是需要引數的,其中乙個引數就是戰鬥結算介面 combatresultui,將戰鬥結算介面傳進來,就可以隨心所欲在上面新增東西,當然有時候還需要知道一些其他的東西,比如戰鬥勝負,我們需要通過勝負新增不同的東西。所以介面類應該這麼寫
inte***ce
iresultadd
3.戰鬥結算介面要持有乙個 iresultadd 陣列,因為有可能同時有多個地方在戰鬥結算時要新增顯示。當戰鬥結算介面出現時遍歷 iresultadd 陣列,呼叫每乙個 update() 方法,並將自身傳遞過去,以及相關資料 p_data。當戰鬥結算介面即將關閉的時候再依次呼叫 onpageremove() 方法即可
4.戰鬥結算介面需要維護這個 iresultadd 陣列,得有新增陣列元素以及移除陣列元素的方法。
//iresultadd 陣列,所有需要在戰鬥結算時顯示東西的類都新增到這個陣列
private
static _addlist: iresultadd=
;//掛接方法,新增進陣列的方法
//引數就是實現了 iresultadd 介面的那個類
public
static
addhooklist
(hookclass: iresultadd)
:void
//有新增的方法就要有移除的方法
public
static
removehooklist
(hookclass: iresultadd)
:void
實現
那麼這個三個類應該有如下**
介面類 iresultadd
inte***ce
iresultadd
戰鬥結算介面 combatresultui
class
combatresultui
//當戰鬥結算介面更新時,會呼叫此方法
public
updateview()
}//當戰鬥結算介面即將關閉時,會呼叫此方法
public
dispose()
}//iresultadd 陣列,所有需要在戰鬥結算時顯示東西的類都新增到這個陣列
private
static _addlist: iresultadd=
;//掛接方法,新增進陣列的方法
//引數就是實現了 iresultadd 介面的那個類
public
static
addhooklist
(hookclass: iresultadd)
:void
//有新增的方法就要有移除的方法
public
static
removehooklist
(hookclass: iresultadd)
:void
}
需要在戰鬥結算介面新增東西的類,user
class
user
implements
iresultadd
//實現介面
//戰鬥結算介面會呼叫此方法,並將自身傳過來
update
(p_reswin:combatresultui,p_data:any)
:void
onpageremoved()
:void
}
最後一步,誰來掛接
什麼時候需要掛接上去了,就什麼時候掛接,這就很松了,要取消掛接也有對應的方法,就很舒服。
class
hanger1
dispose()
:void
private _user1: user =
newuser()
;}class
hanger2
dispose()
:void
private _user2: user =
newuser()
;}
Egret 開發筆記 三 多按鈕註冊監聽
首先在 ui 面板的父類uibase中寫下這些方法 protected buttonlist array 註冊按鈕 在onclick裡面,判斷按鈕的名字以區分點的是哪個按鈕 protected registerbuttons container fairygui.gcomponent null vo...
開發筆記之20140121
關於try catch語句和finally語句塊 自 try語句在返回前,將其他所有的操作執行完,保留好要返回的值,而後轉入執行finally中的語句,而後分為以下三種情況 情況一 如果finally中有return語句,則會將try中的return語句 覆蓋 掉,直接執行finally中的retu...
開發筆記之20140220
1.工廠模式中簡單工廠模式就是建立乙個工廠,在工廠裡根據引數建立相應型別的物件,這樣就可以把建立物件的工作集中在工廠中執行,利用抽象產品角色宣告產品,可以將各類產品的共有方法提取出來在抽象產品角色中宣告。簡單工廠模式的缺點是靈活性不足,如果新加入一種型別則需要修改工廠類,新新增一條建立例項物件的邏輯...