﻿<?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>C++博客-专职C++-随笔分类-cocos2dx</title><link>http://www.cppblog.com/zdhsoft/category/20805.html</link><description>不能停止的脚步</description><language>zh-cn</language><lastBuildDate>Fri, 15 Jul 2016 06:02:29 GMT</lastBuildDate><pubDate>Fri, 15 Jul 2016 06:02:29 GMT</pubDate><ttl>60</ttl><item><title>在cocos2dx 3.11.1,3.11使用cocos 3.10的解决办法及注意事项</title><link>http://www.cppblog.com/zdhsoft/archive/2016/07/08/213885.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Fri, 08 Jul 2016 01:49:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2016/07/08/213885.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/213885.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2016/07/08/213885.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/213885.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/213885.html</trackback:ping><description><![CDATA[首先吐曹一下,baidu,就是什么都找不到.虽然被医院事件整改了,但是搜索结果还是一如既往的2.<br />后来没办法,只有想办法访问香港的google,一下子就找到解决问题了.<br />因为ipv6的问题,看看到cocos3.11发布了,就想试用一下,结果没有对应的cocostduio可以用,触控脑子进水了,把cocostudio停止开发了,只搞cocos creator,也就是cocostudio的版本到3.10就截止了.<br /><span style="font-size: 18pt;"><strong>注意事项:</strong></span><br />使用进行之前,请先保存有装好vs2013,ant,ndk r10e,android sdk,还有python要2.7.6或以上.<br />在写这个文章的时候,cocos2dx 3.12发布了.还没有尝试,估计过程差不多.<br /><br />下面链接是原文解决办法:<h1><a data-ember-action="1006" href="http://forum.cocos.com/t/cocos-3-10-cocos2d-x-3-11/36812" style="color: #222222; text-decoration: none; cursor: pointer; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;">在Cocos 3.10中使用cocos2d-x 3.11新建项目</a></h1>原文:<br /><br /><p style="margin-top: 0px; color: #222222; font-family: Helvetica, Arial, sans-serif; line-height: 19px; background-color: #ffffff;">cocos2d-x 3.11 已经发布，通过以下操作，可以让Cocos 3.10识别并使用cocos2d-x 3.11</p><ol style="margin: 0px 0px 9px 25px; padding: 0px; clear: both; color: #222222; font-family: Helvetica, Arial, sans-serif; line-height: 19px; background-color: #ffffff;"><li><p>下载<a href="http://cocos2d-x.org/filedown/cocos2d-x-3.11.zip" rel="nofollow" style="color: #0088cc; text-decoration: none; cursor: pointer; word-wrap: break-word; background: transparent;">cocos2d-x 3.11<span badge-notification=""  clicks"="" title="4 次点击" style="display: inline-block; white-space: nowrap; border-radius: 10px; padding: 4px 5px 2px; vertical-align: middle; color: #919191; font-size: 11px; line-height: 1; text-align: center; top: -1px; position: relative; margin-left: 2px; border: none; background-color: #dedede;">4</span></a>并解压，解压后的文件夹放在如下目录中：<br />OS X ：&nbsp;<code style="font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; font-size: 1em; color: #333333; background: #f8f8f8;">/Applications/Cocos/Cocos2d-x/</code><br />Windows：&nbsp;<code style="font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; font-size: 1em; color: #333333; background: #f8f8f8;">C:\Cocos\Cocos2d-x\</code></p></li><li><p>打开Cocos 3.10，若未检测到cocos2d-x 3.11,需检查FrameworkVersionList.xml, 该文件位于<br />OS X：&nbsp;<code style="font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; font-size: 1em; color: #333333; background: #f8f8f8;">~/Library/Application Support/Cocos/CocosStudio2/Framework/</code><br />Windows:&nbsp;<code style="font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; font-size: 1em; color: #333333; background: #f8f8f8;">C:\Users\[username]\Documents\Cocos\CocosStudio2\Framework\</code></p><blockquote style="border-left-width: 5px; border-left-color: #e9e9e9; overflow: hidden; clear: both; margin-left: 0px; margin-right: 0px; padding: 12px; background-color: #f8f8f8;"><pre style="overflow: auto; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; font-size: 1em; margin-top: 0px !important; margin-bottom: 0px !important;"><code style="font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; font-size: 1em; overflow: auto; color: #222222; word-wrap: normal; display: block; padding: 5px 10px; max-height: 500px; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"> &lt;CocosStudio Version="3.10"&gt;     &lt;Framework Version="cocos2d-x-3.4" /&gt;     &lt;Framework Version="cocos2d-x-3.5" /&gt;     &lt;Framework Version="cocos2d-x-3.6" /&gt;     &lt;Framework Version="cocos2d-x-3.7" /&gt;     &lt;Framework Version="cocos2d-x-3.7.1" /&gt;     &lt;Framework Version="cocos2d-x-3.8" /&gt;     &lt;Framework Version="cocos2d-x-3.8.1" /&gt;     &lt;Framework Version="cocos2d-x-3.9" /&gt;     &lt;Framework Version="cocos2d-x-3.10" /&gt;     &lt;Framework Version="cocos2d-x-3.11" /&gt;   &lt;/CocosStudio&gt;</code></pre></blockquote></li><li><p>由于cocos2d-x的zip包中不包含预编译库，如果要使用预编译库项目需要运行以下两句脚本生成预编译库项目模版和预编译库：<br /><code style="font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; font-size: 1em; color: #333333; background: #f8f8f8;">cocos2d-x-3.11/tools/cocos2d-console/bin/cocos gen-templates</code><br /><code style="font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; font-size: 1em; color: #333333; background: #f8f8f8;">cocos2d-x-3.11/tools/cocos2d-console/bin/cocos gen-libs</code></p></li></ol><p style="color: #222222; font-family: Helvetica, Arial, sans-serif; line-height: 19px; background-color: #ffffff;"><code style="font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; font-size: 1em; color: #333333; background: #f8f8f8;">cocos gen-libs</code>编译过程中有可能会出现<a href="http://forum.cocos.com/t/cocos2d-x-3-11/36658/12" style="color: #0088cc; text-decoration: none; cursor: pointer; word-wrap: break-word; background: transparent;">android 编译出错</a>的问题，根据帖中提示，修改<code style="font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; font-size: 1em; color: #333333; background: #f8f8f8;">\tools\simulator\libsimulator\proj.android\Android.mk</code>,在其中添加</p><blockquote style="border-left-width: 5px; border-left-color: #e9e9e9; overflow: hidden; clear: both; margin-left: 0px; margin-right: 0px; padding: 12px; color: #222222; font-family: Helvetica, Arial, sans-serif; line-height: 19px; background-color: #f8f8f8;"><p style="margin-top: 0px !important; margin-bottom: 0px !important;">ifeq ($(COCOS_SIMULATOR_BUILD),1)<br />LOCAL_ARM_MODE := arm<br />endif</p></blockquote><p style="color: #222222; font-family: Helvetica, Arial, sans-serif; line-height: 19px; background-color: #ffffff;">之后就可以在Cocos 3.10中使用cocos2d-x 3.11的预编译库项目了。</p><img src ="http://www.cppblog.com/zdhsoft/aggbug/213885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2016-07-08 09:49 <a href="http://www.cppblog.com/zdhsoft/archive/2016/07/08/213885.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记018]cocos2dx 2.2.6 lua版控件回调</title><link>http://www.cppblog.com/zdhsoft/archive/2016/04/12/213238.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Tue, 12 Apr 2016 01:47:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2016/04/12/213238.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/213238.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2016/04/12/213238.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/213238.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/213238.html</trackback:ping><description><![CDATA[本文地址：<a href="http://www.cppblog.com/zdhsoft/archive/2016/04/12/213238.html">http://www.cppblog.com/zdhsoft/archive/2016/04/12/213238.html</a><br /><a id="viewpost1_TitleUrl" href="http://www.cppblog.com/zdhsoft/archive/2014/07/15/207659.html" style="color: #000000; text-decoration: none; font-family: Verdana, Arial, Geneva, Helvetica, sans-serif; font-size: 12px; font-weight: bold; line-height: normal; background-color: #ffffff;">cocos2dx笔记汇总</a><br />用cococstudio编辑的UI，都是带Touch事件的，这样，使得我们编写UI逻辑处理简单很多了，这个是基于lua实现，不需要改cocos2dx引擎.<br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;--判断是否是有效的事件类型<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #0000FF; ">function</span>&nbsp;isValidTouchEventType(paramEventType)<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;paramEventType&nbsp;==&nbsp;TOUCH_EVENT_ENDED&nbsp;or&nbsp;paramEventType&nbsp;==&nbsp;TOUCH_EVENT_BEGAN&nbsp;or&nbsp;paramEventType&nbsp;==&nbsp;TOUCH_EVENT_MOVED&nbsp;or&nbsp;paramEventType&nbsp;==&nbsp;TOUCH_EVENT_CANCELED&nbsp;then<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">true</span><br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">false</span><br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;end<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;--根据Widget的tag来侦听<br /><span style="color: #008080; ">10</span>&nbsp;<span style="color: #0000FF; ">function</span>&nbsp;AddListenerByTag(paramWidget,&nbsp;paramTag,&nbsp;paramEventType,&nbsp;paramCallBack)<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;not&nbsp;paramWidget&nbsp;then<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cclog("参数paramWidget为nil对象")<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;not&nbsp;ui.isValidTouchEventType(paramEventType)&nbsp;then<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cclog("未知的事件类型:"..paramEventType)<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;st&nbsp;=&nbsp;ui.getWidgetByTag(paramWidget,&nbsp;paramTag)<br /><span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;not&nbsp;st&nbsp;then<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br /><span style="color: #008080; ">24</span>&nbsp;<br /><span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;<span style="color: #0000FF; ">function</span>&nbsp;OnTouch(paramSender,&nbsp;paramType)&nbsp;<br /><span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;paramType&nbsp;==&nbsp;paramEventType&nbsp;then<br /><span style="color: #008080; ">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paramCallBack(paramSender,&nbsp;paramType)&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br /><span style="color: #008080; ">30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;st:addTouchEventListener(OnTouch)<br /><span style="color: #008080; ">31</span>&nbsp;end<br /><span style="color: #008080; ">32</span>&nbsp;<br /><span style="color: #008080; ">33</span>&nbsp;--根据Widget的Name来侦听<br /><span style="color: #008080; ">34</span>&nbsp;<span style="color: #0000FF; ">function</span>&nbsp;AddListenerByName(paramWidget,&nbsp;paramWidgetName,&nbsp;paramEventType,&nbsp;paramCallBack)<br /><span style="color: #008080; ">35</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;not&nbsp;paramWidget&nbsp;then<br /><span style="color: #008080; ">36</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cclog("参数paramWidget为nil对象")<br /><span style="color: #008080; ">37</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br /><span style="color: #008080; ">38</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;<br /><span style="color: #008080; ">39</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;not&nbsp;ui.isValidTouchEventType(paramEventType)&nbsp;then<br /><span style="color: #008080; ">40</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cclog("未知的事件类型:"..paramEventType)<br /><span style="color: #008080; ">41</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br /><span style="color: #008080; ">42</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br /><span style="color: #008080; ">43</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">44</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;st&nbsp;=&nbsp;ui.getWidgetByName(paramWidget,&nbsp;paramWidgetName)<br /><span style="color: #008080; ">45</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;not&nbsp;st&nbsp;then<br /><span style="color: #008080; ">46</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br /><span style="color: #008080; ">47</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br /><span style="color: #008080; ">48</span>&nbsp;<br /><span style="color: #008080; ">49</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;<span style="color: #0000FF; ">function</span>&nbsp;OnTouch(paramSender,&nbsp;paramType)&nbsp;<br /><span style="color: #008080; ">50</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;paramType&nbsp;==&nbsp;paramEventType&nbsp;then<br /><span style="color: #008080; ">51</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paramCallBack(paramSender,&nbsp;paramType)&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">52</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">53</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br /><span style="color: #008080; ">54</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;st:addTouchEventListener(OnTouch)<br /><span style="color: #008080; ">55</span>&nbsp;end</div>使用实例：<br /><br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;local&nbsp;stTopInfoItem&nbsp;=&nbsp;GUIReader:shareReader():widgetFromJsonFile("ui/top_info.json")<br /><span style="color: #008080; ">2</span>&nbsp;ui.AddListenerByTag(stTopInfoItem,&nbsp;TAG.TOP_RET,&nbsp;TOUCH_EVENT_ENDED,&nbsp;&nbsp;PlaceRandomLayer.OnReturnMain)</div><img src ="http://www.cppblog.com/zdhsoft/aggbug/213238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2016-04-12 09:47 <a href="http://www.cppblog.com/zdhsoft/archive/2016/04/12/213238.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记017]cocos2dx 2.2.6 lua的类型转换</title><link>http://www.cppblog.com/zdhsoft/archive/2016/04/08/213211.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Fri, 08 Apr 2016 01:57:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2016/04/08/213211.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/213211.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2016/04/08/213211.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/213211.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/213211.html</trackback:ping><description><![CDATA[<div>本文地址：<a href="http://www.cppblog.com/zdhsoft/archive/2016/04/08/213211.aspx">http://www.cppblog.com/zdhsoft/archive/2016/04/08/213211.aspx</a><br />因工作需要，转战cocos2dx 2.2.6的lua版本。对于lua倒是不难，很容易上手。</div><div>安装了vs2012再配置上BabeLua插件(对于vs2015,vs2013有对应的版本）,就可以断点调试了，应该算是我见过的最牛的lua调试环境，再加上vs,就可以哈哈了。</div><div>在使用cocos2dx 2.2.6，用的是cocostudio 1.6编辑UI（虽然还有很多不足，但已经可以胜任很多工作了）。</div><div>lua 代码如下：<br /><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 />-->－－在init中<br />&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;ul&nbsp;=TouchGroup:create();<br />&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;uiLayout&nbsp;=&nbsp;GUIReader:shareReader():widgetFromJsonFile("yy/xx/xxxxxxxx.json")<br />&nbsp;&nbsp;&nbsp;&nbsp;ul:addWidget(uiLayout)<br />&nbsp;&nbsp;&nbsp;&nbsp;self:addChild(ul)<br />--&nbsp;假定某个数字控件<br />&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;numTextTag&nbsp;=&nbsp;100<br />&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;numText&nbsp;=&nbsp;ul:getWidgetByTag(numTextTag)<br />&nbsp;&nbsp;&nbsp;&nbsp;numText:setStringValue("123456789")&nbsp;&nbsp;--结果在这行报错</div><br /><div>于是想google一下，哎算了，还是百度吧</div><div>原来用getWidgetByTag返回的是Widget类型，不是原来的类型，需要用tolua.cast做一次强转。但要看这个是什么类型怎么办？</div><div>试了CCLabelAtlas，还是报错。于是打开用cocostudio导出的json文件，发现有对应的classname，要只加上这个类型就可以了</div><div>lua代码如下：<br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp;local&nbsp;numTextTag&nbsp;=&nbsp;100<br />&nbsp;&nbsp;&nbsp;local&nbsp;numText&nbsp;=&nbsp;ul:getWidgetByTag(numTextTag)<br />&nbsp;&nbsp;&nbsp;local&nbsp;numText&nbsp;=&nbsp;tolua.cast(numText,&nbsp;"LabelAtlas")<br />&nbsp;&nbsp;&nbsp;numText:setStringValue("123456789")&nbsp;&nbsp;--结果OK &nbsp;&nbsp;</div><br /><div>这样就OK了,<br />附导出json的截图：<br /><img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20160408095222.png" width="732" height="443" alt="" /></div></div></div><img src ="http://www.cppblog.com/zdhsoft/aggbug/213211.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2016-04-08 09:57 <a href="http://www.cppblog.com/zdhsoft/archive/2016/04/08/213211.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Cocos2dx杂谈</title><link>http://www.cppblog.com/zdhsoft/archive/2016/03/14/212999.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Sun, 13 Mar 2016 16:07:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2016/03/14/212999.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/212999.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2016/03/14/212999.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/212999.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/212999.html</trackback:ping><description><![CDATA[事隔一年，重拾cocos2dx,已经由3.2变到3.10了,这个升级速度飞快，同时也表明了，cocos2dx的热度非常高了，其工具的集成度也非常高了。3.2版的时候，还没有cocos商店，现在用了(好像是从3.3开始有的）,在里面可以下载很多东西，主要有引擎和工具以及各种源代码。有些好的代码，还可以收费。这个不错。创建cocos2d的工程，也越发的简单了。最初接触2.x的时候，还需要安装cygwin，现在只要装NDK就可以了。<br />又要重新学习了，停一天，感觉就会落后很多。<img src ="http://www.cppblog.com/zdhsoft/aggbug/212999.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2016-03-14 00:07 <a href="http://www.cppblog.com/zdhsoft/archive/2016/03/14/212999.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记016]cocos2dx 3.2 的UserDefault</title><link>http://www.cppblog.com/zdhsoft/archive/2014/09/03/208216.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Wed, 03 Sep 2014 02:23:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/09/03/208216.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/208216.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/09/03/208216.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/208216.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/208216.html</trackback:ping><description><![CDATA[本文地址：http://www.cppblog.com/zdhsoft/archive/2014/09/03/208216.html<br />本文基于cocos2dx 3.2<br />cocos2dx 提供了一个基于xml的用户数据存贮类，给基于cocos2dx开发的用户数据存贮，这个类名就是UserDefault，在cocos2dx 2.x中是CCUserDefault。我的程序用的就是这个，但是最近老出错，于是分析源代码，发现了一个让我震惊的东西。经过分析，发现用UserDefault每读写一次数据，都会创建一个tinyxml对象，然后读取xml内容。如果是写数据，还是写入xml一次。下面是对应的代码：<br />读取key，所以各种读取key的操作，都是类似这样。<br /><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 />--><span style="color: #0000FF; ">double</span>&nbsp;UserDefault::getDoubleForKey(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;pKey,&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;defaultValue)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;value&nbsp;=&nbsp;nullptr;<br />&nbsp;&nbsp;&nbsp;&nbsp;tinyxml2::XMLElement*&nbsp;rootNode;<br />&nbsp;&nbsp;&nbsp;&nbsp;tinyxml2::XMLDocument*&nbsp;doc;<br />&nbsp;&nbsp;&nbsp;&nbsp;tinyxml2::XMLElement*&nbsp;node;<br />&nbsp;&nbsp;&nbsp;&nbsp;node&nbsp;=&nbsp;&nbsp;getXMLNodeForKey(pKey,&nbsp;&amp;rootNode,&nbsp;&amp;doc);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;find&nbsp;the&nbsp;node</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(node&nbsp;&amp;&amp;&nbsp;node-&gt;FirstChild())<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;=&nbsp;(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*)(node-&gt;FirstChild()-&gt;Value());<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;ret&nbsp;=&nbsp;defaultValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(value)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;utils::atof(value);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(doc)&nbsp;delete&nbsp;doc;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ret;<br />}</div>&nbsp;关于getXMLNodeForKey的实现<br /><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 />--><span style="color: #008000; ">/*</span><span style="color: #008000; ">*<br />&nbsp;*&nbsp;define&nbsp;the&nbsp;functions&nbsp;here&nbsp;because&nbsp;we&nbsp;don't&nbsp;want&nbsp;to<br />&nbsp;*&nbsp;export&nbsp;xmlNodePtr&nbsp;and&nbsp;other&nbsp;types&nbsp;in&nbsp;"CCUserDefault.h"<br />&nbsp;</span><span style="color: #008000; ">*/</span><br /><br /><span style="color: #0000FF; ">static</span>&nbsp;tinyxml2::XMLElement*&nbsp;getXMLNodeForKey(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;pKey,&nbsp;tinyxml2::XMLElement**&nbsp;rootNode,&nbsp;tinyxml2::XMLDocument&nbsp;**doc)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;tinyxml2::XMLElement*&nbsp;curNode&nbsp;=&nbsp;nullptr;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;check&nbsp;the&nbsp;key&nbsp;value</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(!&nbsp;pKey)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;nullptr;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">do</span>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tinyxml2::XMLDocument*&nbsp;xmlDoc&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;tinyxml2::XMLDocument();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*doc&nbsp;=&nbsp;xmlDoc;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::<span style="color: #0000FF; ">string</span>&nbsp;xmlBuffer&nbsp;=&nbsp;FileUtils::getInstance()-&gt;getStringFromFile(UserDefault::getInstance()-&gt;getXMLFilePath());<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(xmlBuffer.empty())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCLOG("can&nbsp;not&nbsp;read&nbsp;xml&nbsp;file");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlDoc-&gt;Parse(xmlBuffer.c_str(),&nbsp;xmlBuffer.size());<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;get&nbsp;root&nbsp;node</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*rootNode&nbsp;=&nbsp;xmlDoc-&gt;RootElement();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(nullptr&nbsp;==&nbsp;*rootNode)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCLOG("read&nbsp;root&nbsp;node&nbsp;error");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;find&nbsp;the&nbsp;node</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curNode&nbsp;=&nbsp;(*rootNode)-&gt;FirstChildElement();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(nullptr&nbsp;!=&nbsp;curNode)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;nodeName&nbsp;=&nbsp;curNode-&gt;Value();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(!strcmp(nodeName,&nbsp;pKey))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curNode&nbsp;=&nbsp;curNode-&gt;NextSiblingElement();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(0);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;curNode;<br />}</div>关于setValueForKey的实现<br /><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 />--><span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;setValueForKey(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;pKey,&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>*&nbsp;pValue)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tinyxml2::XMLElement*&nbsp;rootNode;<br />&nbsp;&nbsp;&nbsp;&nbsp;tinyxml2::XMLDocument*&nbsp;doc;<br />&nbsp;&nbsp;&nbsp;&nbsp;tinyxml2::XMLElement*&nbsp;node;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;check&nbsp;the&nbsp;params</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(!&nbsp;pKey&nbsp;||&nbsp;!&nbsp;pValue)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;find&nbsp;the&nbsp;node</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;node&nbsp;=&nbsp;getXMLNodeForKey(pKey,&nbsp;&amp;rootNode,&nbsp;&amp;doc);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;if&nbsp;node&nbsp;exist,&nbsp;change&nbsp;the&nbsp;content</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(node)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(node-&gt;FirstChild())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node-&gt;FirstChild()-&gt;SetValue(pValue);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tinyxml2::XMLText*&nbsp;content&nbsp;=&nbsp;doc-&gt;NewText(pValue);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node-&gt;LinkEndChild(content);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(rootNode)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tinyxml2::XMLElement*&nbsp;tmpNode&nbsp;=&nbsp;doc-&gt;NewElement(pKey);<span style="color: #008000; ">//</span><span style="color: #008000; ">new&nbsp;tinyxml2::XMLElement(pKey);</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rootNode-&gt;LinkEndChild(tmpNode);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tinyxml2::XMLText*&nbsp;content&nbsp;=&nbsp;doc-&gt;NewText(pValue);<span style="color: #008000; ">//</span><span style="color: #008000; ">new&nbsp;tinyxml2::XMLText(pValue);</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpNode-&gt;LinkEndChild(content);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;save&nbsp;file&nbsp;and&nbsp;free&nbsp;doc</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(doc)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doc-&gt;SaveFile(UserDefault::getInstance()-&gt;getXMLFilePath().c_str());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;doc;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div>它的flush方法也有惊人的发现：<br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">void</span>&nbsp;UserDefault::flush()<br />{<br />}</div>它是一个空函数，也就是说，你在写入数据的时候，会以为最后会通过flush才会写入数据，没想全错了！<br />如果你用它存贮比较多的字段时，你就会现，你悲剧了。<br />幸好发现及时，这里不建议大家使用UserDefault做为你的数据存贮。<br />可以可以用自定义的方式文件读写<br />如可以通过标准的C读写 fopen,fwrite等或iostream也都可以，重点是读写的文件路径，会有所不同，下面是得到文件路径的例子<br /><div>std::string strFullFileName = FileUtils::getInstance()-&gt;getWritablePath() + DATA_FILE_NAME;<br /><br />最后：不要求写太高质量的代码，但也不要写的太低质量了</div><img src ="http://www.cppblog.com/zdhsoft/aggbug/208216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-09-03 10:23 <a href="http://www.cppblog.com/zdhsoft/archive/2014/09/03/208216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记015]关于cocos2dx Button三种状态说明</title><link>http://www.cppblog.com/zdhsoft/archive/2014/08/23/208104.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Sat, 23 Aug 2014 06:41:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/08/23/208104.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/208104.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/08/23/208104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/208104.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/208104.html</trackback:ping><description><![CDATA[<div><div>本文地址：http://www.cppblog.com/zdhsoft/archive/2014/08/23/208104.html</div><div>经过几天的填坑，终于将现有的项目由cocos2dx 2.2.2移到cocos2dx 3.2，差点放弃3.2了,但在最后一刻，又把坑填平了。</div><div>cocos2dx 2.x到3.x是一个巨大的变化，可以算是完全不同。以前的类名，全是CC开头的，现在全部去掉了。很多enum都改用enum class了</div><div>所以，你知道2.x，对不起，你比小白学习3.x更难。你用2.x的做法用在3.x，那就全是坑了...</div><div></div><div></div><div>言归正传，</div><div>2.x的时候，按钮设置为Disabled的时候，是看不见。3.x的是没有禁用状态的，但是不会响应touch事件。</div><div>在cocostudio UI编辑的时候，按钮是三种状态的（有三个不同状态的图片），但没有相应改变状态的函数</div><div>于是，就分析源码，发现它是在onPressStateChangedToDisabled();更改为禁用状态的图片。再找，是于</div><div>在其基类的ui:Widget的setBright和setHighlight有调用这个onPressStateChangedToDisabled，但是setEnabled仅仅是改为了一个成员变化，</div><div>所以你在这里设置disabled，就不会有任何效果。除了上面两个函数之后，还有一个函数setBrightStyle是设置按钮是普通状态还是高亮状态</div><div>下面是BrightStyle的定义</div><div>&nbsp; &nbsp; enum class BrightStyle</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; NONE = -1,</div><div>&nbsp; &nbsp; &nbsp; &nbsp; NORMAL,</div><div>&nbsp; &nbsp; &nbsp; &nbsp; HIGHLIGHT</div><div>&nbsp; &nbsp; };</div><div>下面是一个包装的禁用启用的函数</div><div><span style="white-space:pre">	</span>//设置按钮禁用启用状态</div><div><span style="white-space:pre">	</span>inline void SetButtonEnabled(ui::Button * paramButton, bool paramEnabled)</div><div><span style="white-space:pre">	</span>{</div><div><span style="white-space:pre">		</span>if (isNULL(paramButton)) return;</div><div><span style="white-space:pre">		</span>if (paramEnabled)</div><div><span style="white-space:pre">		</span>{</div><div><span style="white-space:pre">			</span>paramButton-&gt;setBright(true);</div><div><span style="white-space:pre">			</span>paramButton-&gt;setEnabled(true);</div><div><span style="white-space:pre">			</span>paramButton-&gt;setTouchEnabled(true);</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">		</span>else</div><div><span style="white-space:pre">		</span>{</div><div><span style="white-space:pre">			</span>paramButton-&gt;setBright(false);</div><div><span style="white-space:pre">			</span>paramButton-&gt;setEnabled(false);</div><div><span style="white-space:pre">			</span>paramButton-&gt;setTouchEnabled(false);</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">	</span>}</div><div></div></div><img src ="http://www.cppblog.com/zdhsoft/aggbug/208104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-08-23 14:41 <a href="http://www.cppblog.com/zdhsoft/archive/2014/08/23/208104.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>移植cocos2dx 3.2总结：结果不推荐使用</title><link>http://www.cppblog.com/zdhsoft/archive/2014/08/22/208096.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Fri, 22 Aug 2014 07:00:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/08/22/208096.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/208096.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/08/22/208096.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/208096.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/208096.html</trackback:ping><description><![CDATA[<span style="color: #333333; font-family: 'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif; line-height: 24px; background-color: #ffffff;">结果是：大家不要采用3.x系列的cocos2dx，还是用2.2.x吧</span><br style="outline: none; color: #333333; font-family: 'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif; line-height: 24px; background-color: #ffffff;" /><span style="color: #333333; font-family: 'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif; line-height: 24px; background-color: #ffffff;">原因如下：</span><br style="outline: none; color: #333333; font-family: 'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif; line-height: 24px; background-color: #ffffff;" /><span style="color: #333333; font-family: 'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif; line-height: 24px; background-color: #ffffff;">1、坑非常多，多的让你放弃</span><br style="outline: none; color: #333333; font-family: 'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif; line-height: 24px; background-color: #ffffff;" /><span style="color: #333333; font-family: 'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif; line-height: 24px; background-color: #ffffff;">2、兼容性非常不好，如果你是2.x的工程，还是用2.x的吧</span><br style="outline: none; color: #333333; font-family: 'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif; line-height: 24px; background-color: #ffffff;" /><span style="color: #333333; font-family: 'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif; line-height: 24px; background-color: #ffffff;">3、资料非常少，开发方提供了3.x版本，但是3.x的版本各项资料都非常欠缺！论坛上各种3.x的问题贴子，很多都没人回答。</span><br style="outline: none; color: #333333; font-family: 'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif; line-height: 24px; background-color: #ffffff;" /><span style="color: #333333; font-family: 'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif; line-height: 24px; background-color: #ffffff;">4、3.x做了很多无所谓的精减，结果是，你用到这些他们精减的库时，你只有去哭了。（你的开发环境不可能和他们的一样，他们没问题，你的一定会有问题）</span><br style="outline: none; color: #333333; font-family: 'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif; line-height: 24px; background-color: #ffffff;" /><span style="color: #333333; font-family: 'Helvetica Neue', Helvetica, STheiti, 微软雅黑, 黑体, Arial, Tahoma, sans-serif, serif; line-height: 24px; background-color: #ffffff;">5、千万不要拿来3.x做商业化的程序，会大大增加你的开发周期和成本。</span><img src ="http://www.cppblog.com/zdhsoft/aggbug/208096.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-08-22 15:00 <a href="http://www.cppblog.com/zdhsoft/archive/2014/08/22/208096.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记014]一个用于cocos2dx的对象智能指针模板</title><link>http://www.cppblog.com/zdhsoft/archive/2014/08/01/207880.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Fri, 01 Aug 2014 03:30:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/08/01/207880.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/207880.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/08/01/207880.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/207880.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/207880.html</trackback:ping><description><![CDATA[本文地址：<a href="http://www.cppblog.com/zdhsoft/archive/2014/08/01/207880.html">http://www.cppblog.com/zdhsoft/archive/2014/08/01/207880.html</a><br />现在C++智能指针有无数个实现了，多一个也无所谓。哈。<br />这个智能指针是专门为cocos2dx 2.2.x定制的。主要是为了方便使用，同时又要遵循现有的cocos2dx的内存管理。特实现这样一个智能指针。在使用的时候不需要考虑retain或release操作，也不需要new或delete操作！<br />下面是实现代码<br /><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 />--><span style="color: #008000; ">//</span><span style="color: #008000; ">在很多时候，类的成员是CCObject的子对象，为了保证对其正常使用，又要遵循cocos2dx的内存管理，特实现了这样的一个智能指针，方便使用。</span><span style="color: #008000; "><br /></span>#ifndef&nbsp;_X_COCOS_PTR_H_<br /><span style="color: #0000FF; ">#define</span>&nbsp;_X_COCOS_PTR_H_<br /><span style="color: #0000FF; ">namespace</span>&nbsp;zdh<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;template&lt;<span style="color: #0000FF; ">class</span>&nbsp;T&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;XCocosPtr<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XCocosPtr()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:m_Object(nullptr)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XCocosPtr(T&nbsp;*&nbsp;paramObject)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:m_Object(paramObject)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(m_Object&nbsp;!=&nbsp;nullptr)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Object-&gt;retain();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XCocosPtr(<span style="color: #0000FF; ">const</span>&nbsp;XCocosPtr&nbsp;&amp;&nbsp;paramPtr)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:m_Object(paramPtr.m_Object)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(m_Object&nbsp;!=&nbsp;nullptr)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Object-&gt;retain();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~XCocosPtr()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ptr_release();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">重载赋值运算符</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XCocosPtr&nbsp;&amp;&nbsp;<span style="color: #0000FF; ">operator</span>&nbsp;=&nbsp;(T&nbsp;*&nbsp;paramObject)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">set</span>(paramObject);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;*<span style="color: #0000FF; ">this</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XCocosPtr&nbsp;&amp;&nbsp;<span style="color: #0000FF; ">operator</span>&nbsp;=&nbsp;(XCocosPtr&nbsp;&amp;&nbsp;paramObject)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">set</span>(paramObject.m_Object);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;*<span style="color: #0000FF; ">this</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">重载比较运算符</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">bool</span>&nbsp;<span style="color: #0000FF; ">operator</span>&nbsp;==&nbsp;(T&nbsp;*&nbsp;paramObject)&nbsp;<span style="color: #0000FF; ">const</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;m_Object&nbsp;==&nbsp;paramObject;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">bool</span>&nbsp;<span style="color: #0000FF; ">operator</span>&nbsp;!=&nbsp;(T&nbsp;*&nbsp;paramObject)&nbsp;<span style="color: #0000FF; ">const</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;m_Object&nbsp;!=&nbsp;paramObject;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">重载*运算符</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;&amp;&nbsp;<span style="color: #0000FF; ">operator</span>*()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;*m_Object;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;T&nbsp;&amp;&nbsp;<span style="color: #0000FF; ">operator</span>*()&nbsp;<span style="color: #0000FF; ">const</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;*m_Object;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">重载-&gt;运算符，使其可以像指针那样使用</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;*&nbsp;<span style="color: #0000FF; ">operator</span>&nbsp;-&gt;()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;m_Object;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;T&nbsp;*&nbsp;<span style="color: #0000FF; ">operator</span>&nbsp;-&gt;()&nbsp;<span style="color: #0000FF; ">const</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;m_Object;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">判断对象是否为空</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">bool</span>&nbsp;is_null()&nbsp;<span style="color: #0000FF; ">const</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;m_Object&nbsp;==&nbsp;nullptr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">判断对象是否为不空</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">bool</span>&nbsp;is_not_null()&nbsp;<span style="color: #0000FF; ">const</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;m_Object&nbsp;!=&nbsp;nullptr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">创建对象&nbsp;这里会使用调用对象的create来创建对象</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;*&nbsp;create()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;*&nbsp;pNewObject&nbsp;=&nbsp;T::create();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">set</span>(pNewObject);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;pNewObject;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">设置对象</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;<span style="color: #0000FF; ">set</span>(T&nbsp;*&nbsp;paramObject)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(m_Object&nbsp;!=&nbsp;paramObject)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;*&nbsp;p&nbsp;=&nbsp;m_Object;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Object&nbsp;=&nbsp;paramObject;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(m_Object&nbsp;!=&nbsp;nullptr)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Object-&gt;retain();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(isNotNULL(p))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p-&gt;release();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">取对象</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;*&nbsp;<span style="color: #0000FF; ">get</span>()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;m_Object;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">这里没有使用release这个名称，是为了防止和object的release混淆</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;ptr_release()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(m_Object&nbsp;!=&nbsp;nullptr)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Object-&gt;release();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Object&nbsp;=&nbsp;nullptr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;*&nbsp;m_Object;<br />&nbsp;&nbsp;&nbsp;&nbsp;};<br />}<br /><span style="color: #0000FF; ">#endif</span></div>例子<br /><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 />--><span style="color: #008000; ">//</span><span style="color: #008000; ">类的数据成员定义：</span><span style="color: #008000; "><br /></span>XCocosPtr&lt;CCSprite&gt;&nbsp;m_Sprite;<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">在init中</span><span style="color: #008000; "><br /></span>m_Sprite&nbsp;=&nbsp;CCSprite::create("<img src="http://www.cppblog.com/Images/dot.gif" alt="" />");<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">或</span><span style="color: #008000; "><br /></span>m_Sprite.create()</div><img src ="http://www.cppblog.com/zdhsoft/aggbug/207880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-08-01 11:30 <a href="http://www.cppblog.com/zdhsoft/archive/2014/08/01/207880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记013]一个使用CCRenderTexture创建动态纹理显示数字的类</title><link>http://www.cppblog.com/zdhsoft/archive/2014/07/25/207805.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Fri, 25 Jul 2014 07:35:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/07/25/207805.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/207805.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/07/25/207805.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/207805.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/207805.html</trackback:ping><description><![CDATA[本文地址：<a href="http://www.cppblog.com/zdhsoft/archive/2014/07/25/207805.html">http://www.cppblog.com/zdhsoft/archive/2014/07/25/207805.html</a><br />用CCLabelTTF显示的数字不好看，于是就想到用图片来代理。目前网上的实现都是把每个数字做一个CCSprite组合的方式。但是我想，动态生成纹理的方式。没有就只好自己手动写一个。<br />头文件<br /><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 />-->#ifndef&nbsp;_X_NUMBER_H_<br /><span style="color: #0000FF; ">#define</span>&nbsp;_X_NUMBER_H_<br />#include&nbsp;&lt;cocos2d.h&gt;<br />#include&nbsp;&lt;xtype.h&gt;<br /><span style="color: #0000FF; ">namespace</span>&nbsp;cocos2d<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">基于图片显示的数字</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这个类不是用一个一个数字拼起来，而是渲染成一个独立的纹理<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zdh::XDDWord是一个64位无符号整数<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;CCPictureNumber&nbsp;:&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;CCSprite<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;CCSprite&nbsp;Inherited;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCPictureNumber();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~CCPictureNumber();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">virtual</span>&nbsp;<span style="color: #0000FF; ">bool</span>&nbsp;init(<span style="color: #0000FF; ">void</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;BuildNumber(zdh::XDDWord&nbsp;paramNumber,&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*&nbsp;paramNumberResName);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;BuildNumber(zdh::XDDWord&nbsp;paramNumber,&nbsp;CCTexture2D&nbsp;*&nbsp;paramTexture);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;BuildNumber(zdh::XDDWord&nbsp;paramNumber);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATE_FUNC(CCPictureNumber);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;setNumberTexture(CCTexture2D&nbsp;*&nbsp;paramTexture);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;setNumberTexture(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*&nbsp;paramNumberResName);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCTexture2D&nbsp;*&nbsp;getNumberTexture();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zdh::XDDWord&nbsp;getNumber()&nbsp;<span style="color: #0000FF; ">const</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;setNumber(zdh::XDDWord&nbsp;paramNumber);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;Build();<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCTexture2D&nbsp;*&nbsp;m_NumberTexture;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zdh::XDDWord&nbsp;m_Number;<br />&nbsp;&nbsp;&nbsp;&nbsp;};<br />}<br /><span style="color: #0000FF; ">#endif</span></div><br />源文件<br /><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 />-->#include&nbsp;"xpicture_number.h"<br />#include&nbsp;&lt;xstring.h&gt;<br /><span style="color: #0000FF; ">namespace</span>&nbsp;cocos2d<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">从指定资源名称构建</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;CCPictureNumber::BuildNumber(zdh::XDDWord&nbsp;paramNumber,&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*&nbsp;paramNumberResName)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>-&gt;setNumber(paramNumber);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>-&gt;setNumberTexture(CCTextureCache::sharedTextureCache()-&gt;addImage(paramNumberResName));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">this</span>-&gt;Build();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">从指定纹理构建</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;CCPictureNumber::BuildNumber(zdh::XDDWord&nbsp;paramNumber,&nbsp;CCTexture2D&nbsp;*&nbsp;paramTexture)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>-&gt;setNumber(paramNumber);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>-&gt;setNumberTexture(paramTexture);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">this</span>-&gt;Build();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;CCPictureNumber::BuildNumber(zdh::XDDWord&nbsp;paramNumber)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>-&gt;setNumber(paramNumber);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">this</span>-&gt;Build();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">bool</span>&nbsp;CCPictureNumber::init(<span style="color: #0000FF; ">void</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(!Inherited::init())&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">false</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">true</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;CCPictureNumber::CCPictureNumber()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_NumberTexture&nbsp;=&nbsp;nullptr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Number&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;CCPictureNumber::~CCPictureNumber()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(zdh::isNotNULL(m_NumberTexture))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_NumberTexture-&gt;release();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;CCPictureNumber::setNumberTexture(CCTexture2D&nbsp;*&nbsp;paramTexture)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(m_NumberTexture&nbsp;==&nbsp;paramTexture)&nbsp;<span style="color: #0000FF; ">return</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(zdh::isNotNULL(m_NumberTexture))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_NumberTexture-&gt;release();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_NumberTexture&nbsp;=&nbsp;paramTexture;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(zdh::isNotNULL(m_NumberTexture))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_NumberTexture-&gt;retain();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;CCPictureNumber::setNumberTexture(<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*&nbsp;paramNumberResName)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>-&gt;setNumberTexture(CCTextureCache::sharedTextureCache()-&gt;addImage(paramNumberResName));<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;CCTexture2D&nbsp;*&nbsp;CCPictureNumber::getNumberTexture()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;m_NumberTexture;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;CCPictureNumber::Build()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(zdh::isNULL(m_NumberTexture))&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;zdh::ERR_FAIL;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zdh::XAnsiString&nbsp;strNumber(m_Number);&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">将整数转换为字符串</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;iNumCount&nbsp;=&nbsp;strNumber.getLength();&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">取得字符个数</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCSize&nbsp;stSize&nbsp;=&nbsp;m_NumberTexture-&gt;getContentSize();&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">取得纹理大小，要求纹理中每个数字都是等宽等高，并依照0123456789排列</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;iNumWidth&nbsp;=&nbsp;(<span style="color: #0000FF; ">int</span>)stSize.width&nbsp;/&nbsp;10;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">纹理中每个数字的宽度</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;iNumHeight&nbsp;=&nbsp;(<span style="color: #0000FF; ">int</span>)stSize.height;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">纹理中每个数字的高度</span><span style="color: #008000; "><br /></span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCRenderTexture&nbsp;*&nbsp;pRT&nbsp;=&nbsp;CCRenderTexture::create(iNumWidth&nbsp;*&nbsp;iNumCount,&nbsp;iNumHeight);&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">创建渲染纹理对象，并数字确定宽度</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCSprite&nbsp;*&nbsp;pSprite&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;CCSprite::create();&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">创建精灵对象，用于绘制数字</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSprite-&gt;setAnchorPoint(0,&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSprite-&gt;setTexture(m_NumberTexture);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCRect&nbsp;stRect;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRT-&gt;begin();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;iNumCount;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;iNumber&nbsp;=&nbsp;strNumber[i]&nbsp;-&nbsp;'0';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">设置要显示数字的纹理区域，这个区域是指参数中paramTexture中区域</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stRect.setRect(iNumber&nbsp;*&nbsp;iNumWidth,&nbsp;0,&nbsp;iNumWidth,&nbsp;iNumHeight);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSprite-&gt;setTextureRect(stRect,&nbsp;<span style="color: #0000FF; ">false</span>,&nbsp;stRect.size);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSprite-&gt;setPosition(i&nbsp;*&nbsp;iNumWidth,&nbsp;0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">计算显示的偏移位置</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSprite-&gt;visit();&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">渲染到pRT中</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRT-&gt;end();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">取得生成的纹理</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>-&gt;setTexture(pRT-&gt;getSprite()-&gt;getTexture());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">设置显示的内容</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stRect.setRect(0,&nbsp;0,&nbsp;iNumWidth&nbsp;*&nbsp;iNumCount,&nbsp;iNumHeight);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>-&gt;setTextureRect(stRect,&nbsp;<span style="color: #0000FF; ">false</span>,&nbsp;stRect.size);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">默认的情况下，通过CCRenderTexture得到的纹理是倒立的，这里需要做一下翻转</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>-&gt;setFlipY(<span style="color: #0000FF; ">true</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">释放资源</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pSprite;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pRT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;zdh::ERR_OK;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;zdh::XDDWord&nbsp;CCPictureNumber::getNumber()&nbsp;<span style="color: #0000FF; ">const</span><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;m_Number;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;CCPictureNumber::setNumber(zdh::XDDWord&nbsp;paramNumber)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Number&nbsp;=&nbsp;paramNumber;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</div>数字图片文件<br /><img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/font2.png" width="380" height="50" alt="" /><br />使用例子<br /><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 />-->&nbsp; &nbsp; &nbsp; &nbsp; CCPictureNumber&nbsp;*&nbsp;pNum&nbsp;=&nbsp;CCPictureNumber::create();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNum-&gt;BuildNumber(1234567,&nbsp;"ui_play_num05.png");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNum-&gt;setPosition(200,&nbsp;200);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNum-&gt;setAnchorPoint(0,&nbsp;0);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>-&gt;addChild(pNum,&nbsp;100);</div>//<img src ="http://www.cppblog.com/zdhsoft/aggbug/207805.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-07-25 15:35 <a href="http://www.cppblog.com/zdhsoft/archive/2014/07/25/207805.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记012]一定简易的UI配置类</title><link>http://www.cppblog.com/zdhsoft/archive/2014/07/23/207760.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Wed, 23 Jul 2014 12:04:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/07/23/207760.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/207760.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/07/23/207760.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/207760.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/207760.html</trackback:ping><description><![CDATA[本文地址：<a href="http://www.cppblog.com/zdhsoft/archive/2014/07/23/207760.html">http://www.cppblog.com/zdhsoft/archive/2014/07/23/207760.html</a><br />使用cocostudio可以装载编辑好的UI，但是过于复杂。特别是在加截UI后，发现触屏事件有些问题。如果直接使用程序写死加载UI又过于麻烦。花点时间，增加了一个基于ini的UI配置类，目前只实现了CCSprite和plist的加载。其它的可以后面慢慢加<br />头文件<br /><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 />-->#ifndef&nbsp;_X_UI_H_<br /><span style="color: #0000FF; ">#define</span>&nbsp;_X_UI_H_<br />#include&nbsp;&lt;cocos2d.h&gt;<br /><span style="color: #0000FF; ">namespace</span>&nbsp;zdh<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;USING_NS_CC;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;CreateByXUI(CCNode&nbsp;*&nbsp;paramParent,&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*&nbsp;paramFileName);<br />}<br /><span style="color: #0000FF; ">#endif</span></div>源文件<br /><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 />-->#include&nbsp;"xui.h"<br />#include&nbsp;"xini.h"<br />#include&nbsp;"xlog.h"<br /><br /><span style="color: #0000FF; ">namespace</span>&nbsp;zdh<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;xui<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;GetIntValue(XIniText::TSection&nbsp;*&nbsp;paramSection,&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*&nbsp;paramKeyName)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auto&nbsp;pV&nbsp;=&nbsp;paramSection-&gt;getEntry(paramKeyName);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(isNULL(pV))&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;pV-&gt;getValue().getField().ToIntDef(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;GetDoubleValue(XIniText::TSection&nbsp;*&nbsp;paramSection,&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*&nbsp;paramKeyName)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auto&nbsp;pV&nbsp;=&nbsp;paramSection-&gt;getEntry(paramKeyName);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(isNULL(pV))&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;pV-&gt;getValue().getField().ToIntDef(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;XAnsiString&nbsp;&amp;&nbsp;GetStringValue(XIniText::TSection&nbsp;*&nbsp;paramSection,&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*&nbsp;paramKeyName)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;XAnsiString&nbsp;strEmpty;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auto&nbsp;pV&nbsp;=&nbsp;paramSection-&gt;getEntry(paramKeyName);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(isNULL(pV))&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;strEmpty;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;pV-&gt;getValue().getField();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;};<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;CreateSpriteByXUI(CCNode&nbsp;*&nbsp;paramParent,&nbsp;XIniText::TSection&nbsp;*&nbsp;paramSpriteSection)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XInt&nbsp;ix&nbsp;=&nbsp;xui::GetIntValue(paramSpriteSection,&nbsp;"x");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XInt&nbsp;iy&nbsp;=&nbsp;xui::GetIntValue(paramSpriteSection,&nbsp;"y");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XInt&nbsp;izOrder&nbsp;=&nbsp;xui::GetIntValue(paramSpriteSection,&nbsp;"zOrder");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;XAnsiString&nbsp;&amp;&nbsp;pImageName&nbsp;=&nbsp;xui::GetStringValue(paramSpriteSection,&nbsp;"image");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XInt&nbsp;iTag&nbsp;=&nbsp;xui::GetIntValue(paramSpriteSection,&nbsp;"tag");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCSprite&nbsp;*&nbsp;pSprite&nbsp;=&nbsp;NULL;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(pImageName[0]&nbsp;==&nbsp;':')&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">如果是从Cache中读取</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSprite&nbsp;=&nbsp;CCSprite::createWithSpriteFrameName(pImageName.c_str()+1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSprite&nbsp;=&nbsp;CCSprite::create(pImageName.c_str());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSprite-&gt;setPosition(ix,&nbsp;iy);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSprite-&gt;setAnchorPoint(0,&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSprite-&gt;setTag(iTag);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSprite-&gt;setZOrder(izOrder);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paramParent-&gt;addChild(pSprite,&nbsp;izOrder);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;LoadSpriteFrameByPList(CCNode&nbsp;*&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">paramParent</span><span style="color: #008000; ">*/</span>,&nbsp;XIniText::TSection&nbsp;*&nbsp;paramSection)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;XAnsiString&nbsp;&amp;&nbsp;pPListName&nbsp;=&nbsp;xui::GetStringValue(paramSection,&nbsp;"filename");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCSpriteFrameCache::sharedSpriteFrameCache()-&gt;addSpriteFramesWithFile(pPListName.c_str());<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">--------------------------------------------------------------------------------------</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;CreateByXUI(CCNode&nbsp;*&nbsp;paramParent,&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*&nbsp;paramFileName)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::<span style="color: #0000FF; ">string</span>&nbsp;strFullFileName&nbsp;=&nbsp;CCFileUtils::sharedFileUtils()-&gt;fullPathForFilename(paramFileName);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">long</span>&nbsp;dwGetSize&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*&nbsp;pData&nbsp;=&nbsp;CCFileUtils::sharedFileUtils()-&gt;getFileData(strFullFileName.c_str(),&nbsp;"rb",&nbsp;&amp;dwGetSize);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZDH_INFO("Load&nbsp;XUI:%s&nbsp;size=%u",&nbsp;paramFileName,&nbsp;dwGetSize);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(dwGetSize&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(isNotNULL(pData))&nbsp;delete[]&nbsp;pData;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::<span style="color: #0000FF; ">string</span>&nbsp;strData((<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*)pData,&nbsp;dwGetSize);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::stringstream&nbsp;ss(strData);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XIniText&nbsp;stIni;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(!stIni.Load(ss))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZDH_INFO("Load&nbsp;XUI&nbsp;Fail,&nbsp;%s",&nbsp;paramFileName);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;s&nbsp;=&nbsp;0;&nbsp;s&nbsp;&lt;&nbsp;stIni.getSectionCount();&nbsp;s++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auto&nbsp;pSection&nbsp;=&nbsp;stIni.getSection(s);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auto&nbsp;pType&nbsp;=&nbsp;pSection-&gt;getEntry("type");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(isNULL(pType))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZDH_INFO("Section=[%s]&nbsp;not&nbsp;exist&nbsp;key:\"type\"",&nbsp;pSection-&gt;getSectionName().c_str());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">continue</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;XAnsiString&nbsp;&amp;&nbsp;paramTypeValue&nbsp;=&nbsp;pType-&gt;getValue().getField();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(paramTypeValue&nbsp;==&nbsp;"CCSprite")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CreateSpriteByXUI(paramParent,&nbsp;pSection);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(paramTypeValue&nbsp;==&nbsp;"plist")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoadSpriteFrameByPList(paramParent,&nbsp;pSection);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div>配置文件<br /><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 />-->#支持UTF-8格式<br /><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">gk_label.png</span><span style="color: #800000; font-weight: bold; ">]</span><br />type&nbsp;=&nbsp;CCSprite<br />image&nbsp;=&nbsp;gk_label.png<br />tag&nbsp;=&nbsp;1<br />x&nbsp;=&nbsp;18<br />y&nbsp;=&nbsp;914<br />zOrder&nbsp;=&nbsp;1<br /><br /><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">mb_label.png</span><span style="color: #800000; font-weight: bold; ">]</span><br />type&nbsp;=&nbsp;CCSprite<br />image&nbsp;=&nbsp;:mb_label.png&nbsp;&nbsp;&nbsp;&nbsp;&#183;#冒号开头表示从CCSpriteFrameCache加载图片<br />tag&nbsp;=&nbsp;1<br />x&nbsp;=&nbsp;348<br />y&nbsp;=&nbsp;916<br />zOrder&nbsp;=&nbsp;1<br /><br /><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">score_label.png</span><span style="color: #800000; font-weight: bold; ">]</span><br />type&nbsp;=&nbsp;CCSprite<br />image&nbsp;=&nbsp;score_label.png<br />tag&nbsp;=&nbsp;1<br />x&nbsp;=&nbsp;258<br />y&nbsp;=&nbsp;855<br />zOrder&nbsp;=&nbsp;1<br /><br /><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">game_star.plist</span><span style="color: #800000; font-weight: bold; ">]</span><br />#批量装载<br />type&nbsp;=&nbsp;plist<br />filename&nbsp;=&nbsp;game_star.plist</div>相关用到的TTextIni和XAnsiString，参考<a href="http://www.cppblog.com/zdhsoft/archive/2014/06/27/207431.html">我的开源代码</a><br /><img src ="http://www.cppblog.com/zdhsoft/aggbug/207760.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-07-23 20:04 <a href="http://www.cppblog.com/zdhsoft/archive/2014/07/23/207760.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记011]使用Cocostudio UI编辑器</title><link>http://www.cppblog.com/zdhsoft/archive/2014/07/19/207715.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Sat, 19 Jul 2014 04:28:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/07/19/207715.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/207715.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/07/19/207715.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/207715.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/207715.html</trackback:ping><description><![CDATA[<div>本文地址：<a href="http://www.cppblog.com/zdhsoft/archive/2014/07/19/207715.html">http://www.cppblog.com/zdhsoft/archive/2014/07/19/207715.html<br /></a>笔记汇总：<a href="http://www.cppblog.com/zdhsoft/archive/2014/07/15/207659.html">http://www.cppblog.com/zdhsoft/archive/2014/07/15/207659.html</a><br />cocos2dx不仅是有框架，还提供了一个编辑器，可以对动画、UI、骨骼动画和场景编辑的功能。</div>
<div>使用这些工具，大大缩短了用cocos2dx开发周期。但总的来说，操作并不是很方便，但是有总比没有强！</div>
<div>下载地址：http://cn.cocos2d-x.org/download/ 现在MAC的版本也出来了。</div>
<div>下图是界面</div>
<div><img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719112934.png" width="775" height="600" alt="" /><br />
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719113230.png" width="998" height="797" alt="" /><br />
然后启动，新建一个项目<br />
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719113522.png" width="409" height="179" alt="" /><br />
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719113815.png" width="591" height="220" alt="" /><img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719114937.png" width="1211" height="682" alt="" /><br />
这样就完成项目的创建。<br />
在编辑之前，需要先给项目提供资源，一种是把资源拖到右边的资源列表或都在资源列表打开选择资源对话框。<br />
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719113837.png" width="1200" height="469" alt="" /><img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719115402.png" width="1723" height="567" alt="" /><br />
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719115524.png" width="319" height="289" alt="" /><br />
插入结果<br />
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719115539.png" width="198" height="240" alt="" />其它资源依此类推。<br />
项目创建会默认创建一个画布和一个容器panel<br />
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719115855.png" width="365" height="516" alt="" /><br />
在正式编辑UI之前，需要先设置画面大小，这个跟据你项目的要求设置。<br />
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719113550.png" width="439" height="261" alt="" /><br />
下面在画面中，填加一个图片。很不幸，你不能从资源列表直接拖到中间的画布上只，只能在画布或对象列表使用右键，弹出右键菜单，添加图片对象。<br />
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719114021.png" width="521" height="370" alt="" /><br />
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719114046.png" width="712" height="612" alt="" /><br />
然后，用鼠标选这个对象。在画面的右边，会有一个对象的属性面板。<br />
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719114127.png" width="1184" height="742" alt="" /><br />
属性面版有尺寸和模式、常规、控件布局、特性。大家可以尝试设置，就知道他的作用了。添加完成后，把具体的图片资源拖到属性面版-&gt;特性-&gt;文件框内，就可以了。<br />
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719114222.png" width="383" height="685" alt="" /><br />
结果<br />
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719121139.png" width="726" height="668" alt="" /><br />
这样就OK了<br />
在属性面板有一个Tag属性和名子属性要注意一下，我面在加载UI后，可以通过这两个属性取得UI中的这个对象。<br />
可能调整渲染层级达到调整显示次序的效果。<br />
按照上面的步骤，就可以很快的做出UI了。<br />
做完后，就需要导出UI了，cocos2dx是不能直接使用UI工程的，需要使用导出的。<br />
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719121714.png" width="235" height="308" alt="" /><br />
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719114328.png" width="731" height="478" alt="" /><br />
在导出资源这块，要注意一下，使用大图，会把用到的资源拼成一个大图，可以提高效率。使用小图，则把资源的图原样复制过去。这个看你的取舍了。<br />
导出完成后，把导出的目录复制到cocos2dx工程的Resource这个目录下面，就可以在项目中使用了。<br />
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140719122207.png" width="846" height="505" alt="" /><br />
最后在需要使用这个UI的场景，增加下面代码<br />
<br />
<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 />
-->&nbsp; &nbsp; &nbsp; &nbsp; gui::TouchGroup*&nbsp;ul&nbsp;=&nbsp;gui::TouchGroup::create();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ul-&gt;addWidget(GUIReader::shareReader()-&gt;widgetFromJsonFile("NewUi_1/NewUi_1.ExportJson"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>-&gt;addChild(ul,&nbsp;2);</div>
</div>
如果要访问这个资源，就可以通过tag来操作。
ul-&gt;getWidgetByTag(42)。注意不是ui-&gt;getChildByTag(42)，这个不会遍历所有的子节点。
！这样就完成一个完全的UI操作！<img src ="http://www.cppblog.com/zdhsoft/aggbug/207715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-07-19 12:28 <a href="http://www.cppblog.com/zdhsoft/archive/2014/07/19/207715.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cocos2dx笔记汇总</title><link>http://www.cppblog.com/zdhsoft/archive/2014/07/15/207659.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Tue, 15 Jul 2014 15:37:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/07/15/207659.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/207659.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/07/15/207659.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/207659.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/207659.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今年7月以来，终于完全投入到cocos2dx手机项目开发了。真是不容易啊。在这之前，做了很多尝试cocos的各种版本。cocos2dx 2.2.2,quick cocos2dx 2.2.4,cocos2dx 2.2.5,cocos2dx.3.0,cocos2dx 3.1，最终，决定还是使用2.2.2这个版本，我的大多数例子也是基于这个版本的，其它的或多或少总有些问题。特别是这次cocos2dx 2.2.5发布，问题也比较大，作者有些随意了。随机项目中进展，我会把项目遇到的问题，会以笔记的方式列出来，为什么：为我以为再次遇到问题可以快速度解决。&nbsp;&nbsp;<a href='http://www.cppblog.com/zdhsoft/archive/2014/07/15/207659.html'>阅读全文</a><img src ="http://www.cppblog.com/zdhsoft/aggbug/207659.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-07-15 23:37 <a href="http://www.cppblog.com/zdhsoft/archive/2014/07/15/207659.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记010]用于UI的事件管理器</title><link>http://www.cppblog.com/zdhsoft/archive/2014/07/15/207653.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Tue, 15 Jul 2014 07:58:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/07/15/207653.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/207653.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/07/15/207653.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/207653.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/207653.html</trackback:ping><description><![CDATA[<div>
<p style="margin: 4px 0px; padding: 2px 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff;">cocos2dx有一个编辑器：cocostudio，目前来说，已经是比较好用了，只要加载导出的资源，就可以用上了。省去手动搭建面的麻烦。但是，很多需要事件的地方，操作比较麻烦，所以这里提供一个事件管理器来集中和简化管理事件。对于C++事件委托方面，我这里使用了是FastDelegate（注：一个牛人写的）。下面是具体实现的代理，不多。<br />
<br />
</p>
<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 />
--><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;UI触摸事件管理器。<br />
&nbsp;&nbsp;&nbsp;&nbsp;原有cocos2dx带的触摸事件，每次监听要操作的步骤比较多，为此增加了一个事件管理器，来集中和简化管理<br />
</span><span style="color: #008000; ">*/</span><br />
#ifndef&nbsp;_X_TOUCH_EVENT_MANAGER_H_<br />
<span style="color: #0000FF; ">#define</span>&nbsp;_X_TOUCH_EVENT_MANAGER_H_<br />
#include&nbsp;&lt;cocos2d.h&gt;<br />
#include&nbsp;&lt;cocos-ext.h&gt;<br />
#include&nbsp;&lt;FastDelegate.h&gt;<br />
#include&nbsp;&lt;xmap.h&gt;<br />
#include&nbsp;&lt;xlog.h&gt;<br />
<span style="color: #0000FF; ">namespace</span>&nbsp;zdh<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;USING_NS_CC;<br />
&nbsp;&nbsp;&nbsp;&nbsp;USING_NS_CC_EXT;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;XTouchEventManager&nbsp;:&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;CCObject<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">绑定的事件定义</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;fastdelegate::FastDelegate&lt;<span style="color: #0000FF; ">void</span>(gui::Widget&nbsp;*,&nbsp;gui::TouchEventType)&gt;&nbsp;TTouchEvent;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;TagID_t;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">一个Tag的触模事件结构，包括了四个事件</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">struct</span>&nbsp;STagEvent<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TTouchEvent&nbsp;EventBegin;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TTouchEvent&nbsp;EventMoved;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TTouchEvent&nbsp;EventEnded;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TTouchEvent&nbsp;EventCanceled;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TTouchEvent&nbsp;*&nbsp;getByType(gui::TouchEventType&nbsp;paramType)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">switch</span>&nbsp;(paramType)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;gui::TOUCH_EVENT_BEGAN:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;&amp;EventBegin;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;gui::TOUCH_EVENT_MOVED:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;&amp;EventMoved;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;gui::TOUCH_EVENT_ENDED:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;&amp;EventEnded;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;gui::TOUCH_EVENT_CANCELED:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;&amp;EventCanceled;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;nullptr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">判断事件是不是都是为空</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">bool</span>&nbsp;isAllEmpty()&nbsp;<span style="color: #0000FF; ">const</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;EventBegin.empty()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;&nbsp;EventEnded.empty()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;&nbsp;EventMoved.empty()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;&nbsp;EventCanceled.empty();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">Tag事件映射表，可以换用std::map</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;XMap&lt;TagID_t,&nbsp;STagEvent&gt;&nbsp;TEventMap;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XTouchEventManager()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:m_UI(nullptr)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;XTouchEventManager&nbsp;*&nbsp;create()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XTouchEventManager&nbsp;*&nbsp;pRet&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;XTouchEventManager();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRet-&gt;autorelease();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;pRet;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">property</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;setUI(gui::TouchGroup&nbsp;*&nbsp;paramUI)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_UI&nbsp;=&nbsp;paramUI;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gui::TouchGroup&nbsp;*&nbsp;getUI()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;m_UI;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">绑定一个指定Tag和事件类型的事件</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TTouchEvent&nbsp;*&nbsp;Bind(TagID_t&nbsp;paramTagID,&nbsp;gui::TouchEventType&nbsp;paramType)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(!(paramType&nbsp;==&nbsp;gui::TOUCH_EVENT_BEGAN<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;paramType&nbsp;==&nbsp;gui::TOUCH_EVENT_CANCELED<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;paramType&nbsp;==&nbsp;gui::TOUCH_EVENT_ENDED<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;paramType&nbsp;==&nbsp;gui::TOUCH_EVENT_MOVED))&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;nullptr;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;iIndex&nbsp;=&nbsp;m_Map.getIndexBykey(paramTagID);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(m_Map.isValidIndex(iIndex))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;m_Map.getValue(iIndex).getByType(paramType);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gui::Widget&nbsp;*&nbsp;pWidget&nbsp;=&nbsp;GetNodeByTag(paramTagID);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(isNULL(pWidget))&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;nullptr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pWidget-&gt;addTouchEventListener(<span style="color: #0000FF; ">this</span>,&nbsp;gui::SEL_TouchEvent(&amp;XTouchEventManager::OnUITouch));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;m_Map[paramTagID].getByType(paramType);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">移除指定Tag和事件类型的侦听</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;RemoveListen(TagID_t&nbsp;paramTagID,&nbsp;gui::TouchEventType&nbsp;paramType)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(!(paramType&nbsp;==&nbsp;gui::TOUCH_EVENT_BEGAN<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;paramType&nbsp;==&nbsp;gui::TOUCH_EVENT_CANCELED<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;paramType&nbsp;==&nbsp;gui::TOUCH_EVENT_ENDED<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;paramType&nbsp;==&nbsp;gui::TOUCH_EVENT_MOVED))&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;iIndex&nbsp;=&nbsp;m_Map.getIndexBykey(paramTagID);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(m_Map.isValidIndex(iIndex))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auto&nbsp;pV&nbsp;=&nbsp;m_Map.getValue(iIndex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pV.getByType(paramType)-&gt;clear();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(pV.isAllEmpty())&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">如果这个Tag完全没有事件侦听，那么就清除这个Tag的侦听</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RemoveListen(paramTagID);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">移除指定Tag的侦听</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;RemoveListen(TagID_t&nbsp;paramTagID)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gui::Widget&nbsp;*&nbsp;pWidget&nbsp;=&nbsp;GetNodeByTag(paramTagID);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(isNotNULL(pWidget))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pWidget-&gt;addTouchEventListener(nullptr,&nbsp;nullptr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Map.RemoveByKey(paramTagID);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">当UI被侦听的事件，被触发</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;OnUITouch(CCObject*&nbsp;paramSender,&nbsp;gui::TouchEventType&nbsp;paramType)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gui::Widget&nbsp;*&nbsp;pUIControl&nbsp;=&nbsp;dynamic_cast&lt;gui::Widget&nbsp;*&gt;(paramSender);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(isNULL(pUIControl))&nbsp;<span style="color: #0000FF; ">return</span>;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TagID_t&nbsp;tagID&nbsp;=&nbsp;pUIControl-&gt;getTag();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STREAM_INFO&nbsp;&lt;&lt;&nbsp;"Sender&nbsp;Tag="&nbsp;&lt;&lt;&nbsp;tagID&nbsp;&lt;&lt;&nbsp;",&nbsp;paramType="&nbsp;&lt;&lt;&nbsp;paramType;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;iIndex&nbsp;=&nbsp;m_Map.getIndexBykey(tagID);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(m_Map.isValidIndex(iIndex))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auto&nbsp;pV&nbsp;=&nbsp;m_Map.getValue(iIndex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auto&nbsp;pEvent&nbsp;=&nbsp;pV.getByType(paramType);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(isNotNULL(pEvent)&nbsp;&amp;&amp;&nbsp;(!pEvent-&gt;empty()))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*pEvent)(pUIControl,&nbsp;paramType);&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">调用事件</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">取UI中指定Tag的widget对象</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gui::Widget&nbsp;*&nbsp;GetNodeByTag(TagID_t&nbsp;paramTag)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(isNULL(m_UI))&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;nullptr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;m_UI-&gt;getWidgetByTag(paramTag);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gui::TouchGroup&nbsp;*&nbsp;m_UI;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">用Cocostudio&nbsp;UI编辑器，然后导入生成的UI对象</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TEventMap&nbsp;m_Map;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">事件侦听映射表</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;};<br />
}<br />
<span style="color: #0000FF; ">#endif</span></div>
<p style="margin: 4px 0px; padding: 2px 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff;">使用例子：在Init函数<br />
</p>
<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 />
-->m_EventManager&nbsp;=&nbsp;XTouchEventManager::create();&nbsp;&nbsp;<br />
m_EventManager-&gt;retain();&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
gui::TouchGroup*&nbsp;ul&nbsp;=&nbsp;gui::TouchGroup::create();&nbsp;&nbsp;<br />
ul-&gt;addWidget(GUIReader::shareReader()-&gt;widgetFromJsonFile("MainUI_1.ExportJson"));&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">this</span>-&gt;addChild(ul,&nbsp;2);&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
m_EventManager-&gt;setUI(m_MainUI); &nbsp;</div>
<p style="margin: 4px 0px; padding: 2px 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff;"></p>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff;">最后，事件绑定：</span>
<p style="margin: 4px 0px; padding: 2px 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff;"></p>
<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 />-->m_EventManager-&gt;Bind(ET_BUTTON_EXIT,&nbsp;gui::TOUCH_EVENT_ENDED)-&gt;bind(<span style="color: #0000FF; ">this</span>,&nbsp;&amp;XSceneMain::OnExit);&nbsp;&nbsp;<br />m_EventManager-&gt;Bind(ET_BUTTON_SAVE,&nbsp;gui::TOUCH_EVENT_ENDED)-&gt;bind(<span style="color: #0000FF; ">this</span>,&nbsp;&amp;XSceneMain::OnSave); &nbsp;</div>
<br style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff;" />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff;">事件的定义：</span>
<p style="margin: 4px 0px; padding: 2px 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff;"></p>
<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 />--><span style="color: #0000FF; ">void</span>&nbsp;XSceneMain::OnExit(gui::Widget&nbsp;*&nbsp;paramSender,&nbsp;gui::TouchEventType&nbsp;paramType)&nbsp;&nbsp;<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;STREAM_INFO&nbsp;&lt;&lt;&nbsp;"OnExit";&nbsp;&nbsp;<br />}&nbsp;&nbsp;<br /><span style="color: #0000FF; ">void</span>&nbsp;XSceneMain::OnSave(gui::Widget&nbsp;*&nbsp;paramSender,&nbsp;gui::TouchEventType&nbsp;paramType)&nbsp;&nbsp;<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;STREAM_INFO&nbsp;&lt;&lt;&nbsp;"OnSave";&nbsp;&nbsp;<br />} &nbsp;</div>
<br style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff;" />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff;">依赖的代码参考：</span><a target="_blank" href="http://www.cppblog.com/zdhsoft/archive/2014/06/27/207431.html" _xhe_href="http://www.cppblog.com/zdhsoft/archive/2014/06/27/207431.html" style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff;">我的开发代码</a><span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff;">&nbsp;&nbsp;&nbsp;</span><br style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff;" />
<p style="margin: 4px 0px; padding: 2px 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff;"></p>
</div><img src ="http://www.cppblog.com/zdhsoft/aggbug/207653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-07-15 15:58 <a href="http://www.cppblog.com/zdhsoft/archive/2014/07/15/207653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记009]试用quick-cocos2dx-2.2.4</title><link>http://www.cppblog.com/zdhsoft/archive/2014/07/12/207626.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Sat, 12 Jul 2014 06:24:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/07/12/207626.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/207626.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/07/12/207626.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/207626.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/207626.html</trackback:ping><description><![CDATA[<div>quick-cocos2d-x 的中文站是http://quick.cocoachina.com/?page_id=40，用他们自己的话说：quick-cocos2d-x（后文简称 quick）与 cocos2d-x 的关系，用一句话概括：quick 是 cocos2d-x 针对 Lua 的豪华套装威力加强版。</div><div>这里是他的介绍：http://quick.cocoachina.com/?p=1</div><div>在我试用2.2.4的时候，2.2.5发布了，目前quick也是非常活跃。</div><div></div><div>首先、按他们的文章：《设置 quick-cocos2d-x 在 Windows 下的编译环境》 http://quick.cocoachina.com/?p=253 部署好，写的很清楚了，照着做就可以了。</div><div>其次、就可以创建项目了，我这里是把quick解压到了G:\cocos2dx\quickx，然在G:\cocos2dx\quickx\bin下面，就可以看到create_project.bat，然后我们在dos命令</div><div>提示符下面输入create_project -p com.my.test 然后它就会在G:\cocos2dx\quickx\bin下面创建一个test目录（如果只有包名的情况下，它会以最后一个包名做的项目的名称）</div><div>这样我们就创建了一个项目。</div><div>第三、用Vs编译</div><div>vs的工程在G:\cocos2dx\quickx\bin\test\proj.win32下面，打开test.sln就可以了。</div><div>然后编译，就可以显示，如下图所示hello world<br /><img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140712141538.png" width="972" height="694" alt="" /><br /></div><div>第四、用player运行</div><div>在G:\cocos2dx\quickx\player\win有一个player</div><div>它用可以运行你的lua工程，下如图打开你的工程，<br /><img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140712141840.png" width="1643" height="695" alt="" /><br /><img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140712141901.png" width="963" height="693" alt="" /><br /><img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/小Q截图-20140712141945.png" width="650" height="481" alt="" /><br />就可以立即看到你的运行结果了。</div><div>你可以直接用文本编辑器或其它编辑你的lua文件，保存后，在player按F5就可以立即看到你修改后的运行结果。（不用编译，就是爽）</div><div></div><img src ="http://www.cppblog.com/zdhsoft/aggbug/207626.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-07-12 14:24 <a href="http://www.cppblog.com/zdhsoft/archive/2014/07/12/207626.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记008]cocos2d 用luabridge手动绑定类。</title><link>http://www.cppblog.com/zdhsoft/archive/2014/07/09/207594.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Wed, 09 Jul 2014 12:06:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/07/09/207594.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/207594.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/07/09/207594.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/207594.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/207594.html</trackback:ping><description><![CDATA[<div>基于cocos2dx 2.2.2版本。这几天使用了cocostudio实现了，动画，骨骼动画，UI编辑，粒子效果，虽然有些不足，但已经算是非常好了。今天尝试用lua，这个非常简单，创建的时候，设置语言为lua，那就可以创建lua工程。<br />
在cocos2d-x-2.2.2\tools\project-creator下运行：<br />
<span style="background-color: #eeeeee; font-size: 13px;">python&nbsp;create_project.py&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px;">-</span><span style="background-color: #eeeeee; font-size: 13px;">project&nbsp;test_lua&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px;">-</span><span style="background-color: #eeeeee; font-size: 13px;">package&nbsp;com.android.zdhsoft&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px;">-</span><span style="background-color: #eeeeee; font-size: 13px;">language&nbsp;lua</span></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">xcopy&nbsp;..\..\cocos2dx\platform\android\java\src\*&nbsp;..\..\projects\test_lua\proj.android\src&nbsp;/E</div>
就可以创建test_lua，就可以顺利跑起来。<br />
但是我有些代码是C++的，想到在lua下用，感觉得用cocos2dx自带的tolua++，会影响现有的Cocos2dx框架，也可能带来潜在的风险。（除了，bug，我一般不乐意修改框架的东西）。而且需要手动绑定的也不多。于是找了几个开源的绑定框架。有luabind,luatinker,ELuna，luabridge，等。luabind需要boost库，这个太头痛了，luatinker，eluna在试用过程都有些问题（有一个不支持派生类和模板），虽然这两个是最简单的，但是功能也弱了些。最后，用luabridge顺利解决，使用起来也非常简单。<br />
下面是下载地址：<a href="https://github.com/vinniefalco/LuaBridge">https://github.com/vinniefalco/LuaBridge<br />
这</a>个版本已经支持lua 5.1.5，不过不支持C++0x11，例子很丰富。这里有很多例子，<a href="http://vinniefalco.com/LuaBridge/Manual.html">http://vinniefalco.com/LuaBridge/Manual.html<br />
下</a>载后，直接解压，把LuaBridge.h，RefCountedObject.h，RefCountedPtr.h和detail下的所有头文件，全部复制到classes目录，然后在AppDelegate包含luabrigde.h就可以了。<br />
下面是一个用于测试的类<br />
<span style="font-size: 13px; color: #0000ff;">class</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;testA</span>
<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 />
<span style="color: #0000FF; ">public</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;testA()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;getValue()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;100;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
};</div>
下面是绑定代码<br />
<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 />
-->&nbsp; &nbsp; luabridge::getGlobalNamespace(pEngine-&gt;getLuaStack()-&gt;getLuaState())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.beginClass&lt;testA&gt;("testA")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.addConstructor&lt;<span style="color: #0000FF; ">void</span>(*)&nbsp;()&gt;()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.addFunction("getValue",&nbsp;&amp;testA::getValue)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.endClass();</div>
然后，就可以在你的lua代码使用这个类了。<br />
<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 />
-->&nbsp; &nbsp; local&nbsp;testa&nbsp;=&nbsp;testA&nbsp;()<br />
&nbsp;&nbsp;&nbsp;&nbsp;cclog("testa=%d",&nbsp;testa:getValue())&nbsp;</div>
现在cocos2dx上面，现在出现了两个重要的lua分支， 一个是quickx，一个cocos-code-ide。quickx提供了一个非常强大的lua框架，让你写lua省心省力。而cocos ide则基于eclipse提供了一个x-man的编辑器，支持lua和js调试。这让C++情何以堪啊！
<img src ="http://www.cppblog.com/zdhsoft/aggbug/207594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-07-09 20:06 <a href="http://www.cppblog.com/zdhsoft/archive/2014/07/09/207594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记007]一个自定义场景切换的实例</title><link>http://www.cppblog.com/zdhsoft/archive/2014/07/01/207482.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Tue, 01 Jul 2014 12:12:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/07/01/207482.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/207482.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/07/01/207482.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/207482.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/207482.html</trackback:ping><description><![CDATA[cocos2dx框架已经提供了很多场景切换的类，但是一些自定义的场景切换，只有自己实现了。下面是实现的类。这里设计的分辨率是750*500.请根据实际的要求调整。<br />
头文件<br />
<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 />
-->#ifndef&nbsp;_TRANSITION_GAME_H_<br />
<span style="color: #0000FF; ">#define</span>&nbsp;_TRANSITION_GAME_H_<br />
#include&nbsp;&lt;cocos2d.h&gt;<br />
<span style="color: #0000FF; ">namespace</span>&nbsp;cocos2d&nbsp;<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;CCTransitionGame&nbsp;:&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;CCTransitionScene<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCTransitionGame();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">virtual</span>&nbsp;~CCTransitionGame();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;onEnter();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;CCTransitionGame&nbsp;*&nbsp;create(<span style="color: #0000FF; ">float</span>&nbsp;t,&nbsp;CCScene&nbsp;*scene);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;LRFinish(<span style="color: #0000FF; ">void</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;OnFirstActionFinish(<span style="color: #0000FF; ">void</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;m_FinishCnt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;};<br />
}<br />
<span style="color: #0000FF; ">#endif</span></div>
源文件<br />
<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 />
-->#include&nbsp;"TransitionGame.h"<br />
#include&nbsp;"xlog.h"<br />
#include&nbsp;&lt;xstring.h&gt;<br />
<span style="color: #0000FF; ">namespace</span>&nbsp;cocos2d<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">using</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;zdh;<br />
&nbsp;&nbsp;&nbsp;&nbsp;CCTransitionGame&nbsp;*&nbsp;CCTransitionGame::create(<span style="color: #0000FF; ">float</span>&nbsp;t,&nbsp;CCScene&nbsp;*scene)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCTransitionGame&nbsp;*&nbsp;pScene&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;CCTransitionGame();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(pScene&nbsp;&amp;&amp;&nbsp;pScene-&gt;initWithDuration(t,&nbsp;scene))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pScene-&gt;autorelease();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;pScene;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CC_SAFE_DELETE(pScene);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;NULL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;CCTransitionGame::CCTransitionGame()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_FinishCnt&nbsp;=&nbsp;0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;CCTransitionGame::~CCTransitionGame()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;CCTransitionGame::onEnter()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCTransitionScene::onEnter();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCSize&nbsp;visibleSize&nbsp;=&nbsp;CCDirector::sharedDirector()-&gt;getVisibleSize();<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCPoint&nbsp;stLeftBegin,&nbsp;stLeftEnd,&nbsp;stRightBegin,&nbsp;stRightEnd;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">设置左边的起点和终点</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stLeftBegin.setPoint(-436.0f,&nbsp;-60);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stLeftEnd.setPoint(visibleSize.width&nbsp;/&nbsp;2.0f&nbsp;+&nbsp;stLeftBegin.x,&nbsp;-60.0f);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">设置右边的起点和终点</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stRightBegin.setPoint(visibleSize.width,&nbsp;-60.0f);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stRightEnd.setPoint(visibleSize.width&nbsp;/&nbsp;2.0f,&nbsp;-60.0f);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">加载动画序列</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCSpriteFrameCache*&nbsp;pCache&nbsp;=&nbsp;CCSpriteFrameCache::sharedSpriteFrameCache();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pCache-&gt;addSpriteFramesWithFile("middle_ani_1.plist");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pCache-&gt;addSpriteFramesWithFile("middle_ani_2.plist");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">生成画动图片列表和动画对象</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCArray*&nbsp;pAnimFrames&nbsp;=&nbsp;CCArray::createWithCapacity(69);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XAnsiString&nbsp;strAniName;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;1;&nbsp;i&nbsp;&lt;&nbsp;70;&nbsp;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strAniName.printf("light%04d.png",&nbsp;i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pAnimFrames-&gt;addObject(pCache-&gt;spriteFrameByName(strAniName.c_str()));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCAnimation*&nbsp;animation&nbsp;=&nbsp;CCAnimation::createWithSpriteFrames(pAnimFrames,&nbsp;<span style="color: #0000FF; ">this</span>-&gt;m_fDuration&nbsp;*&nbsp;2.0f/3.0f/69.0f&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCNode&nbsp;*&nbsp;pNode&nbsp;=&nbsp;CCNode::create();&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">这个有两个子节点，一个是左边交换图片，一个是中间的动画，用于一起做移动的Action</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCSprite*&nbsp;pLeft&nbsp;=&nbsp;CCSprite::createWithSpriteFrameName("swap_left.png");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pLeft-&gt;setAnchorPoint(CCPointZero);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNode-&gt;addChild(pLeft);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCSprite&nbsp;*&nbsp;pMiddle&nbsp;=&nbsp;CCSprite::create();&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">显示动画</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMiddle-&gt;setAnchorPoint(CCPointZero);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMiddle-&gt;setPosition(ccp(436.0f&nbsp;-&nbsp;69.0f,&nbsp;250.0f&nbsp;+&nbsp;60.0f&nbsp;-&nbsp;72.0f));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMiddle-&gt;runAction(CCAnimate::create(animation));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNode-&gt;addChild(pMiddle);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNode-&gt;setAnchorPoint(ccp(0,0));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNode-&gt;setPosition(stLeftBegin);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>-&gt;addChild(pNode,1);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">右边的交换图片</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCSprite*&nbsp;pRight&nbsp;=&nbsp;CCSprite::createWithSpriteFrameName("swap_right.png");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRight-&gt;setPosition(stRightBegin);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRight-&gt;setAnchorPoint(CCPointZero);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>-&gt;addChild(pRight,&nbsp;0);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">定义动作<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">左边的向右移动活动</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCMoveTo*&nbsp;pActionLeft&nbsp;=&nbsp;CCMoveTo::create(m_fDuration&nbsp;/&nbsp;3,&nbsp;stLeftEnd);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">右边的向左移动活动</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCMoveTo&nbsp;*&nbsp;pActionRight&nbsp;=&nbsp;CCMoveTo::create(m_fDuration&nbsp;/&nbsp;3,&nbsp;stRightEnd);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">原地不动</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCMoveTo*&nbsp;pActionLeft1&nbsp;=&nbsp;CCMoveTo::create(m_fDuration&nbsp;/&nbsp;3,&nbsp;stLeftEnd);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCMoveTo&nbsp;*&nbsp;pActionRight1&nbsp;=&nbsp;CCMoveTo::create(m_fDuration&nbsp;/&nbsp;3,&nbsp;stRightEnd);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCMoveTo*&nbsp;pActionLeft2&nbsp;=&nbsp;CCMoveTo::create(m_fDuration&nbsp;/&nbsp;3,&nbsp;stLeftBegin);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCMoveTo&nbsp;*&nbsp;pActionRight2&nbsp;=&nbsp;CCMoveTo::create(m_fDuration&nbsp;/&nbsp;3,&nbsp;stRightBegin);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_FinishCnt&nbsp;=&nbsp;0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNode-&gt;runAction(CCSequence::create(pActionLeft,&nbsp;CCCallFunc::create(<span style="color: #0000FF; ">this</span>,&nbsp;callfunc_selector(CCTransitionGame::OnFirstActionFinish)),&nbsp;pActionLeft1,&nbsp;pActionLeft2,&nbsp;CCCallFunc::create(<span style="color: #0000FF; ">this</span>,&nbsp;callfunc_selector(CCTransitionGame::LRFinish)),&nbsp;NULL));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRight-&gt;runAction(CCSequence::create(pActionRight,&nbsp;pActionRight1,pActionRight2,&nbsp;CCCallFunc::create(<span style="color: #0000FF; ">this</span>,&nbsp;callfunc_selector(CCTransitionGame::LRFinish)),&nbsp;NULL));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;CCTransitionGame::LRFinish(<span style="color: #0000FF; ">void</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">所以的活动完成后，要执行场行的Finish</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_FinishCnt++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(m_FinishCnt&nbsp;&gt;=&nbsp;2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCTransitionScene::finish();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;CCTransitionGame::OnFirstActionFinish(<span style="color: #0000FF; ">void</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">打开门之前，关闭显示第一个场景，显示第二个场景</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_pInScene-&gt;setVisible(<span style="color: #0000FF; ">true</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_pOutScene-&gt;setVisible(<span style="color: #0000FF; ">false</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}</div>
用到的资源<br />
<a href="/Files/zdhsoft/plist.zip">/Files/zdhsoft/plist.zip</a>
效果图：<br /><img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/20140701_1.jpg" width="766" height="538" alt="" /><img src ="http://www.cppblog.com/zdhsoft/aggbug/207482.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-07-01 20:12 <a href="http://www.cppblog.com/zdhsoft/archive/2014/07/01/207482.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记006]流格式日志</title><link>http://www.cppblog.com/zdhsoft/archive/2014/06/30/207462.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Mon, 30 Jun 2014 07:16:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/06/30/207462.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/207462.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/06/30/207462.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/207462.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/207462.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在cocos2dx 2.2.2版本中，cocos使用的是CLOG写入日期，其格式是C的Printf方式生成日志。现在也有很多C++流式日志，类似于cout这样的操作。我看了也有很多，log4cxx，等。但是个人移动有些大。我就在我原来的日志中增加了对流式的支持。并顺利移植到cocos2dx环境中使用&nbsp;&nbsp;<a href='http://www.cppblog.com/zdhsoft/archive/2014/06/30/207462.html'>阅读全文</a><img src ="http://www.cppblog.com/zdhsoft/aggbug/207462.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-06-30 15:16 <a href="http://www.cppblog.com/zdhsoft/archive/2014/06/30/207462.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记005]一个字符串管理配置类</title><link>http://www.cppblog.com/zdhsoft/archive/2014/06/30/207461.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Mon, 30 Jun 2014 06:59:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/06/30/207461.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/207461.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/06/30/207461.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/207461.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/207461.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在用vs开发cocos2dx过程中，要显示的中文，要求是UTF-8格式的才能正常显示出来，但VS一般是ANSI格式保存,这样，在代码中写入的中文字符串，运行后，显示的就是乱码。<br>为了正确显示中文，或支持多语言，我这里定义一个简单的字符串管理类，来满足上述要求。&nbsp;&nbsp;<a href='http://www.cppblog.com/zdhsoft/archive/2014/06/30/207461.html'>阅读全文</a><img src ="http://www.cppblog.com/zdhsoft/aggbug/207461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-06-30 14:59 <a href="http://www.cppblog.com/zdhsoft/archive/2014/06/30/207461.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>试用cocos2dx 3.1.1</title><link>http://www.cppblog.com/zdhsoft/archive/2014/06/24/207402.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Tue, 24 Jun 2014 13:00:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/06/24/207402.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/207402.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/06/24/207402.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/207402.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/207402.html</trackback:ping><description><![CDATA[终于有时间，开始全力投入cocos2dx开发了，之前也积累了不少，不过都是基于2.2.2的，3.1.1的版本也出来一段时间，应该算是成熟了，今天就试试。一个最大的变化就是不需要cygwin了，直接使用ndk中的。要选安装好python,ant,ndk,andoroid sdk等。<br />
同样，使用设置ANDROID_SDK_ROOT,ANT_ROOT,NDK_ROOT等三个环境变量，这个和以前有些不一样。<br />
下载cocos2dx 3.1.1，然后解压，我这里是解压到G:\cocos2dx\cocos2d-x-3.1.1。运行setup.py，这个会设置cocos运行依赖的环境。3.1.1使用\tools\cocos2d-console\bin\cocos.py创建工程。运行setup.py后，cocos.py就加到PATH，可以直接当命令直接输入了。<br />
为了简化创建，我这里写了一个批处理，批处理名称就是工程名，这样要创建的时候，只要改一下批处理名就可以了。批处理放的位置不限，主要是改目标目录和包名，就可以了。<br />
我这里批处理的名称是：MyTest.bat<br />
<span style="background-color: #eeeeee; font-size: 13px;">cocos&nbsp;</span><span style="font-size: 13px; color: #0000ff;">new</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;&nbsp;%~n0&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px;">-</span><span style="background-color: #eeeeee; font-size: 13px;">p&nbsp;com.zdhsoft&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px;">-</span><span style="background-color: #eeeeee; font-size: 13px;">l&nbsp;cpp&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px;">-</span><span style="background-color: #eeeeee; font-size: 13px;">d&nbsp;g:</span><span style="background-color: #eeeeee; font-size: 13px;">\</span><span style="background-color: #eeeeee; font-size: 13px;">cocos2dx</span><span style="background-color: #eeeeee; font-size: 13px;">\</span><span style="background-color: #eeeeee; font-size: 13px;">cocos3<br /></span>然后打G:\cocos2dx\cocos3\MyTest\proj.win32\MyTest.sln，就可以编译运行一个空的cocos2dx了。<br />同样，在G:\cocos2dx\cocos3\MyTest\proj.android运行build_native.py,双击就可以了， 然后再运行ant debug，就可以得到一个apk了，就可以放到手机上跑了。<br /><img src ="http://www.cppblog.com/zdhsoft/aggbug/207402.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-06-24 21:00 <a href="http://www.cppblog.com/zdhsoft/archive/2014/06/24/207402.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记004] android增加静态库工程</title><link>http://www.cppblog.com/zdhsoft/archive/2014/05/11/206891.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Sun, 11 May 2014 05:11:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/05/11/206891.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/206891.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/05/11/206891.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/206891.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/206891.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: (基于2.2.2版本）<br>这步比较麻烦，不像vs2013那样好设置。参考了很多文章。还是不能解决问题。只有慢慢摸索了。在这里贴出来，希望能让大家能少走点弯路。<br>还是其于前面的文章提到的mylib这个例子。[cocos2dx笔记003] Vs2013增加静态库工程&nbsp;&nbsp;<a href='http://www.cppblog.com/zdhsoft/archive/2014/05/11/206891.html'>阅读全文</a><img src ="http://www.cppblog.com/zdhsoft/aggbug/206891.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-05-11 13:11 <a href="http://www.cppblog.com/zdhsoft/archive/2014/05/11/206891.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记003] Vs2013增加静态库工程</title><link>http://www.cppblog.com/zdhsoft/archive/2014/05/11/206890.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Sun, 11 May 2014 04:11:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/05/11/206890.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/206890.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/05/11/206890.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/206890.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/206890.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: （基于2.2.2版本，用vs2013编辑代码）<br>在cocos2dx下有一个external目录，里面有一些要用到的cocos2dx静态库，如Box2D，chipmunk,emscripten,libwebsockets,sqlite3等。但是自己以往积累或第三方其它好用的开源库，想用。如果直接到加到现有的cocos2dx，则会破坏现有Cocos2dx的纯洁性，那只有自己建工程了。<br>下面图，一步一步显示了创建过程。&nbsp;&nbsp;<a href='http://www.cppblog.com/zdhsoft/archive/2014/05/11/206890.html'>阅读全文</a><img src ="http://www.cppblog.com/zdhsoft/aggbug/206890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-05-11 12:11 <a href="http://www.cppblog.com/zdhsoft/archive/2014/05/11/206890.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cocos2dx的CCControlButton事件</title><link>http://www.cppblog.com/zdhsoft/archive/2014/05/05/206833.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Mon, 05 May 2014 15:49:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/05/05/206833.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/206833.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/05/05/206833.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/206833.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/206833.html</trackback:ping><description><![CDATA[(基于cocos2dx2.2.2)cocos2dx的按钮类定义在extensions\GUI\CCControlExtension\CCControlButton.h<br />
在需要用的时候，包括就可以了。<br />
我们在相应的申明的地方，包含下面三个头文件<br />
<br />
<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 />
-->#include&nbsp;"GUI/CCControlExtension/CCControlButton.h"<br />
#include&nbsp;"GUI/CCControlExtension/CCScale9Sprite.h"<br />
#include&nbsp;"GUI/CCControlExtension/CCControl.h"</div>
然按钮的事件有如下定义<br />
<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 />
--><span style="color: #0000FF; ">enum</span>&nbsp;<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;CCControlEventTouchDown&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;0,&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;A&nbsp;touch-down&nbsp;event&nbsp;in&nbsp;the&nbsp;control.</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;CCControlEventTouchDragInside&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;1,&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;An&nbsp;event&nbsp;where&nbsp;a&nbsp;finger&nbsp;is&nbsp;dragged&nbsp;inside&nbsp;the&nbsp;bounds&nbsp;of&nbsp;the&nbsp;control.</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;CCControlEventTouchDragOutside&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;2,&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;An&nbsp;event&nbsp;where&nbsp;a&nbsp;finger&nbsp;is&nbsp;dragged&nbsp;just&nbsp;outside&nbsp;the&nbsp;bounds&nbsp;of&nbsp;the&nbsp;control.&nbsp;</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;CCControlEventTouchDragEnter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;3,&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;An&nbsp;event&nbsp;where&nbsp;a&nbsp;finger&nbsp;is&nbsp;dragged&nbsp;into&nbsp;the&nbsp;bounds&nbsp;of&nbsp;the&nbsp;control.</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;CCControlEventTouchDragExit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;4,&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;An&nbsp;event&nbsp;where&nbsp;a&nbsp;finger&nbsp;is&nbsp;dragged&nbsp;from&nbsp;within&nbsp;a&nbsp;control&nbsp;to&nbsp;outside&nbsp;its&nbsp;bounds.</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;CCControlEventTouchUpInside&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;5,&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;A&nbsp;touch-up&nbsp;event&nbsp;in&nbsp;the&nbsp;control&nbsp;where&nbsp;the&nbsp;finger&nbsp;is&nbsp;inside&nbsp;the&nbsp;bounds&nbsp;of&nbsp;the&nbsp;control.&nbsp;</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;CCControlEventTouchUpOutside&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;6,&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;A&nbsp;touch-up&nbsp;event&nbsp;in&nbsp;the&nbsp;control&nbsp;where&nbsp;the&nbsp;finger&nbsp;is&nbsp;outside&nbsp;the&nbsp;bounds&nbsp;of&nbsp;the&nbsp;control.</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;CCControlEventTouchCancel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;7,&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;A&nbsp;system&nbsp;event&nbsp;canceling&nbsp;the&nbsp;current&nbsp;touches&nbsp;for&nbsp;the&nbsp;control.</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;CCControlEventValueChanged&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1&nbsp;&lt;&lt;&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;A&nbsp;touch&nbsp;dragging&nbsp;or&nbsp;otherwise&nbsp;manipulating&nbsp;a&nbsp;control,&nbsp;causing&nbsp;it&nbsp;to&nbsp;emit&nbsp;a&nbsp;series&nbsp;of&nbsp;different&nbsp;values.</span><span style="color: #008000; "><br />
</span>};</div>
事件原型定义：typedef void (CCObject::*SEL_CCControlHandler)(CCObject*, CCControlEvent);
并用宏cccontrol_selector定义了
#define cccontrol_selector(_SELECTOR) (SEL_CCControlHandler)(&amp;_SELECTOR)
事件的两个参数分别的产生事件的对象，具体的事件，这是一个无符号32位整数，事件值就是CCControlEventTouchDown等定义的值。<br />
在这里，定义了事件函数<span style="background-color: #eeeeee; font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 13px; color: #0000ff;">void</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;OnTouchDown(CCObject</span><span style="background-color: #eeeeee; font-size: 13px;">*</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;pSender,&nbsp;extension::CCControlEvent&nbsp;</span><span style="font-size: 13px; color: #0000ff;">event</span><span style="background-color: #eeeeee; font-size: 13px;">);</span><br />
<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">&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;OnTouchDragEnter(CCObject*&nbsp;pSender,&nbsp;extension::CCControlEvent&nbsp;<span style="color: #0000FF; ">event</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;OnTouchDragExit(CCObject*&nbsp;pSender,&nbsp;extension::CCControlEvent&nbsp;<span style="color: #0000FF; ">event</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;OnTouchDragInside(CCObject*&nbsp;pSender,&nbsp;extension::CCControlEvent&nbsp;<span style="color: #0000FF; ">event</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;OnTouchDragOutside(CCObject*&nbsp;pSender,&nbsp;extension::CCControlEvent&nbsp;<span style="color: #0000FF; ">event</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;OnTouchUpInside(CCObject*&nbsp;pSender,&nbsp;extension::CCControlEvent&nbsp;<span style="color: #0000FF; ">event</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;OnTouchUpOutside(CCObject*&nbsp;pSender,&nbsp;extension::CCControlEvent&nbsp;<span style="color: #0000FF; ">event</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;OnTouchCancel(CCObject*&nbsp;pSender,&nbsp;extension::CCControlEvent&nbsp;<span style="color: #0000FF; ">event</span>);</div>
具体事件实现如下<br />
<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 />
--><br />
<span style="color: #0000FF; ">void</span>&nbsp;HelloWorld::OnTouchDown(CCObject*&nbsp;pSender,&nbsp;extension::CCControlEvent&nbsp;<span style="color: #0000FF; ">event</span>)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;PrintLog("OnTouchDown:%u",&nbsp;<span style="color: #0000FF; ">event</span>);<br />
}<br />
<br />
<span style="color: #0000FF; ">void</span>&nbsp;HelloWorld::OnTouchDragEnter(CCObject*&nbsp;pSender,&nbsp;extension::CCControlEvent&nbsp;<span style="color: #0000FF; ">event</span>)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;PrintLog("OnTouchDragEnter:%u",&nbsp;<span style="color: #0000FF; ">event</span>);<br />
<br />
}<br />
<br />
<span style="color: #0000FF; ">void</span>&nbsp;HelloWorld::OnTouchDragExit(CCObject*&nbsp;pSender,&nbsp;extension::CCControlEvent&nbsp;<span style="color: #0000FF; ">event</span>)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;PrintLog("OnTouchDragExit:%u",&nbsp;<span style="color: #0000FF; ">event</span>);<br />
<br />
}<br />
<br />
<span style="color: #0000FF; ">void</span>&nbsp;HelloWorld::OnTouchDragInside(CCObject*&nbsp;pSender,&nbsp;extension::CCControlEvent&nbsp;<span style="color: #0000FF; ">event</span>)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;PrintLog("OnTouchDragInside:%u",&nbsp;<span style="color: #0000FF; ">event</span>);<br />
}<br />
<br />
<span style="color: #0000FF; ">void</span>&nbsp;HelloWorld::OnTouchDragOutside(CCObject*&nbsp;pSender,&nbsp;extension::CCControlEvent&nbsp;<span style="color: #0000FF; ">event</span>)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;PrintLog("OnTouchDragOutside:%u",&nbsp;<span style="color: #0000FF; ">event</span>);<br />
}<br />
<br />
<span style="color: #0000FF; ">void</span>&nbsp;HelloWorld::OnTouchUpInside(CCObject*&nbsp;pSender,&nbsp;extension::CCControlEvent&nbsp;<span style="color: #0000FF; ">event</span>)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;PrintLog("OnTouchUpInside:%u",&nbsp;<span style="color: #0000FF; ">event</span>);<br />
}<br />
<br />
<span style="color: #0000FF; ">void</span>&nbsp;HelloWorld::OnTouchUpOutside(CCObject*&nbsp;pSender,&nbsp;extension::CCControlEvent&nbsp;<span style="color: #0000FF; ">event</span>)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;PrintLog("OnTouchUpOutside:%u",&nbsp;<span style="color: #0000FF; ">event</span>);<br />
}<br />
<br />
<span style="color: #0000FF; ">void</span>&nbsp;HelloWorld::OnTouchCancel(CCObject*&nbsp;pSender,&nbsp;extension::CCControlEvent&nbsp;<span style="color: #0000FF; ">event</span>)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;PrintLog("OnTouchCancel:%u",&nbsp;<span style="color: #0000FF; ">event</span>);<br />
}</div>
然后定义一个按钮，在init中实现&nbsp;<br />
<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 />
--><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extension::CCScale9Sprite&nbsp;*&nbsp;pBtnNormal&nbsp;=&nbsp;extension::CCScale9Sprite::create("up.png");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extension::CCScale9Sprite&nbsp;*&nbsp;pBtnDown&nbsp;=&nbsp;extension::CCScale9Sprite::create("up.png");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCLabelTTF&nbsp;*&nbsp;pBtnCaption&nbsp;=&nbsp;CCLabelTTF::create("",&nbsp;"宋体",&nbsp;30);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extension::CCControlButton&nbsp;*&nbsp;pBtn&nbsp;=&nbsp;extension::CCControlButton::create(pBtnCaption,&nbsp;pBtnNormal);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBtn-&gt;setBackgroundSpriteForState(pBtnDown,&nbsp;extension::CCControlStateSelected);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBtn-&gt;setPosition(GetPosition(pPlayerLayer,&nbsp;"UpPoint"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBtn-&gt;setAnchorPoint(CCPointZero);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBtn-&gt;setPreferredSize(CCSizeMake(32,&nbsp;32));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBtn-&gt;setTag(100);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>-&gt;addChild(pBtn);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBtn-&gt;addTargetWithActionForControlEvents(<span style="color: #0000FF; ">this</span>,&nbsp;&nbsp;&nbsp;&nbsp;cccontrol_selector(HelloWorld::OnTouchDown),&nbsp;CCControlEventTouchDown);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBtn-&gt;addTargetWithActionForControlEvents(<span style="color: #0000FF; ">this</span>,&nbsp;cccontrol_selector(HelloWorld::OnTouchDragEnter),&nbsp;CCControlEventTouchDragEnter);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBtn-&gt;addTargetWithActionForControlEvents(<span style="color: #0000FF; ">this</span>,&nbsp;cccontrol_selector(HelloWorld::OnTouchDragExit),&nbsp;CCControlEventTouchDragExit);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBtn-&gt;addTargetWithActionForControlEvents(<span style="color: #0000FF; ">this</span>,&nbsp;cccontrol_selector(HelloWorld::OnTouchDragInside),&nbsp;CCControlEventTouchDragInside);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBtn-&gt;addTargetWithActionForControlEvents(<span style="color: #0000FF; ">this</span>,&nbsp;cccontrol_selector(HelloWorld::OnTouchDragOutside),&nbsp;CCControlEventTouchDragOutside);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBtn-&gt;addTargetWithActionForControlEvents(<span style="color: #0000FF; ">this</span>,&nbsp;cccontrol_selector(HelloWorld::OnTouchUpInside),&nbsp;CCControlEventTouchUpInside);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBtn-&gt;addTargetWithActionForControlEvents(<span style="color: #0000FF; ">this</span>,&nbsp;cccontrol_selector(HelloWorld::OnTouchUpOutside),&nbsp;CCControlEventTouchUpOutside);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBtn-&gt;addTargetWithActionForControlEvents(<span style="color: #0000FF; ">this</span>,&nbsp;cccontrol_selector(HelloWorld::OnTouchCancel),&nbsp;CCControlEventTouchCancel);<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div>
需要注意的事件，不要开启touch事件，否则会找不到。
也就是这句//CCDirector::sharedDirector()-&gt;getTouchDispatcher()-&gt;addTargetedDelegate(this, 0, true);<br />具体的按钮事件实验结果说明：<br /><div>CCControlEventTouchDown：鼠标该处于按下并曾经点中按钮时，则触发一次&nbsp;</div><div>CCControlEventTouchDragEnter：当鼠标处于按下并曾经点中按钮的状态下，鼠标进入按钮范围，则触发一次 ,也就是处于按下状态，回到该按钮区域</div><div>CCControlEventTouchDragExit：当鼠标处于按下并曾经点中按钮的状态下，鼠标离开按钮范围，则触发一次 ，也就是处于按下状态，离开该按钮区域</div><div>CCControlEventTouchDragInside：当鼠标处于按下并曾经点中按钮的状态下，鼠标进入按钮范围，则触发，每产生移动，就会触发 ，</div><div>CCControlEventTouchDragOutside： 当鼠标处于按下并曾经点中按钮的状态下，鼠标离开按钮范围，则触发，每产生移动，就会触发&nbsp;</div><div>CCControlEventTouchUpInside：当鼠标处于按下并曾经点中按钮的状态下，鼠标松开且在按钮范围内，则触发一次，也就是处于按下状态，并在该按钮区域放起</div><div>CCControlEventTouchUpOutside：当鼠标处于按下并曾经点中按钮的状态下，鼠标松开且在按钮范围外，则触发一次 也就是处于按下状态，但是已经离开该按钮区域，再放起</div><div>CCControlEventTouchCancel：暂时没有发现能用鼠标触发这个事件的操作<br />了解后，就可以根据实际要求实现了</div><div></div><img src ="http://www.cppblog.com/zdhsoft/aggbug/206833.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-05-05 23:49 <a href="http://www.cppblog.com/zdhsoft/archive/2014/05/05/206833.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记002] 坦克动画</title><link>http://www.cppblog.com/zdhsoft/archive/2014/03/25/206318.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Mon, 24 Mar 2014 16:05:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/03/25/206318.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/206318.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/03/25/206318.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/206318.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/206318.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 第一：没有美术，只好自己用PS。先用PS在原来的4个方向上，做一个履带差异的4方向坦克。<br>第二：用SpritePacker打包成tankbase.plist。然后用CCSpriteFrameCache加载到内存中。<br>CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("basetank.plist");&nbsp;&nbsp;<a href='http://www.cppblog.com/zdhsoft/archive/2014/03/25/206318.html'>阅读全文</a><img src ="http://www.cppblog.com/zdhsoft/aggbug/206318.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-03-25 00:05 <a href="http://www.cppblog.com/zdhsoft/archive/2014/03/25/206318.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[cocos2dx笔记001] 使用CCSpriteFrameCache</title><link>http://www.cppblog.com/zdhsoft/archive/2014/03/24/206307.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Sun, 23 Mar 2014 16:08:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/03/24/206307.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/206307.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/03/24/206307.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/206307.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/206307.html</trackback:ping><description><![CDATA[（基于cocos2dx 2.2.2）<br />
如果很多图片很小或常用，可以使用CCSpriteFrameCache,来避免资源被反复加载。&nbsp;<br />
（注：对于plist，我这里使用的是一个免费的工具，SpritePacker，http://spritepacker.kernys.net）<br />
<br />
如：CCSpriteFrameCache::sharedSpriteFrameCache()-&gt;addSpriteFramesWithFile("basetank.plist");<br />
<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 />
--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><br />
<span style="color: #0000FF; ">&lt;!</span><span style="color: #FF00FF; ">DOCTYPE&nbsp;plist&nbsp;PUBLIC&nbsp;"-//Apple//DTD&nbsp;PLIST&nbsp;1.0//EN"&nbsp;"http://www.apple.com/DTDs/PropertyList-1.0.dtd"</span><span style="color: #0000FF; ">&gt;</span><br />
<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">plist&nbsp;</span><span style="color: #FF0000; ">version</span><span style="color: #0000FF; ">="1.0"</span><span style="color: #0000FF; ">&gt;</span><br />
<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>frames<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>basetank_down.png<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>frame<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{{0,0},{26,26}}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>offset<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{0,0}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>rotated<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">false</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>sourceColorRect<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{{3,3},{26,26}}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>sourceSize<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{32,32}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>basetank_left.png<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>frame<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{{0,27},{26,26}}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>offset<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{0,0}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>rotated<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">false</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>sourceColorRect<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{{3,3},{26,26}}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>sourceSize<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{32,32}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>basetank_right.png<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>frame<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{{0,54},{26,26}}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>offset<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{0,0}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>rotated<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">false</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>sourceColorRect<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{{3,3},{26,26}}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>sourceSize<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{32,32}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>basetank_up.png<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>frame<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{{0,81},{26,26}}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>offset<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{0,0}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>rotated<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">false</span><span style="color: #0000FF; ">/&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>sourceColorRect<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{{3,3},{26,26}}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>sourceSize<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{32,32}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>metadata<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>format<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">integer</span><span style="color: #0000FF; ">&gt;</span>2<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">integer</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>realTextureFileName<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>basetank.png<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>size<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{32,128}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>smartupdate<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>{None}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>textureFileName<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>basetank.png<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />
<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />
<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">plist</span><span style="color: #0000FF; ">&gt;<br />
</span></div>
<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/basetank.png" width="32" height="128" alt="" />这样，就可以完成一组图片资源加载。<br />
<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 />
-->&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CCSprite&nbsp;*&nbsp;p1Pic&nbsp;=&nbsp;CCSprite::createWithSpriteFrameName(&#8220;basetank_up.png&#8221;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1Pic-&gt;setPosition(GetPosition(pPlayerLayer,&nbsp;"Player1"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1Pic-&gt;setAnchorPoint(ccp(0,&nbsp;0));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>-&gt;addChild(p1Pic);</div>
</div>如需更换图片，<br /><div><div style="display: inline-block;"><span style="font-size: 13px; background-color: #eeeeee;">p1Pic</span></div>-&gt;setDisplayFrame(CCSpriteFrameCache::sharedSpriteFrameCache()-&gt;spriteFrameByName("basetank_right.png"));<br />这里的作用相当于是把tank向右转</div><div></div><img src ="http://www.cppblog.com/zdhsoft/aggbug/206307.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-03-24 00:08 <a href="http://www.cppblog.com/zdhsoft/archive/2014/03/24/206307.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cocos2dx编辑的时候，使用c++0x11标准</title><link>http://www.cppblog.com/zdhsoft/archive/2014/03/16/206193.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Sun, 16 Mar 2014 15:35:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/03/16/206193.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/206193.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/03/16/206193.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/206193.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/206193.html</trackback:ping><description><![CDATA[<div>(基于cocos2dx 2.2.2)现在下载的cygwin自带的gcc编译器的版本是4.8.x了，也就是全面支持c++0x11版本了。（我用的vs2013也已经大部分支持C++0x11的版本）。但是默认情况下，gcc是不支持的，需要在编译选项设置开关。<br />我们用文本编辑器打开proj.android\jni\Application.mk，并增加 -std=c++0x，这样就可以编译c++0x11的C++代码了。<br /><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 />-->APP_STL&nbsp;:=&nbsp;gnustl_static<br />APP_CPPFLAGS&nbsp;:=&nbsp;-frtti&nbsp;-DCC_ENABLE_CHIPMUNK_INTEGRATION=1&nbsp;-DCOCOS2D_DEBUG=1&nbsp;-std=c++0x</div></div><img src ="http://www.cppblog.com/zdhsoft/aggbug/206193.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-03-16 23:35 <a href="http://www.cppblog.com/zdhsoft/archive/2014/03/16/206193.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cocos2dx一种简单的滚动文本日志</title><link>http://www.cppblog.com/zdhsoft/archive/2014/03/16/cocos2dxlogview.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Sun, 16 Mar 2014 15:15:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/03/16/cocos2dxlogview.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/206191.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/03/16/cocos2dxlogview.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/206191.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/206191.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在手机上调试，不能所见所得日志，这个是一个比较麻烦的事，于是想到了，用多行文本做日志。<br>下面是日志的代码。从CCLabelTTF派生。这里主要提供了VLog和Log两个日志输出函数。<br>定义如下<br>void VLog(const char * paramFormat, va_list param_argptr);<br>void Log(const char * paramFormat, ...);<br>其中VLog主要应用于已经有va_list的情况下。&nbsp;&nbsp;<a href='http://www.cppblog.com/zdhsoft/archive/2014/03/16/cocos2dxlogview.html'>阅读全文</a><img src ="http://www.cppblog.com/zdhsoft/aggbug/206191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-03-16 23:15 <a href="http://www.cppblog.com/zdhsoft/archive/2014/03/16/cocos2dxlogview.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>泰然cocos2d-x多分辨率适配方案(转)</title><link>http://www.cppblog.com/zdhsoft/archive/2014/02/03/cocos2dxzt01.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Mon, 03 Feb 2014 05:22:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/02/03/cocos2dxzt01.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/205628.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/02/03/cocos2dxzt01.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/205628.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/205628.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原文地址:http://www.ityran.com/archives/2911<br><br>DesignResolutionSize&nbsp;&nbsp;<a href='http://www.cppblog.com/zdhsoft/archive/2014/02/03/cocos2dxzt01.html'>阅读全文</a><img src ="http://www.cppblog.com/zdhsoft/aggbug/205628.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-02-03 13:22 <a href="http://www.cppblog.com/zdhsoft/archive/2014/02/03/cocos2dxzt01.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开始学习cocos2dx之二:AndroidManifest.xml文件解析</title><link>http://www.cppblog.com/zdhsoft/archive/2014/02/03/cocos2dx03.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Mon, 03 Feb 2014 04:14:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/02/03/cocos2dx03.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/205627.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/02/03/cocos2dx03.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/205627.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/205627.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 转贴部分地址：http://www.cnblogs.com/pilang/archive/2011/04/20/2022932.html<br>转贴内容：<br>一、关于AndroidManifest.xml<br>AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录，描述了package中暴露的组件（activities, services, 等等），他们各自的实现类，各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation（安全控制和测试）&nbsp;&nbsp;<a href='http://www.cppblog.com/zdhsoft/archive/2014/02/03/cocos2dx03.html'>阅读全文</a><img src ="http://www.cppblog.com/zdhsoft/aggbug/205627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-02-03 12:14 <a href="http://www.cppblog.com/zdhsoft/archive/2014/02/03/cocos2dx03.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开始学习cocos2dx之二：一个简单的动画 </title><link>http://www.cppblog.com/zdhsoft/archive/2014/01/29/cocos2dx02.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Wed, 29 Jan 2014 13:37:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/01/29/cocos2dx02.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/205603.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/01/29/cocos2dx02.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/205603.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/205603.html</trackback:ping><description><![CDATA[参考的博客地址http://4137613.blog.51cto.com/4127613/759610<br />但是这个博客的地址的例子，不适合2.2.2,我把代码修改了一下，OK了！参考代码如下。（原理参考原文<span style="font-size: 13px; color: #008080;">&nbsp;1</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCSize&nbsp;s&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px;">=</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;CCDirector::sharedDirector()</span><span style="background-color: #eeeeee; font-size: 13px;">-&gt;</span><span style="background-color: #eeeeee; font-size: 13px;">getWinSize();</span><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"><span style="color: #008080; ">&nbsp;2</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">#1：生成动画需要的数据类&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCTexture2D&nbsp;*texture&nbsp;=&nbsp;CCTextureCache::sharedTextureCache()-&gt;addImage("picgirl.png");<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCArray&nbsp;animFrames;<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;y&nbsp;=&nbsp;0;&nbsp;y&nbsp;&lt;&nbsp;4;&nbsp;y++)<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;x&nbsp;=&nbsp;0;&nbsp;x&nbsp;&lt;&nbsp;4;&nbsp;x++)<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCSpriteFrame&nbsp;*frame&nbsp;=&nbsp;CCSpriteFrame::createWithTexture(texture,&nbsp;CCRectMake(32&nbsp;*&nbsp;x,&nbsp;48&nbsp;*&nbsp;y,&nbsp;32,&nbsp;48));<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;animFrames.addObject(frame);<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">16</span>&nbsp;<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCAnimation&nbsp;*animation&nbsp;=&nbsp;CCAnimation::createWithSpriteFrames(&amp;animFrames,&nbsp;0.2f);<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">19</span>&nbsp;<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">#2：初始化并设置Sprite&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCSprite&nbsp;*sprite&nbsp;=&nbsp;CCSprite::createWithSpriteFrame(CCSpriteFrame::createWithTexture(texture,&nbsp;CCRectMake(0&nbsp;,&nbsp;0,&nbsp;32,&nbsp;48)));<span style="color: #008000; ">//</span><span style="color: #008000; ">CCSprite::spriteWithSpriteFrame(frame0);</span><span style="color: #008000; ">//</span><span style="color: #008000; ">设置一个初始frame&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprite-&gt;setPosition(ccp(s.width&nbsp;/&nbsp;2,&nbsp;100));<br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(sprite);<br /><span style="color: #008080; ">24</span>&nbsp;<br /><span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">#3：使用animation生成一个动画动作animate&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCAnimate&nbsp;*animate&nbsp;=&nbsp;CCAnimate::create(animation);</div><span style="font-size: 13px; color: #008080;">27</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprite</span><span style="background-color: #eeeeee; font-size: 13px;">-&gt;</span><span style="background-color: #eeeeee; font-size: 13px;">runAction(CCRepeatForever::create(animate));</span><span style="font-size: 13px; color: #008000;">//</span><span style="font-size: 13px; color: #008000;">重复播放&nbsp;</span>）<br />动来用的图片<img src="http://www.cppblog.com/images/cppblog_com/zdhsoft/picgirl.png" border="0" alt="" width="128" height="192" /><img src ="http://www.cppblog.com/zdhsoft/aggbug/205603.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-01-29 21:37 <a href="http://www.cppblog.com/zdhsoft/archive/2014/01/29/cocos2dx02.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开始学习cocos2dx之一：合并编译cpp</title><link>http://www.cppblog.com/zdhsoft/archive/2014/01/29/cocos2dx01.html</link><dc:creator>冬瓜</dc:creator><author>冬瓜</author><pubDate>Wed, 29 Jan 2014 04:11:00 GMT</pubDate><guid>http://www.cppblog.com/zdhsoft/archive/2014/01/29/cocos2dx01.html</guid><wfw:comment>http://www.cppblog.com/zdhsoft/comments/205600.html</wfw:comment><comments>http://www.cppblog.com/zdhsoft/archive/2014/01/29/cocos2dx01.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zdhsoft/comments/commentRss/205600.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zdhsoft/services/trackbacks/205600.html</trackback:ping><description><![CDATA[过年了，终于可以有一个比较长时间的假期。虽然会有各种杂七八的事情，但总算不用想工作上的事情。埋头研究一下cocos2dx。看了一下书，有了一个大概的了解。终于下手写一个实例了。看书和实例还是有一个很大区别的。<br />本想有cocos2dx 3.0beta开始的，而且已经能够编译demo,但考虑来年，要在实际项目中使用，最后，还是选择了cocos2dx 2.2.2这个版本。<br />cocos2dx 2.2.2的安装过程，参考<a href="http://www.cppblog.com/zdhsoft/archive/2013/11/06/cocos2dx.html">http://www.cppblog.com/zdhsoft/archive/2013/11/06/cocos2dx.html</a>。<br />然后我生了我的一个例子MyGame。<br />同样的问题，每次增加.cpp的文件，都需要改proj.android/jni/android.mk，这个文件。有点烦.<br />正好，我前些天写一个优化编译的问题，正好可以派上用场。参考<a href="http://www.cppblog.com/zdhsoft/archive/2014/01/02/makecxx.html">http://www.cppblog.com/zdhsoft/archive/2014/01/02/makecxx.html</a>。<br />使用文章中的方法，在classes生成一个<span style="color: red;">makecxx.py</span>，然后再建一个makecxx.bat，.bat的内容如下：<span style="color: red;">python makecxx.py . allcpp.cxx</span>。这样，只要在生成android的时候，运行一下这个批处理文件就可以了。<br />最后修改<span style="color: red;">proj.android/jni/android.mk</span>,找到<span style="color: red;">LOCAL_SRC_FILES</span>，改为<br /><div><span style="color: red;">LOCAL_SRC_FILES := hellocpp/main.cpp \</span></div><div><span style="color: red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;../../Classes/allcpp.cxx</span><br />其它都不变，然后，就可以编译完成。最后<span style="color: red;">ant debug</span>。就可以拿到手机上跑了：）</div><img src ="http://www.cppblog.com/zdhsoft/aggbug/205600.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zdhsoft/" target="_blank">冬瓜</a> 2014-01-29 12:11 <a href="http://www.cppblog.com/zdhsoft/archive/2014/01/29/cocos2dx01.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>