在GamePlay3D中,開發人員添加代碼的地方,主要是擴充Game類,寫一個繼承自Game的類,然後實現基本的方法:
void initialize();//初始化的時候載入字型、情境之類的東西。
void finalize();//程式退出的時候釋放資源儲存設定之類的。
void update(float elapsedTime);//我的理解是重新整理幀,每幀進入一次。
void render(float elapsedTime);//這個沒怎麼理解和update的區別和聯絡,可能是update是處理,然後render渲染顯示,一家之言。
載入字型就是:
Font *_font = Font::create("res/arial40.gpb");
載入情境就是:
Bundle* bundle = Bundle::create("res/duck.gpb");
_scene = bundle->loadScene();
SAFE_RELEASE(bundle);
擷取節點:
Node* _modelNode = _scene->findNode("duck");
當然還有些方法是需要實現的,比如事件處理函數:
下面是事件處理,都比較容易理解:
void MeshGame::keyEvent(Keyboard::KeyEvent evt, int key)
{
if (evt == Keyboard::KEY_PRESS)
{
switch (key)
{
case Keyboard::KEY_ESCAPE:
exit();
break;
}
}
}
void MeshGame::touchEvent(Touch::TouchEvent evt, int x, int y, unsigned int contactIndex)
{
switch (evt)
{
case Touch::TOUCH_PRESS://相當於cocos2dx中的touchbegin,開始觸摸
{
_touched = true;
_touchX = x;
}
break;
case Touch::TOUCH_RELEASE://相當於touchend,觸摸結束
{
_touched = false;
_touchX = 0;
}
break;
case Touch::TOUCH_MOVE://相當於touchmove,觸摸移動
{
int deltaX = x - _touchX;
_touchX = x;
_modelNode->rotateY(MATH_DEG_TO_RAD(deltaX * 0.5f));
}
break;
default:
break;
};
}