八月份cocos2d-x官网发布了v3.0版本,这次更新的内容特别多,包括2dx的架构以及使用
总得来说,给开发者带来了很大的便利:
运行环境需求:
重要更新内容:
其中C++ 11 新特性:
A subset of C++11 features are being used in cocos2d-x:
std::function
, including lambda objects for callbacksstd::thread
for threadingoverride
context keyword, for overriden methodsCallFunc
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 examplesMenuItem
supports std::function<void(Node*)>
as callbacks强大枚举类型更新:
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.
移除了所有Object-c模式,删除了CC前辍使用纯C++函数
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();
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 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.
Methods that were receiving POD types as arguments (eg: TexParams
, Point
, Size
, etc.) are being passed as const
reference.
Example:
1// v2.1
2void setTexParameters(ccTexParams* texParams);
3
4// v3.0
5void setTexParameters(const ccTexParams& texParams);
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 |
——————————————————————————————————–