Cocos2d-x坐标系/重要概念/设置屏幕大小等

导演类:Director

单例对象,能够保持一致的配置信息,便于管理场景对象

 Director::getInstance()

职责:

1.访问和改变场景
2.访问Cocos2d-x的配置信息
3.暂停/继续和停止游戏
4.转换坐标

继承关系:

Ref <-- Director <-- DisplayLinkDirector

场景类:Sence

场景是构建游戏的界面,分以下几类:

1.展示场景:播放视频或者简单在图像上输出文字
2.选项场景:包括主菜单,设置游戏参数等
3.游戏场景:游戏的主要内容

层:Layout

层是写游戏的重点,大部分时间都是在层上实现游戏内容。


精灵:Sprite

包括敌人,控制对象,静态物体和背景等。


菜单:Menu

提供操作的集合


Node中的重要操作:

Node *childNode = Node::create();//创建节电
node->addChild(childNode, 0, 123);//添加新的子节点
node->getChildByTag(123);//查找子节点
node->removeChildByTag(123, true);//移除子节点,并停止该节点上的一切动作
node->removeAllChildrenWithCleanup(true);//删除所有子节点,并停止这些子节点上的一切动作
node->removeFromParentAndCleanup(true);//从夫节点中移除node节点,并停止该节点上的一切动作

Node中重要的属性:position 和 anchorPoint

游戏循环和调度

每一个游戏程序都有一个循环在不停的运行,是由导演对象来管理和维护的。

scheduleUpdate():每个node对象都要调用该函数,那么这个Node对象就会定时的每帧回调自己的update函数

schedule():与上差不多,但是可以指定回调函数。

unscheduleUpdate()定制update方法函数的调度

unschedule():可以指定函数停止调度

unscheduleAllSelectors():可以停止调度

在HelloWorldScene.cpp中添加代码如下

void HelloWorld::update(float dt) {
auto label = this->getChildByTag(123);
label->setPosition(label->getPosition() + Vec2(1, -1));
}

//更新函数
this->scheduleUpdate();

为了能够在Init函数之外也能访问到标签对象,需要为标签对象设置Tag属性。


Cocos2d-x坐标系

UI坐标转OpenGL左边

OpenGL坐标是从左下角为原点的。

世界坐标和模型坐标

OpenGL坐标分为世界坐标和模型坐标,


Win32平台下设置屏幕大小

glview = GLViewImpl::create("MY GAME");
glview->setFrameSize(900, 600);
director->setOpenGLView(glview);

猜你喜欢

转载自blog.csdn.net/huanghailiang_ws/article/details/78166038