Cocos2dx 3.0 交流篇(一) 初体验

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

有段时间没更新博客了,自认为水平实在够菜,不忍心出来坑人~~~~

昨天cocos2dx 3.0 beta 版也出来了,我之前也用过一两个星期的alpha1版,所以决定写一些关于3.0的博文,这里不仅只有我个人的一些理解和看法,同时我也会把开发过程中遇到的问题贴上来,希望大神们给予回答~~


1、以CC开头的类从此去掉CC,如:

| v2.1       | v3.0     |
| CCSprite   | Sprite   |
| CCNode     | Node     |
| CCDirector | Director |
| etc...                |
举个例子,创建一个精灵的方式:

v2.0 
CCSprite* sp = CCSprite::create();

v3.0
auto sp = Sprite::create();

2、clone() 替代 copy(), 这个我用的不多,所以也就不多交代了;

3、Director的单例换成getInstance() 和 destroyInstance();
| v2.1                          | v3.0                        |
| CCDirector->sharedDirector()  | Director->getInstance()     |
| CCDirector->endDirector()     | Director->destroyInstance() |
| etc...                                                      |
4、新的触摸机制,先贴一段代码给大家看看,可能是下一篇或者下下篇我会详细讲下新的触摸机制的。(嘻嘻,搞得我好像很牛逼哄哄的样子)
auto sprite = Sprite::create("file.png");
...
auto listener = EventListenerTouchOneByOne::create();
listener->setSwallowTouch(true);
listener->onTouchBegan     = [](Touch* touch, Event* event) { do_some_thing();  return true;  };
listener->onTouchMoved     = [](Touch* touch, Event* event) { do_some_thing();  };
listener->onTouchEnded     = [](Touch* touch, Event* event) { do_some_thing();  };
listener->onTouchCancelled = [](Touch* touch, Event* event) { do_some_thing();  };
// The priority of the touch listener is based on the draw order of sprite
EventDispatcher::getInstance()->addEventListenerWithSceneGraphPriority(listener, sprite);
// Or the priority of the touch listener is a fixed value
EventDispatcher::getInstance()->addEventListenerWithFixedPriority(listener, 100); // 100 is a fixed value

5、还有一些杂七杂八的东西,本人理解的不透,也就不发出来献丑了,最后将CCType.h 里的一些变动贴出来,让我们愉快的结束这篇博文。
| v2.1 struct names | v3.0 struct names |
| ccColor3B         | Color3B |
| ccColor4B         | Color4B |
| ccColor4F         | Color4F |
| ccVertex2F        | Vertex2F |
| ccVertex3F        | Vertex3F |
| ccTex2F           | Tex2F |
| ccPointSprite     | PointSprite |
| ccQuad2           | Quad2 |
| ccQuad3           | Quad3 |
| ccV2F_C4B_T2F     | V2F_C4B_T2F |
| ccV2F_C4F_T2F     | V2F_C4F_T2F |
| ccV3F_C4B_T2F     | V3F_C4B_T2F |
| ccV2F_C4B_T2F_Triangle | V2F_C4B_T2F_Triangle |
| ccV2F_C4B_T2F_Quad | V2F_C4B_T2F_Quad |
| ccV3F_C4B_T2F_Quad | V3F_C4B_T2F_Quad |
| ccV2F_C4F_T2F_Quad | V2F_C4F_T2F_Quad |
| ccBlendFunc       | BlendFunc |
| ccT2F_Quad        | T2F_Quad |
| ccAnimationFrameData | AnimationFrameData |

Global functions changed example

// in v2.1
ccColor3B color3B = ccc3(0, 0, 0);
ccc3BEqual(color3B, ccc3(1, 1, 1));
ccColor4B color4B = ccc4(0, 0, 0, 0);
ccColor4F color4F = ccc4f(0, 0, 0, 0);
color4F = ccc4FFromccc3B(color3B);
color4F = ccc4FFromccc4B(color4B);
ccc4FEqual(color4F, ccc4F(1, 1, 1, 1));
color4B = ccc4BFromccc4F(color4F);

color3B = ccWHITE;

// in v3.0
Color3B color3B = Color3B(0, 0, 0);
color3B.equals(Color3B(1, 1, 1));
Color4B color4B = Color4B(0, 0, 0, 0);
Color4F color4F = Color4F(0, 0, 0, 0);
color4F = Color4F(color3B);
color4F = Color4F(color4B);
color4F.equals(Color4F(1, 1, 1, 1));
color4B = Color4B(color4F);

color3B = Color3B::WHITE;

