督主cocos2d学习笔记
2015-12-23 19:26
471 查看
这篇博客是督主学习cocos2d的学习笔记,内容是一些编写cocos时的小技巧,留作以后查阅~
督主先给大家献上自己学习cocos的参考资料:
1、Cocos2d-x 3 移动游戏编程 【韩】印孜健 著 武传海 译 人民邮电出版社Cocos2d-x 3 移动游戏编程
这本书内容条理清晰,没讲一些知识点都会用实例去巩固复习,非常适合入门哦~
2、cocos官网www.cocos2d-x.org的programmers
guide
一本英文手册,内容也很好,与1互为补充,可以下载电子书版和pdf版~
进入正题啦~
setDesignResolutionSize(float width, float height, ResolutionPolicy resolutionPolicy)
width:设计分辨率宽度
height:设计分辨率高度
ResolutionPolicy:分辨率规则高度
例:
glview->setDesignResolutionSize(480, 320, ResolutionPolicy::EXACT_FIT);
EXACT_FIT:不考虑画面宽高比例,按固定大小显示画面
NO_BORDER:考虑画面宽高比例,对游戏画面进行放大或缩小。根据画面宽高比例不同,有时会不显示到画面。
SHOW_ALL:考虑画面宽高比例,对游戏画面进行放大或缩小,但不会超出画面之外。这保持了游戏画面的宽高比,也显示了全部内容,但画面的左右或上下两侧会留下无法使用的黑边。
FIXED_WIDTH:固定游戏画面宽度,根据画面宽高比例动态处理高度。常用于制作纵版游戏。
FIXED_HEIGHT:固定游戏画面高度,根据画面宽高比例动态处理宽度。常用于制作横版游戏。
菜单项
MenuItemFont
MenuItemLabel
MenuItemImage
MenuItemSprite
MenuItemToggle(初次显示第一个菜单项,单击显示第二个菜单项,以此类推,最后一个菜单项出现,单击再次出现第一个菜单项)
auto item_1=MenuItemToggle::createWithCallback(CC_CALLBACK_1(HelloWorld::menuCallback, this), item_1_1, item_1_2, NULL);
alignItemsVerticallyWithPadding() alignItemsHorizontallyWithPadding() 设置间隔
pushScene() popScene()
创建层;注意截取一段背景,防止断裂;先MoveBy 再Place::create(Point::ZERO) 最后RepeatForever
多重图像:
使用ParallaxNode类
void addChild(Node* child, int z, const Point& parallaxRatio, const Point& positionOffset)
Node* child:该参数与以前的addChild()方法相同,指定要添加的Node
int z:设置Z轴顺序(z-order)
const Point& parallaxRatio:设置精灵相对于ParallaxNode的移动比例
const Point& positionOffset:指定节点添加到ParallaxNode的坐标
为了每次运行时生成不同随机数,通过srand()方法将生成随机数时使用的基准值初始化为当前时间
即在0~4之间随机生成数
初始化
将对象放入vector
遍历vector
是否存在对象和删除对象
UserDefault以XML格式保存数据,pKey是一个键,flush()可以在游戏退出后仍旧保存数据
1秒调用一次HelloWorld::scheduleCallback,但其实跟AppDelegate.cpp中setAnimationInteval()有关
先等待5秒,然后调用1次回调方法,再每隔1秒调用5次回调方法,最终回调方法比设定的多调用1次
会自动调用Update()方法,所以一定要实现Update()
unscheduled(schedule_seletor(回调方法名)):仅停止对1个回调方法的调用。
unscheduleAllSeletors():停止对所有回调方法的调用。
unscheduleUpdate():仅停止对update()方法的调用。
创建Animation对象,并设置帧间隔时间
将Sprite Frame添加到动画
创建Animate对象
执行Animate动画动作
<span style="font-size:14px;">spr->runAction(animate);</span>
如果循环执行动画
<span style="font-size:14px;">auto action=RepeatForever::create(animate);</span>
督主先给大家献上自己学习cocos的参考资料:
1、Cocos2d-x 3 移动游戏编程 【韩】印孜健 著 武传海 译 人民邮电出版社Cocos2d-x 3 移动游戏编程
这本书内容条理清晰,没讲一些知识点都会用实例去巩固复习,非常适合入门哦~
2、cocos官网www.cocos2d-x.org的programmers
guide
一本英文手册,内容也很好,与1互为补充,可以下载电子书版和pdf版~
进入正题啦~
一、屏幕适配
在AppDelegate.cpp文件的applicationDidFinishLaunching()方法中调用setDesignResolutionSize()方法设置分辨率大小,从而固定画面setDesignResolutionSize(float width, float height, ResolutionPolicy resolutionPolicy)
width:设计分辨率宽度
height:设计分辨率高度
ResolutionPolicy:分辨率规则高度
例:
glview->setDesignResolutionSize(480, 320, ResolutionPolicy::EXACT_FIT);
EXACT_FIT:不考虑画面宽高比例,按固定大小显示画面
NO_BORDER:考虑画面宽高比例,对游戏画面进行放大或缩小。根据画面宽高比例不同,有时会不显示到画面。
SHOW_ALL:考虑画面宽高比例,对游戏画面进行放大或缩小,但不会超出画面之外。这保持了游戏画面的宽高比,也显示了全部内容,但画面的左右或上下两侧会留下无法使用的黑边。
FIXED_WIDTH:固定游戏画面宽度,根据画面宽高比例动态处理高度。常用于制作纵版游戏。
FIXED_HEIGHT:固定游戏画面高度,根据画面宽高比例动态处理宽度。常用于制作横版游戏。
二、菜单
auto menu=Menu::create(item_1, item_2, item_3, NULL); menu->alignItemsVertically();
菜单项
MenuItemFont
MenuItemLabel
MenuItemImage
MenuItemSprite
MenuItemToggle(初次显示第一个菜单项,单击显示第二个菜单项,以此类推,最后一个菜单项出现,单击再次出现第一个菜单项)
auto item_1=MenuItemToggle::createWithCallback(CC_CALLBACK_1(HelloWorld::menuCallback, this), item_1_1, item_1_2, NULL);
alignItemsVerticallyWithPadding() alignItemsHorizontallyWithPadding() 设置间隔
三、复合动作&CallFunc
auto action=Sequence::create(MoveBy::create(1.0, Point(0, 50)), CallFuncN::create(CC_CALLBACK_1(GameScene::resetMissile, this)), NULL);
四、画面切换
replaceScene()pushScene() popScene()
五、TAG
可以通过setTag()为对象创建一个tag,之后在其他方法中,通过getTag()、getChildByTag()获取对象进行操作六、循环创建对象
用相同语句编码时,可是使用循环减少代码量<span style="font-size:14px;">StringUtils::format("LIFE: %d", life)</span>
七、背景滚动
单一图像:创建层;注意截取一段背景,防止断裂;先MoveBy 再Place::create(Point::ZERO) 最后RepeatForever
多重图像:
使用ParallaxNode类
void addChild(Node* child, int z, const Point& parallaxRatio, const Point& positionOffset)
Node* child:该参数与以前的addChild()方法相同,指定要添加的Node
int z:设置Z轴顺序(z-order)
const Point& parallaxRatio:设置精灵相对于ParallaxNode的移动比例
const Point& positionOffset:指定节点添加到ParallaxNode的坐标
八、随机
<span style="font-size:14px;">srand(time(NULL));</span>
为了每次运行时生成不同随机数,通过srand()方法将生成随机数时使用的基准值初始化为当前时间
<span style="font-size:14px;">rand()%4</span>
即在0~4之间随机生成数
九、Vector
在.h文件中声明<span style="font-size:14px;">Vector<Sprite*> smiles;</span>
初始化
<span style="font-size:14px;">smiles.clear();</span>
将对象放入vector
<span style="font-size:14px;">smiles.pushBack(spr);</span>
遍历vector
<span style="font-size:14px;">for(Sprite* spr:smiles){}</span>
是否存在对象和删除对象
<span style="font-size:14px;">if(smiles.contains(removeSpr)) { smiles.eraseOblect(removeSpr); }</span>
十、UserDefault保存数据
<span style="font-size:14px;">UserDefault::getInstance()->set~ForKey(const char *pKey, bool value) </span>
<span style="font-size:14px;">UserDefault::getInstance()->get~ForKey(const char *pKey<u>, bool value</u>)(bool value可以没有)</span>
<span style="font-size:14px;">UserDefault::getInstance()->flush();</span>
UserDefault以XML格式保存数据,pKey是一个键,flush()可以在游戏退出后仍旧保存数据
<span style="font-size:14px;">UserDefault::getInstance()->setIntegerForKey("HIGHSCORE", highscore); UserDefault::getInstance()->flush();</span>
十一、定时器
<span style="font-size:14px;">this->schedule(schedule_selector(HelloWorld::scheduleCallback), 1.0);</span>
1秒调用一次HelloWorld::scheduleCallback,但其实跟AppDelegate.cpp中setAnimationInteval()有关
<span style="font-size:14px;">this->schedule(schedule_selector(HelloWorld::scheduleCallback), 1.0, 5, 5.0); </span>
先等待5秒,然后调用1次回调方法,再每隔1秒调用5次回调方法,最终回调方法比设定的多调用1次
<span style="font-size:14px;">this->scheduleUpdate();</span>
会自动调用Update()方法,所以一定要实现Update()
unscheduled(schedule_seletor(回调方法名)):仅停止对1个回调方法的调用。
unscheduleAllSeletors():停止对所有回调方法的调用。
unscheduleUpdate():仅停止对update()方法的调用。
十二、退出游戏
<span style="font-size:14px;">Director::getInstance()->end(); exit(0);</span>
十三、动画
创建基准精灵(通常为第一帧)<span style="font-size:14px;">auto spr=Sprite::create("1.png"); this->addChild(spr);</span>
创建Animation对象,并设置帧间隔时间
<span style="font-size:14px;">auto animation=Animation::create(); animation->setDelayPerUnit(0.3);</span>
将Sprite Frame添加到动画
<span style="font-size:14px;">animation->addSpriteFrameWithFile("");</span>
创建Animate对象
<span style="font-size:14px;">auto animate=Animate::create(animation);</span>
执行Animate动画动作
<span style="font-size:14px;">spr->runAction(animate);</span>
如果循环执行动画
<span style="font-size:14px;">auto action=RepeatForever::create(animate);</span>
<span style="font-size:14px;">spr->runAction(action);</span
相关文章推荐
- cocos2d-x 安卓移植 android.mk文件配置
- C++ 静态static 变量在 cocos2d-x 里面使用误区
- cocos2d-x3.3在windows上设置窗口为竖向
- 在使用Cocos2d-JS 开发过程中需要用到的单体设计模式
- cocos2dx - android环境配置及编译
- cocos2d iOS添加广告
- Cocos2dx实现光影效果的两种方式
- cocos2d-x windows下用vs开发
- cocos2d-x 支持的开发语言
- cocos2d-x&nbsp;中的字体
- 在cocos2d-x中使用sqlite
- cocos2d-x&nbsp;获取系统当前时间
- cocos2dx绘制实心圆
- cocos2dX 事件之触摸事件和触摸事件集合
- cocos2d ccmenulabel
- cocos2dx 3.7添加手机震动
- cocos2d ccitemimage
- cocos2d 多点触控
- cocos2d 单点触控
- cocos2d-js 学习笔记 --安装调试(2)