导演类: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坐标系
OpenGL坐标是从左下角为原点的。
世界坐标和模型坐标
OpenGL坐标分为世界坐标和模型坐标,
Win32平台下设置屏幕大小
glview = GLViewImpl::create("MY GAME");
glview->setFrameSize(900, 600);
director->setOpenGLView(glview);