【GamePlay3D】开发——范例解读之MeshGame

来源:互联网 发布:js window.event对象 编辑:程序博客网 时间:2024/05/16 10:11

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

原创粉丝点击