deprecated functions and global variables

| v2.1 names    | v3.0 names |
| ccp           | Point |
| ccpNeg        | Point::- |
| ccpAdd        | Point::+ |
| ccpSub        | Point::- |
| ccpMult       | Point::* |
| ccpMidpoint   | Point::getMidpoint |
| ccpDot        | Point::dot |
| ccpCrosss     | Point::cross |
| ccpPerp       | Point::getPerp |
| ccpRPerp      | Point::getRPerp |
| ccpProject    | Point::project |
| ccpRotate     | Point::rotate |
| ccpUnrotate   | Point::unrotate |
| ccpLengthSQ   | Point::getLengthSq() |
| ccpDistanceSQ | Point::getDistanceSq |
| ccpLength     | Point::getLength |
| ccpDistance   | Point::getDistance |
| ccpNormalize  | Point::normalize |
| ccpForAngle   | Point::forAngle |
| ccpToAngle    | Point::getAngle |
| ccpClamp      | Point::getClampPoint |
| ccpFromSize   | Point::Point |
| ccpCompOp     | Point::compOp |
| ccpLerp       | Point::lerp |
| ccpFuzzyEqual | Point::fuzzyEqual |
| ccpCompMult   | Point::Point |
| ccpAngleSigned | Point::getAngle |
| ccpAngle      | Point::getAngle |
| ccpRotateByAngle | Point::rotateByAngle |
| ccpLineInersect | Point::isLineIntersect |
| ccpSegmentIntersect | Point::isSegmentIntersect |
| ccpIntersectPoint | Point::getIntersectPoint |
| CCPointMake   | Point::Point |
| CCSizeMake    | Size::Size |
| CCRectMake    | Rect::Rect |
| PointZero     | Point::ZERO |
| SizeZero      | Size::ZERO |
| RectZero      | Rect::ZERO |
| TiledGrid3DAction::tile | TiledGrid3DAction::getTile |
| TiledGrid3DAction::originalTile | TiledGrid3DAction::getOriginalTile |
| TiledGrid3D::tile | TiledGrid3D::getTile |
| TiledGrid3D::originalTile | TiledGrid3D::getOriginalTile |
| Grid3DAction::vertex | Grid3DAction::getVertex |
| Grid3DAction::originalVertex | Grid3DAction::getOriginalVertex |
| Grid3D::vertex | Grid3D::getVertex |
| Grid3D::originalVertex | Grid3D::getOriginalVertex |
| Configuration::sharedConfiguration | Configuration::getInstance |
| Configuration::purgeConfiguration | Configuration::destroyInstance() |
| Director::sharedDirector() | Director::getInstance() |
| FileUtils::sharedFileUtils | FileUtils::getInstance |
| FileUtils::purgeFileUtils | FileUtils::destroyInstance |
| EGLView::sharedOpenGLView | EGLView::getInstance |
| ShaderCache::sharedShaderCache | ShaderCache::getInstance |
| ShaderCache::purgeSharedShaderCache | ShaderCache::destroyInstance |
| AnimationCache::sharedAnimationCache | AnimationCache::getInstance |
| AnimationCache::purgeSharedAnimationCache | AnimationCache::destroyInstance |
| SpriteFrameCache::sharedSpriteFrameCache | SpriteFrameCache::getInstance |
| SpriteFrameCache:: purgeSharedSpriteFrameCache | SpriteFrameCache::destroyInstance |
| NotificationCenter::sharedNotificationCenter | NotificationCenter::getInstance |
| NotificationCenter:: purgeNotificationCenter | NotificationCenter::destroyInstance |
| Profiler::sharedProfiler | Profiler::getInstance |
| UserDefault::sharedUserDefault | UserDefault::getInstance |
| UserDefault::purgeSharedUserDefault | UserDefault::destroyInstance |
| Application::sharedApplication | Application::getInstance |
| ccc3()        | Color3B() |
| ccc3BEqual()  | Color3B::equals() |
| ccc4()        | Color4B() |
| ccc4FFromccc3B() | Color4F() |
| ccc4f()       | Color4F() |
| ccc4FFromccc4B() | Color4F() |
| ccc4BFromccc4F() | Color4B() |
| ccc4FEqual()  | Color4F::equals() |
| ccWHITE       | Color3B::WHITE |
| ccYELLOW      | Color3B::YELLOW |
| ccBLUE        | Color3B::BLUE |
| ccGREEN       | Color3B::GREEN |
| ccRED         | Color3B::RED |
| ccMAGENTA     | Color3B::MAGENTA |
| ccBLACK       | Color3B::BLACK |
| ccORANGE      | Color3B::ORANGE |
| ccGRAY        | Color3B::GRAY |
| kBlendFuncDisable | BlendFunc::BLEND_FUNC_DISABLE |
具体资料可以查看官方文档:








