﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-于吉吉的技术博客-随笔分类-cocos2dx</title><link>http://www.blogjava.net/dongbule/category/54079.html</link><description>建造高性能门户网</description><language>zh-cn</language><lastBuildDate>Tue, 04 Mar 2014 08:54:24 GMT</lastBuildDate><pubDate>Tue, 04 Mar 2014 08:54:24 GMT</pubDate><ttl>60</ttl><item><title>cocos2dx2.0升级为3.0一些常见变化纪录</title><link>http://www.blogjava.net/dongbule/archive/2013/12/27/408140.html</link><dc:creator>陈于喆</dc:creator><author>陈于喆</author><pubDate>Fri, 27 Dec 2013 15:29:00 GMT</pubDate><guid>http://www.blogjava.net/dongbule/archive/2013/12/27/408140.html</guid><wfw:comment>http://www.blogjava.net/dongbule/comments/408140.html</wfw:comment><comments>http://www.blogjava.net/dongbule/archive/2013/12/27/408140.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/dongbule/comments/commentRss/408140.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dongbule/services/trackbacks/408140.html</trackback:ping><description><![CDATA[<div>最近接手项目从cocos2dx 2.0 升级为 3.0 ，至于为什么要升级我也弄不清楚，只感觉3.0是要摆脱cocos2d-iphone的身影，这是要作死的态度吗，没时间去了解3.0的核心发生了神马变化，只为了从cocos2dx2.0经常适应到3.0做了一些纪录，以便查阅和方便正在从2.0到3.0的朋友。<br /><br /><div><strong>1.去CC</strong></div><div>之前2.0的CC**,把CC都去掉，基本的元素都是保留的</div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->2.0<br />CCSprite&nbsp;&nbsp;CCCallFunc&nbsp;CCNode&nbsp;..<br />3.0<br />Sprite&nbsp;CallFunc&nbsp;Node&nbsp;..</div><br /><div><strong>2.cc***结构体改变</strong></div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->2.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />ccp(x,y)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />ccpAdd(p1,p2)<br />ccpSub<br />ccpMult<br />ccpLength(p)<br />ccpDot(p1,p2);<br />ccc3()<br />ccc4()<br />ccWHITE<br />CCPointZero<br />CCSizeZero<br /><img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br /><br />2.0<br />Point(x,y)<br />p1+p2;<br />p1-p2<br />p1*p2<br />p.getLength()<br />p1.dot(p2)<br />Color3B()<br />Color4B()<br />Color3B::WHITE<br />Point::ZERO<br />Size:ZERO<br /><img src="http://www.blogjava.net/Images/dot.gif" alt="" /></div><div><br /><strong>3.shared***改变</strong></div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->2.0<br />CCSize&nbsp;winSize&nbsp;=&nbsp;CCDirector::sharedDirector()-&gt;getWinSize();<br />SpriteFrameCache::sharedSpriteFrameCache()<br />AnimationCache::sharedAnimationCache()<br />NotificationCenter::sharedNotificationCenter()<br />&#8230;<br /><br />3.0<br />Size&nbsp;size&nbsp;=&nbsp;Director::getInstance()-&gt;getWinSize();<br />SpriteFrameCache::getInstance()<br />AnimationCache::getInstance()<br />NotificationCenter::getInstance()<br />&#8230;</div><br /><div><strong>4.POD类别</strong></div><div>使用const为Point，Size,Rect进行常量修饰</div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->2.0<br /><span style="color: #0000FF; ">void</span>&nbsp;setPoint(CCPoint&nbsp;p)<br />3.0<br /><span style="color: #0000FF; ">void</span>&nbsp;setPoint(<span style="color: #0000FF; ">const</span>&nbsp;Point&amp;&nbsp;p)</div><br /><div><strong>5.点触事件</strong></div><div>此部分全面更新采用Event Listener</div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->auto&nbsp;dispatcher&nbsp;=&nbsp;Director::getInstance()-&gt;getEventDispatcher();<br />auto&nbsp;touchListener&nbsp;=&nbsp;EventListenerTouchOneByOne::create();<br />touchListener-&gt;onTouchBegan&nbsp;=&nbsp;CC_CALLBACK_2(FBMainScene::onTouchBegan,<span style="color: #0000FF; ">this</span>);<br />touchListener-&gt;onTouchMoved&nbsp;=&nbsp;CC_CALLBACK_2(FBMainScene::onTouchMoved,<span style="color: #0000FF; ">this</span>);<br />touchListener-&gt;onTouchEnded&nbsp;=&nbsp;CC_CALLBACK_2(FBMainScene::onTouchEnded,&nbsp;<span style="color: #0000FF; ">this</span>);<br />dispatcher-&gt;addEventListenerWithSceneGraphPriority(touchListener,&nbsp;<span style="color: #0000FF; ">this</span>);<br /><br /><span style="color: #0000FF; ">bool</span>&nbsp;FBMainScene::onTouchBegan(Touch&nbsp;*touch,Event&nbsp;*pEvent){<br />&nbsp;&nbsp;&nbsp;&nbsp;CCLOG("onTouchBegan");<br />&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;point&nbsp;=&nbsp;<span style="color: #0000FF; ">this</span>-&gt;convertToWorldSpace(<span style="color: #0000FF; ">this</span>-&gt;convertTouchToNodeSpace(touch));<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">true</span>;<br />}<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;FBMainScene::onTouchMoved(Touch&nbsp;*touch,Event&nbsp;*pEvent){<br />&nbsp;&nbsp;&nbsp;&nbsp;CCLOG("onTouchMoved");<br />}<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;FBMainScene::onTouchEnded(Touch&nbsp;*touch,Event&nbsp;*pEvent){<br />&nbsp;&nbsp;&nbsp;&nbsp;CCLOG("onTouchEnded");<br />}<br /><br />//获得触点的方法也发生了改变：<br />Point&nbsp;point&nbsp;=&nbsp;<span style="color: #0000FF; ">this</span>-&gt;convertToWorldSpace(<span style="color: #0000FF; ">this</span>-&gt;convertTouchToNodeSpace(touch));<br /><br />//dispatcher控制方法：<br />dispatcher-&gt;addEventListener&#8230;<br />dispatcher-&gt;removeEventListener(listener);<br />dispatcher-&gt;removeAllListeners();</div><br /><div><strong>6.CC_CALLBACK_*</strong></div><div>CC_CALLBACK_0 CC_CALLBACK_1 CC_CALLBACK_2 CC_CALLBACK_3</div><div>回调函数，分别携带不同的参数，方便</div><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->2.0<br />CCMenuItemFont&nbsp;*item&nbsp;=&nbsp;CCMenuItemFont::create("返回上个场景",&nbsp;<span style="color: #0000FF; ">this</span>,&nbsp;menu_selector(GameScene::backScene));<br />3.0<br />MenuItemFont&nbsp;*item&nbsp;=&nbsp;MenuItemLabel::create("返回上个场景",&nbsp;CC_CALLBACK_1(GameScene::backScene,&nbsp;<span style="color: #0000FF; ">this</span>));<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;new&nbsp;callbacks&nbsp;based&nbsp;on&nbsp;C++11</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">#define</span>&nbsp;CC_CALLBACK_0(__selector__,__target__,&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" />)&nbsp;std::bind(&amp;__selector__,__target__,&nbsp;##__VA_ARGS__)<br /><span style="color: #0000FF; ">#define</span>&nbsp;CC_CALLBACK_1(__selector__,__target__,&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" />)&nbsp;std::bind(&amp;__selector__,__target__,&nbsp;std::placeholders::_1,&nbsp;##__VA_ARGS__)<br /><span style="color: #0000FF; ">#define</span>&nbsp;CC_CALLBACK_2(__selector__,__target__,&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" />)&nbsp;std::bind(&amp;__selector__,__target__,&nbsp;std::placeholders::_1,&nbsp;std::placeholders::_2,&nbsp;##__VA_ARGS__)<br /><span style="color: #0000FF; ">#define</span>&nbsp;CC_CALLBACK_3(__selector__,__target__,&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" />)&nbsp;std::bind(&amp;__selector__,__target__,&nbsp;std::placeholders::_1,&nbsp;std::placeholders::_2,&nbsp;std::placeholders::_3&nbsp;##__VA_ARGS__)</div><br /><div><strong>7.使用"Function"对象</strong></div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->CallFunc::create([&amp;](){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sprite&nbsp;*sprite&nbsp;=&nbsp;Sprite::create("s");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>-&gt;addChild(sprite);<br />});</div><br /><div><strong>8.使用clone代替copy</strong></div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->2.0<br />CCMoveBy&nbsp;*action&nbsp;=&nbsp;(CCMoveBy*)&nbsp;move-&gt;copy();<br />action-&gt;autorelease();<br />3.0<br />action&nbsp;=&nbsp;move-&gt;clone();<br />不需要autorelease，在clone已经实现。</div><br /><div><strong>9.Physics Integration 物理引擎</strong></div><div>暂无使用，box2d 在 3.0中可以延续使用</div><div>在3.0的Physics中需要定义 PhysicsWorld, PhysicsBody, PhysicsShape, PhysicsJoint 等，于box2d相仿，使用前需要定义CC_USE_PHYSICS</div><div></div><div>&#8230;&#8230;继续等待补充</div><br /><br />----------------------------------------<br />  <br />  by 陈于喆 <br />  QQ:34174409<br />  Mail: dongbule@163.com<br />  <br /><br /><br /><br /><br /></div><img src ="http://www.blogjava.net/dongbule/aggbug/408140.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dongbule/" target="_blank">陈于喆</a> 2013-12-27 23:29 <a href="http://www.blogjava.net/dongbule/archive/2013/12/27/408140.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>