OGF框架范例03 事件機制
Sample03
簡介:
鍵盤,鼠標事件的演示。
鍵盤、鼠標是游戲中主要的輸入設備,往往會要求獲取當前鼠標對象、鼠標坐標等。該例展示了OGF框架的事件處理機制,并介紹如何運用。
1.在GameBody.h文件重載OnMouseMove(),OnMouseClick(),OnMouseIn(),OnMouseOut(),OnMouseOver(),OnKeyPass()事件.
2.在GameBody.cpp文件底部添加以下代碼:
//鼠標移動
bool CMyGameBody::OnMouseMove(float x, float y){
char szText[128];
sprintf(szText, "Mouse Move:x=%f, y=%f", x, y);
IGameObject* pGameObject = (IGameObject*)m_pCurrentSection->GetGameView()->GetObject("default\\default\\Text");
//查詢接口方法1
IGameObjectText* pIGOText = (IGameObjectText*)pGameObject->QueryInterface(IID_IGameObjectText, VER_IGameObjectText);
pIGOText->SetText(szText);
return true;
}
//鼠標點擊
bool CMyGameBody::OnMouseClick(CGameScene* pGameScene, CGameLayer* pGameLayer, IGameObject* pGameObject, int nType, int nKey){
char szText[128];
sprintf(szText, "Object:%s Clicked", pGameObject->GetObjectName());
//查詢接口方法2
IGameObjectText* pIGOText = GET_OBJECTPTR_INTERFACE(pGameObject, IGameObjectText);
pIGOText->SetText(szText);
return true;
}
//鼠標移入
bool CMyGameBody::OnMouseIn(CGameScene* pGameScene, CGameLayer* pGameLayer, IGameObject* pGameObject){
char szText[128];
sprintf(szText, "Mov In:%s", pGameObject->GetObjectName());
//查詢接口方法2
IGameObjectText* pIGOText = GET_OBJECTPTR_INTERFACE(pGameObject, IGameObjectText);
pIGOText->SetText(szText);
return true;
}
//鼠標移出
bool CMyGameBody::OnMouseOut(CGameScene* pGameScene, CGameLayer* pGameLayer, IGameObject* pGameObject){
char szText[128];
sprintf(szText, "Mov Out:%s", pGameObject->GetObjectName());
//查詢接口方法2
IGameObjectText* pIGOText = GET_OBJECTPTR_INTERFACE(pGameObject, IGameObjectText);
pIGOText->SetText(szText);
return true;
}
//鼠標移過
bool CMyGameBody::OnMouseOver(CGameScene* pGameScene, CGameLayer* pGameLayer, IGameObject* pGameObject){
char szText[128];
sprintf(szText, "Mov Over:%s", pGameObject->GetObjectName());
//查詢接口方法2
IGameObjectText* pIGOText = GET_OBJECTPTR_INTERFACE(pGameObject, IGameObjectText);
pIGOText->SetText(szText);
return true;
}
//鍵盤事件
bool CMyGameBody::OnKeyPass(int nType, int nKey, char cChar){
char szText[128];
sprintf(szText, "Type:%d Key:%d Char:%c", nType, nKey, cChar);
IGameObject* pGameObject = (IGameObject*)m_pCurrentSection->GetGameView()->GetObject("default\\default\\Text");
//查詢接口方法1
IGameObjectText* pIGOText = (IGameObjectText*)pGameObject->QueryInterface(IID_IGameObjectText, VER_IGameObjectText);
pIGOText->SetText(szText);
return true;
}
3.編譯并運行項目
運行結果:
運行后在屏幕中心顯示"None"字樣,當任意鍵點擊后會顯示:"Key:xx",當鼠標點擊后會顯示:"Mouse Clicked"等.在OGF框架中,鍵盤,鼠標的事件觸發后會分發至CGameBody類的OnMouseMove(),OnMouseClick(),OnMouseIn(),OnMouseOut(),OnMouseOver(),OnKeyPass()事件中,游戲可在這些事件中進行回調處理
posted on 2007-09-10 23:51 lwq49 閱讀(869) 評論(0) 編輯 收藏 引用 所屬分類: 開源游戲框架