Cocos2dx 3.0 过渡初体验 auto sprite = Sprite::create("file.png"); ... auto listener = EventListenerTouchOneByOne::create(); listener->setSwallowTouch(true); listener->onTouchBegan = [](Touch* touch, Event* event) { do_some_thing(); return true; }; listener->onTouchMoved 阅读详情

相关推荐

Cocos2dx 3.0 过渡(二十四)死不了的贪食蛇(重力版)

近来cocos2dx的论坛刮起了阵制作贪食蛇的潮流,我也打算来凑个热闹。不过主要目的还是因为在写3.0过渡的系列博客时讲的都是理论,缺少实践。这次就用贪食蛇的例子较为系统的介绍3.0与2.0些不同之处。(当然了,如果版本能看在我码字辛苦的份上施舍我本书,那我还是很乐意接受的,我的收获地址是...)。

天涯海阁 6221

学习笔记 cocos2d-x 2.x到3.x的改动与区别

最近直在做个项目从2.2.6移植到3.11,但是cocos2d-x 2.x和3.x差别比较大,因此网上参考了许多前辈的帖子和博客总结了下,留着以后备用。 区别1.去CC 之前2.0的CC**,把CC都去掉,基本的元素都是保留的 2.0 CCSprite CCCallFunc CCNode .. 3.0 Sprite CallFunc Node .. 区别2.cc***

菜鸟的学习之路 2668

Cocos2dx 3.0 过渡(三十二)话说ValueMap的般使用

周末到厦门找死党聚聚,晚上伙人杀到还算凑合的大排档准备来个不醉不归。菜都点完了朋友突然说这里没有洗手间...尼玛,当时我们就不乐意了:喝五六个小时的啤酒,没有洗手间你是打算憋死谁?二话不说直接换家,不过这次定要谨慎选择,最终看到家看起来还算正宗的大排档,我下意识拨了下头发,走到前台MM面前,轻声问道:你们这...有洗手间吗? 声音低沉且性感,语调中还夹带着些许的忧伤。 前台MM瞪大眼睛,好会才反应过来说道:洗手间?肯定有啊!

天涯海阁 9375

基于cocos2dx的RPG简单实用算法之2 - 角色跟随移动

基于cocos2dx的RPG简单实用算法之2 - 角色跟随移动

一个游戏制作人的自我修养 3677

cocosstudio 自定义控件

1 复制E:\cocos\Documents\Cocos\CocosStudio2\Samples目录,为了有重来的机会。 2 设置工程的输出目录为E:\cocos\Documents\Cocos\CocosStudio2\Addins_pugna,复制的是E:\cocos\Documents\Cocos\CocosStudio2\Addins,为了有重来的机会 3 使用vs2017编译,报错,因为E:\cocos\Documents\Cocos\CocosStudio2\Samples_pugna\Add

jeepxbf的博客 603

Cocos StudioV3.10.0.0官方版

Cocos StudioV3.10.0.0官方版 CocoStudio是款集UI编辑器、动画编辑器、场景编辑器、数据编辑器于体的专业手游开发工具集软件,多种类型游戏的编辑可满足不同开发者和公司的开发需求。CocoStudio可以帮助开发者快速创建游戏资源,将大部分繁琐的游戏开发工作使用编辑器来快速制作。高效率,高质量,低风险,低成本。 CocoStudio功能 1.动画编辑器 用于编辑游戏中...

清淡的咸菜的博客 4476

ccpToAngle

使用ccpToAngle函数将向量转换为弧度(反正切),接下来将这个弧度用CC_RADIANS_TO_DEGREES转换成角度 游戏应用

for_casech的博客 792

Cocos2dx 3.0 提高初体验

Cocos2dx 3.0 提高初体验 分类:cocos2d-x学习笔记2014-01-09 22:06299人阅读评论(2)收藏举报 转发请注明来源:http://blog.csdn.net/start530/article/details/18052953 有段时间没更新博客了,自认为水平实在够菜,不忍心出来坑人~~~~ 昨天cocos2dx ...

aice1980的专栏 169

Cocos2dx 3.0 过渡(四) 创建项目

最后再提个可大可小的问题,就是在3.0 Alpha1版本下,打开工程的文件“cocos2d-win32.vc2012.sln“都是在cocos2dx解压后的根目录下的,Alpha1后就转移到“cocos2d-x-3.0alpha1\build”目录下了。

