cocos2d pod_cocos2d-x v3.0新特性及使用

八月份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

CallFuncN can be created with an std::function

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 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:

// v2.1

CCMoveBy *action = (CCMoveBy*) move->copy();

// v3.0

// No need to do autorelease, no need to do casting.

auto 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:

// v2.1

virtual float getScale();

// v3.0

virtual 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:

// v2.1

void setTexParameters(ccTexParams* texParams);

// v3.0

void 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

// in v2.1

ccc3(0, 0, 0);

ccc3(1, 1, 1));

ccc4(0, 0, 0, 0);

0, 0, 0, 0);

1, 1, 1, 1));

// in v3.0

0, 0, 0);

1, 1, 1));

0, 0, 0, 0);

0, 0, 0, 0);

1, 1, 1, 1));

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 -k -l

3,这样我们就可以在2dx的projects文件夹中找到创建好的项目

关于项目的选择:

图示:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值