在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;
};
}