天涯海阁 9894

cocos2dx3.0进度条的简析

可以说,进度条是游戏中特别常用的个控件,大部分游戏都会需要用到资源加载条,技能道具的cd,或者是时间条。最近特别喜欢看底层,自我感觉底层是个让人熟悉整个框架的特别好的方式,这次就来看下进度条的底层,感受下。 class CC_DLL ProgressTimer : public Node #ifdef EMSCRIPTEN , public GLBufferedNode #endif //

破晓前的彷徨 6345

Cocos2dx 3.0 过渡(十二) lambda表达式的使用

如果要设定表达式能够访问外部变量,可以在 [] 内写入 & 或者 = 加上变量名,其中 & 表示按引用访问,= 表示按值访问,变量之间用逗号分隔,比如 [=factor, &total] 表示按值访问变量 factor,而按引用访问 total。

天涯海阁 1万+

Cocos2dx 3.0 过渡(五) 随机数的获取

随机数种子就相当于 随机数的重置开关,你如果想获得随机数,肯定要先把开关打开吧,初始化了随机数种子,也就是相当于打开开关,这时候“种子”就开始起来了,你每隔段时间获取随机数,它都会反馈给你个不同的位置数据,而如果你每获取数据就要初始化随机数种子(也就是重启开关),这就相当于“种子”又从起点重新出发,这不是要累死“种子”的节奏么?

天涯海阁 1万+

Cocos2dx 3.0 交流

创建项目: For(MAC) Runtime Requirements Android 2.3 or neweriOS 5.0 or newerOS X 10.7 or newerWindows 7 or newerLinux Ubuntu 12.04 (or newer)cocos2d-x v3.0rc(or newer) Software Requirements

Kaitiren的专栏 2940

cocos2dx3.0的label字体去描边

近日直被3.0的字体描边所困扰,在安卓手机下字体没问题,挺好看,但是在iphone手机上显示特别不清晰,直很怪异的感觉,尤其是白色的label,后来我同事兼师父将底层改了下,貌似cocos2dx3.2及以后就不存在这个问题了。        方法:找到项目/cocos2d/cocos/2d/platform目录下的       CCDevice.h文件   的静态gettexturedata

破晓前的彷徨 2045

Cocos2dx 3.0 过渡(十)资源加载进度条Loading...

本来这博文是昨晚就要写的,可是因为今早要去参加考驾照相关的体检,而我最害怕的就是视力没能达到5.0,毕竟这阶段对着屏幕的时间过久。 所以呢,昨晚我几乎没碰电脑,没玩手机,早睡早起。体检顺利通过! 首先,我要说的是:这次我要写的主题是进度条。 额,等等,先收起你手里愤怒的西瓜刀。我也才知道TestCpp也有这个例子啊。不过TestCpp里的只有label的变化,而我的多加了个进度条。

天涯海阁 1万+

Cocos2dx3.0的自动批次渲染原理

网上流传着份《Cocos2d (v.3.0) rendering pipeline roadmap 》,因为需要翻墙,我已经放到CSDN上了。看了这文档之后去看Cocos2dx的源码发现文档有些是错的,如果大家不信也可以去看,先了解个大概再自己跟着源码去看个究竟。         Cocos2dx3.0引入了globalZOrder的概念,与 v3.0 之前的 localZOrder相比就是

yangchangda1的专栏 4759

Cocos2dx 3.0 过渡(二十九)globalZOrder()与localZOrder()

感谢博主,感谢cocos2dx3.0。 是的了,cocos2dx3.0就是这么神奇!如果你还在使用2.0那你就out啦!赶紧拿起电话, 拨打110订购吧!只要998,3.0带回家。钱请直接打到我支付宝账户上面。谢谢!

天涯海阁 1万+

Cocos2dx 3.0 过渡(十) xml文档的读取与调用

这阶段很忙,灰常忙,人又感冒了。前两天去报了驾校,所以下班回家后都在突击科目,争取下周就去考。话说我们这边驾校报名费要六千,全国还有其他地方有这么高的吗? -------------------------------- 前天有人问我beta2 要如何读取xml文档,我刚要说用array的相关接口去读取,才想起beta之后早没有array这玩意了。 那么既然之前是用arry读取,那么现

天涯海阁 1万+
上一篇: Cocos2d-x 菜鸟进阶篇(四)Label 试用浅析
下一篇: Cocos2dx 3.0 过渡篇(一) 初体验
star特530
博客等级 码龄15年 1203粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值