八月份cocos2d-x官网发布了v3.0版本,这次更新的内容特别多,包括2dx的架构以及使用

总得来说,给开发者带来了很大的便利:

运行环境需求:

  • Android 2.3 or newer
  • iOS 5.0 or newer
  • OS X 10.7 or newer
  • Windows (which version?)
  • Linux Ubuntu 12.04 (or newer)
编译环境需求:
  • Xcode 4.6 (for iOS or Mac)
  • gcc 4.7 for Linux or Android. For Android ndk-r8e or newer is required.
  • Visual Studio 2012 (for Windows)

重要更新内容:

  • Replace Objective-C patters with C++ (C++11) patterns and best practices
  • Improve Labels
  • Improve renderer

其中C++ 11 新特性:

A subset of C++11 features are being used in cocos2d-x:

  • std::function, including lambda objects for callbacks
  • strongly typed enums, for most of the cocos2d-x enums and constants
  • std::thread for threading
  • override context keyword, for overriden methods

st  std::function

  • CallFunc can be created with an std::function<void()>
  • CallFuncN can be created with an std::function<void(Node*)>
  • CallFuncND and CallFuncO were removed since it can be created with simulated with CallFuncN and CallFunc. See ActionsTest.cpp for more examples
  • MenuItem supports std::function<void(Node*)> as callbacks

强大枚举类型更新:

Examples:

v2.1 v3.0
kCCTexture2DPixelFormat_RGBA8888 Texture2D::PixelFormat::RGBA8888
kCCDirectorProjectionCustom Director::Projection::CUSTOM
ccGREEN Color3B::GREEN
CCPointZero Point::ZERO
CCSizeZero Size::ZERO

The old values can still be used, but are not deprecated.

override
当虚函数被override关健字修饰时,子类实现时有override标记


Removed Objective-C patterns

移除了所有Object-c模式,删除了CC前辍使用纯C++函数


对于类的使用改变:
2dx-3.0 两也不用使用using coco2d namespace

clone() instead of copy()

clone() returns an autoreleased version of the copy.

copy() is no longer supported. If you use it, it will compile, but the code will crash.

Example:

1// v2.1
2CCMoveBy *action = (CCMoveBy*) move->copy();
3action->autorelease();
4
5// v3.0
6// No need to do autorelease, no need to do casting.
7auto action = move->clone();

Singletons use getInstance() and destroyInstance()

All singletons use getInstance() and destroyInstance() (if applicable) to get and destroy the instance.

Examples:

v2.1 v3.0
CCDirector->sharedDirector() Director->getInstance()
CCDirector->endDirector() Director->destroyInstance()
etc...

v2.1 methods are still available, but they were tagged as deprecated.

getters

Getters now use the get prefix.

Examples:

v2.1 v3.0
node->boundingBox() node->getBoundingBox()
sprite->nodeToParentTransform() sprite->getNodeToParentTransform()
etc...

And getters were also tagged as const in their declaration. Example:

1// v2.1
2virtual float getScale();
3
4// v3.0
5virtual float getScale() const;

v2.1 methods are still available, but they were tagged as deprecated.


POD types

Methods that were receiving POD types as arguments (eg: TexParams, Point, Size, etc.) are being passed as constreference.

Example:

1// v2.1
2void setTexParameters(ccTexParams* texParams);
3
4// v3.0
5void setTexParameters(const ccTexParams& texParams);

Misc API Changes

  ccTypes.h

Remove cc prefix for structure names in ccTypes.h, move global functions into static member functions, and move global constants into const static member variables.

structure name before changing structure name after changing
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

 1
2// in v2.1
3ccColor3B color3B = ccc3(0, 0, 0);
4ccc3BEqual(color3B, ccc3(1, 1, 1));
5ccColor4B color4B = ccc4(0, 0, 0, 0);
6ccColor4F color4F = ccc4f(0, 0, 0, 0);
7color4F = ccc4FFromccc3B(color3B);
8color4F = ccc4FFromccc4B(color4B);
9ccc4FEqual(color4F, ccc4F(1, 1, 1, 1));
10color4B = ccc4BFromccc4F(color4F);
11
12color3B = ccWHITE;
13
14// in v3.0
15Color3B color3B = Color3B(0, 0, 0);
16color3B.equals(Color3B(1, 1, 1));
17Color4B color4B = Color4B(0, 0, 0, 0);
18Color4F color4F = Color4F(0, 0, 0, 0);
19color4F = Color4F(color3B);
20color4F = Color4F(color4B);
21color4F.equals(Color4F(1, 1, 1, 1));
22color4B = Color4B(color4F);
23
24color3B = Color3B::WHITE;

  deprecated functions and global variables

old name new name
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
 

--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------

创建新项目:
 v3.0不再需要创建Xcode模版,使用create-multi-platform-projects.py来创建一个跨平台的项目,使用方法
 1,cd 到2dx根目录,MAC平台使用./create-multi-platform-projects.py  然后提示:
