試用過OGF的朋友,應該會發現GameFrame在鼠標消息處理時,都會搜索當前鼠標坐標下的對象,以實現對像的MouseMove,MouseOver, MouseIn, MouseOut四個事件,但效率非常之差?,F打算進行調整,以加快每幀的處理速度,大致方案如下:
1、按FLASH的模式,默認不提供對象的MouseMove, MouseOver, MouseIn, MouseOut事件,GameFrame只負責將MouseMove的消息轉發至GameBody,用戶要實現要上述4個事件,則必須重載GameBody的OnMouseMove來實現(GameBody可能會提供一個默認的對象分發過程,由用戶調用或GameFrame的Setting中帶一個標志開發以確定是否分發至對象);
2、在GameLayer層加入一個是否允許處理鼠標消息的標志(默認為false),當為否則不檢測,減少FindObject()函數的判斷次數;
3、在對象中增加一個是否允許處理鼠標消息的標志(默認為false),減少FindObject()函數中用對象區域判斷的次數;
4、在實現上述功能后,在GameFrame中增加一個緩沖表,將所有允許處理鼠標消息的對象加入緩沖表中,減少對不需要鼠標消息的對象的檢測;
希望改進后,每秒能處理400幀以上吧!
PS:
另一方面,我們會改進GameObjectText對象,以支持中文輸入和顯示。機制方面有兩種,一種是嵌入字體(預先生成),當字體庫沒有的話則顯示為空;另一種是動態從字模讀取再打印至HGE的紋理中。大家可根據自己游戲所需的效率要求作出選擇。至于,之前提到的對象編輯器都在啟動中,但時間方面暫未定下具體完成時間。