八月份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
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 threadingoverride
context keyword, for overriden methods
st std::function
CallFunc
can be created with anstd::function<void()>
CallFuncN
can be created with anstd::function<void(Node*)>
CallFuncND
andCallFuncO
were removed since it can be created with simulated withCallFuncN
andCallFunc
. See ActionsTest.cpp for more examplesMenuItem
supportsstd::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.
Removed Objective-C patterns
移除了所有Object-c模式,删除了CC前辍使用纯C++函数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:
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:
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 const
reference.
Example:
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
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 |