-bash: ./create-multi-platform-projects.py: /usr/bin/evn: bad interpreter: No such file or directory
没关系,我们打开.py文件,发现其实引用的是tools/project_creator/create_project.py 这文件
 2,我们再cd 到project_creator文件中,使用 ./create_project.py -p <PROJECT_NAME> -k <PACKAGE_NAME> -l <cpp|lua|javascript>
 3,这样我们就可以在2dx的projects文件夹中找到创建好的项目

关于项目的选择:
图示:

红包点选就可以选择对应运行平台







cocos2d-x v3.0新特性及使用的更多相关文章

  1. GitHub 桌面版 v3.0 新特性「GitHub 热点速览」

    新版本一般意味着更强的功能特性,比如 GitHub Desktop v3.0.虽然未发布新版本,但本周收录的 7 个开源项目颇有"新版"味.比如,破解(恢复)密码能力 Max 的 ...

  2. 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性

    [索引页][源码下载] 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性 作者:weba ...

  3. Servlet 3.0 新特性详解 (转载)

    原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-servlet30/ Servlet 3.0 新特性概述 Servlet 3.0 作为 Jav ...

  4. Vue3.0新特性

    Vue3.0新特性 Vue3.0的设计目标可以概括为体积更小.速度更快.加强TypeScript支持.加强API设计一致性.提高自身可维护性.开放更多底层功能. 描述 从Vue2到Vue3在一些比较重 ...

  5. C++ 2.0新特性

    C++ standard之演化 C++ 98(1.0) C++ 03(TR1, technical Report 1) // 一个实验性的版本 C++ 11(2.0) C++ 14 此次记录涵盖了C+ ...

  6. 浅谈Tuple之C#4.0新特性那些事儿你还记得多少?

    来源:微信公众号CodeL 今天给大家分享的内容基于前几天收到的一条留言信息,留言内容是这样的: 看了这位网友的留言相信有不少刚接触开发的童鞋们也会有同样的困惑,除了用新建类作为桥梁之外还有什么好的办 ...

  7. Java基础和JDK5.0新特性

    Java基础 JDK5.0新特性 PS: JDK:Java Development KitsJRE: Java Runtime EvironmentJRE = JVM + ClassLibary JV ...

  8. Visual Studio 2015速递(1)——C#6.0新特性怎么用

    系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...

  9. Atitit dsl exer v3 qb3 新特性

    Atitit dsl exer v3 qb3 新特性 /atiplat_cms/src/com/attilax/dsl/DslParser.java V3 支持typeed参数,与简化的notyp参数 ...

随机推荐

  1. fatal error LNK1104: 无法打开文件“libc.lib”的问题

    如果将用低版本的VC开发的项目,拿到高版本的VC开发环境上去编译,链接时也许会触发LNK1104错误.解决方案是链接时忽略此库,在此提供三种解决方案: 1.解决如下:项目->属性中->配置 ...

  2. php将长字符串拆分为指定最大宽度的字符串数组

    /** * 将字符串拆分为指定最大宽度的字符串数组.单字节字符宽度为1,多字节字符通常宽度为2 * @param string $msg 要拆分的字符串 * @param int $width 结果数 ...

  3. Windows 如何远程登陆 Server 的 jupyter

    jupyter 安装就不用赘述了,本示例以 Putty 为例,展示如何从本地 windows 系统调用远程的 jupyter notebook 并且在本地 Chrome 中打开的方法 1. 首先,ss ...

  4. vue-router在IE11中页面不跳转

    情景: IE11浏览器中,在进行正常页面跳转操作后(页面A跳转到页面B),点击浏览器的左上角的‘后退’按钮,点击后,可以看到url地址已经发生了变化(url由页面B变为页面A),hash值也已经是上一 ...

  5. Django项目中模板标签及模板的继承与引用【网站中快速布置广告】

    Django项目中模板标签及模板的继承与引用 常见模板标签 {% static %} {% for x in range(x) %}{% endfor %} 循环的序号{% forloop %} 循环 ...

  6. POJ poj 2155 Matrix

    题目链接[http://poj.org/problem?id=2155] /* poj 2155 Matrix 题意:矩阵加减,单点求和 二维线段树,矩阵加减,单点求和. */ using names ...

  7. 51nod1423 最大二"货" 单调栈

    枚举每个点作为次大值,用单调栈处理出左边 / 右边第一个比它大的数,直接回答 复杂度$O(n)$ #include <cstdio> #include <cstring> #i ...

  8. 【最小路径覆盖】BZOJ2150-部落战争

    [题目大意] 给出一张图,'*'表示不能走的障碍.已知每只军队可以按照r*c的方向行军,且军队与军队之间路径不能交叉.问占据全部'.'最少要多少支军队? [思路] 首先注意题意中有说“军队只能往下走” ...

  9. poj 1988 并查集(终于看懂一个了/(ㄒoㄒ)/~~)

    题意:有几个stack,初始里面有一个cube.支持两种操作:1.move x y: 将x所在的stack移动到y所在stack的顶部.2.count x:数在x所在stack中,在x之下的cube的 ...

  10. [转]Android Studio开发入门-引用jar及so文件

    注意: 1.jar包在app的libs目录 2.so文件放在src/main”目录中名为“jniLibs”的目录 一.引用jar文件    1.将jar文件复制.粘贴到app的libs目录中:    ...