關(guān)于鼠標(biāo)消息處理機(jī)制的調(diào)整
試用過OGF的朋友,應(yīng)該會(huì)發(fā)現(xiàn)GameFrame在鼠標(biāo)消息處理時(shí),都會(huì)搜索當(dāng)前鼠標(biāo)坐標(biāo)下的對(duì)象,以實(shí)現(xiàn)對(duì)像的MouseMove,MouseOver, MouseIn, MouseOut四個(gè)事件,但效率非常之差。現(xiàn)打算進(jìn)行調(diào)整,以加快每幀的處理速度,大致方案如下:1、按FLASH的模式,默認(rèn)不提供對(duì)象的MouseMove, MouseOver, MouseIn, MouseOut事件,GameFrame只負(fù)責(zé)將MouseMove的消息轉(zhuǎn)發(fā)至GameBody,用戶要實(shí)現(xiàn)要上述4個(gè)事件,則必須重載GameBody的OnMouseMove來實(shí)現(xiàn)(GameBody可能會(huì)提供一個(gè)默認(rèn)的對(duì)象分發(fā)過程,由用戶調(diào)用或GameFrame的Setting中帶一個(gè)標(biāo)志開發(fā)以確定是否分發(fā)至對(duì)象);
2、在GameLayer層加入一個(gè)是否允許處理鼠標(biāo)消息的標(biāo)志(默認(rèn)為false),當(dāng)為否則不檢測(cè),減少FindObject()函數(shù)的判斷次數(shù);
3、在對(duì)象中增加一個(gè)是否允許處理鼠標(biāo)消息的標(biāo)志(默認(rèn)為false),減少FindObject()函數(shù)中用對(duì)象區(qū)域判斷的次數(shù);
4、在實(shí)現(xiàn)上述功能后,在GameFrame中增加一個(gè)緩沖表,將所有允許處理鼠標(biāo)消息的對(duì)象加入緩沖表中,減少對(duì)不需要鼠標(biāo)消息的對(duì)象的檢測(cè);
希望改進(jìn)后,每秒能處理400幀以上吧!
PS:
另一方面,我們會(huì)改進(jìn)GameObjectText對(duì)象,以支持中文輸入和顯示。機(jī)制方面有兩種,一種是嵌入字體(預(yù)先生成),當(dāng)字體庫沒有的話則顯示為空;另一種是動(dòng)態(tài)從字模讀取再打印至HGE的紋理中。大家可根據(jù)自己游戲所需的效率要求作出選擇。至于,之前提到的對(duì)象編輯器都在啟動(dòng)中,但時(shí)間方面暫未定下具體完成時(shí)間。
posted on 2007-09-12 22:34 lwq49 閱讀(765) 評(píng)論(0) 編輯 收藏 引用 所屬分類: 開源游戲框架