[技术分享] cocos2d-x v3.0.0发布说明
cocos2d吧
全部回复
仅看楼主
level 7
liuxijob 楼主

要求
运行环境要求:
Android2.3或以上
ios 5.0 或以上
OS X 10.7 或以上
Windows 7 或以上
Linux Ubuntu 12.04 (或以上)
Marmalade 部分不适用
lackBerry 部分不适用
编译器要求:
mac和ios 上用 xcode4.6
Linux 或者 Android 上用 gcc4.7。Android要求 Androidndk-r8e或以上。
Window 上用 Visual Studio 2012
V3.0.0的特色
用c++(c++11)的最佳实践代替Objective-C的多余部分。
改良 Labels
改良 renderer
新的事件调度
集成物理
新的GUI
javascript 远程调试
控制台模式
重构图像——及时释放内存和统一所支持文件格式的API
自动生成lua绑定,LuaJavaBridge,和LuaObjcBridge.
模板库
细节特性
c++11特性
在v3.0.0初期测试版上加上了这个特性
c++11 的一部分特性开始在cocos2d-x上使用。
std::function.加入lambda对象作为回调
强类型枚举,在cocos2d-x中的枚举和常量中大量的使用。
std::thread 用于线程
override 关键字,检测重载方法。
Std::function
CallFunc 可以用 std::function<void()>来创建
CallFuncN 可以用 std::function<void(Node*)>来创建
CallFuncND 和 CallFuncO都被移除了,这可以用CallFuncN和CallFunc来模拟,在ActionsTest.cpp中有更多的例子可以查看。
MenuItem 支持 std::function<void(Node*)>回调
CallFunC 例子。
// in v2.1CCCallFunc *action1 = CCCallFunc::create( this, callfunc_selector( MyClass::callback_0 ) ); // in v3.0 (short version)auto action1 = CallFunc::create( CC_CALLBACK_0(MyClass::callback_0,this)); auto action2 = CallFunc::create( CC_CALLBACK_0(MyClass::callback_1,this, additional_parameters)); // in v3.0 (long version)auto action1 = CallFunc::create( std::bind( &MyClass::callback_0, this)); auto action2 = CallFunc::create( std::bind( &MyClass::callback_1, this, additional_parameters)); // in v3.0 you can also use lambdas or any other "Function" objectauto action1 = CallFunc::create( [&](){ auto s = Director::sharedDirector()->getWinSize(); auto label = LabelTTF::create("called:lambda callback", "Marker Felt", 16); label->setPosition(ccp( s.width/4*1,s.height/2-40)); this->addChild(label); } );
MenuItem 例子
// in v2.1 CCMenuItemLabel *item = CCMenuItemLabel::create(label, this, menu_selector(MyClass::callback)); // in v3.0 (short version)auto item = MenuItemLabel::create(label, CC_CALLBACK_1(MyClass::callback, this)); // in v3.0 (long version)auto item = MenuItemLabel::create(label, std::bind(&MyClass::callback, this, std::placeholders::_1)); // in v3.0 you can use lambdas or any other "Function" objectauto item = MenuItemLabel::create(label, [&](Object *sender) { // do something. Item "sender" clicked });
强类型枚举
在V3.0初期测试版中加入
常量和枚举都以k开头,它们经常被定义为int和普通的enum的地方都被置换为强类型枚举类型(enum class) 以避免冲突和类型错误。
新的格式为:
v2.1
v3.0
kTypeValue
Type::VALUE
例子:
v2.1
v3.0
kCCTexture2DPixelFormat_RGBA8888
Texture2D::PixelFormat::RGBA8888
kCCDirectorProjectionCustom
Director::Projection::CUSTOM
ccGREEN
Color3B::GREEN
CCPointZero
Point::ZERO
CCSizeZero
Size::ZERO
旧的类型仍然可以使用,但是不赞成使用。
override
这个可以在重载方法时捕捉到可能发生的错误,在子类的重载方法中加上了override关键字
例如:
class Sprite : public Node { bool isFlipY(void) const; void setFlipY(bool bFlipY); // Overrides virtual void setTexture(Texture2D *texture) override; virtual Texture2D* getTexture() const override; inline void setBlendFunc(const BlendFunc &blendFunc) override; inline const BlendFunc& getBlendFunc() const override; }
2014年09月22日 03点09分 1
level 1
请问cocos2d 3.0如何触发触屏事件
2014年09月27日 12点09分 2
1