关于cocos2d-x3.0和2.0之间的区别


http://blog.csdn.net/rexuefengye/article/details/39896603

区别1.去CC


之前2.0的CC**,把CC都去掉,基本的元素都是保留的

[cpp]  view plain  copy
  1. 2.0  
  2. CCSprite  CCCallFunc CCNode ..  
  3. 3.0  
  4. Sprite CallFunc Node ..  


区别2.cc***结构体改变

[cpp]  view plain  copy
  1. 2.0          
  2. ccp(x,y)          
  3. ccpAdd(p1,p2)  
  4. ccpSub  
  5. ccpMult  
  6. ccpLength(p)  
  7. ccpDot(p1,p2);  
  8. ccc3()  
  9. ccc4()  
  10. ccWHITE  
  11. CCPointZero  
  12. CCSizeZero  
  13.   
  14.   
  15. 3.0  
  16. Point(x,y)  
  17. p1+p2;  
  18. p1-p2  
  19. p1*p2  
  20. p.getLength()  
  21. p1.dot(p2)  
  22. Color3B()  
  23. Color4B()  
  24. Color3B::WHITE  
  25. Point::ZERO  
  26. Size:ZERO  


区别3.shared***改变(单例机制使用语法)

[cpp]  view plain  copy
  1. 2.0  
  2. CCSize winSize = CCDirector::sharedDirector()->getWinSize();  
  3. SpriteFrameCache::sharedSpriteFrameCache()  
  4. AnimationCache::sharedAnimationCache()  
  5. NotificationCenter::sharedNotificationCenter()  
  6. …  
  7.   
  8. 3.0  
  9. Size size = Director::getInstance()->getWinSize();  
  10. SpriteFrameCache::getInstance()  
  11. AnimationCache::getInstance()  
  12. NotificationCenter::getInstance()  
  13. …  


区别4.POD类别

[cpp]  view plain  copy
  1. 2.0  
  2. CCPoint   
  3. CCSize  
  4. CCRect  
  5.   
  6. 3.0  
  7. Vec2  
  8. Size  
  9. Rect  


区别5.点触事件

[cpp]  view plain  copy
  1. auto dispatcher = Director::getInstance()->getEventDispatcher();  
  2. auto touchListener = EventListenerTouchOneByOne::create();  
  3. touchListener->onTouchBegan = CC_CALLBACK_2(FBMainScene::onTouchBegan,this);  
  4. touchListener->onTouchMoved = CC_CALLBACK_2(FBMainScene::onTouchMoved,this);  
  5. touchListener->onTouchEnded = CC_CALLBACK_2(FBMainScene::onTouchEnded, this);  
  6. dispatcher->addEventListenerWithSceneGraphPriority(touchListener, this);  
  7.   
  8. bool FBMainScene::onTouchBegan(Touch *touch,Event *pEvent){  
  9.     CCLOG("onTouchBegan");  
  10.     Point point = this->convertToWorldSpace(this->convertTouchToNodeSpace(touch));  
  11.     return true;  
  12. }  
  13.   
  14. void FBMainScene::onTouchMoved(Touch *touch,Event *pEvent){  
  15.     CCLOG("onTouchMoved");  
  16. }  
  17.   
  18. void FBMainScene::onTouchEnded(Touch *touch,Event *pEvent){  
  19.     CCLOG("onTouchEnded");  
  20. }  
  21.   
  22. //获得触点的方法也发生了改变:  
  23. Point point = this->convertToWorldSpace(this->convertTouchToNodeSpace(touch));  
  24.   
  25. //dispatcher控制方法:  
  26. dispatcher->addEventListener…  
  27. dispatcher->removeEventListener(listener);  
  28. dispatcher->removeAllListeners();  


区别6.回调函数

CC_CALLBACK_0 CC_CALLBACK_1 CC_CALLBACK_2 CC_CALLBACK_3
回调函数,分别携带不同的参数,方便
[cpp]  view plain  copy
  1. 2.0  
  2. CCMenuItemFont *item = CCMenuItemFont::create("返回上个场景"this, menu_selector(GameScene::backScene));  
  3. 3.0  
  4. MenuItemFont *item = MenuItemLabel::create("返回上个场景", CC_CALLBACK_1(GameScene::backScene, this));  
  5.   
  6. // new callbacks based on C++11  
  7. #define CC_CALLBACK_0(__selector__,__target__, ) std::bind(&__selector__,__target__, ##__VA_ARGS__)  
  8. #define CC_CALLBACK_1(__selector__,__target__, ) std::bind(&__selector__,__target__, std::placeholders::_1, ##__VA_ARGS__)  
  9. #define CC_CALLBACK_2(__selector__,__target__, ) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, ##__VA_ARGS__)  
  10. #define CC_CALLBACK_3(__selector__,__target__, ) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3 ##__VA_ARGS__)  


区别7.CallFunc使用(使用"Function"对象)

[cpp]  view plain  copy
  1. CallFunc::create([&](){  
  2.         Sprite *sprite = Sprite::create("s");  
  3.         this->addChild(sprite);  
  4. });  


区别8.使用clone代替copy

[cpp]  view plain  copy
  1. 2.0  
  2. CCMoveBy *action = (CCMoveBy*) move->copy();  
  3. action->autorelease();  
  4. 3.0  
  5. action = move->clone();  
  6. 不需要autorelease,在clone已经实现。  


区别9.Physics Integration 物理引擎

[cpp]  view plain  copy
  1. 暂无使用,box2d 在 3.0中可以延续使用  
  2. 在3.0的Physics中需要定义 PhysicsWorld, PhysicsBody, PhysicsShape, PhysicsJoint 等,于box2d相仿,使用前需要定义CC_USE_PHYSICS  



区别10.容器

[cpp]  view plain  copy
  1. 2.0  
  2. CCArray  
  3.   
  4.   
  5. 3.0  
  6. cocos2d::Vector  
  7. cocos2d::Map  
  8. cocos2d::Value  

你可能感兴趣的:(cocos2dx,cocos2d-x)