﻿<?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++博客-Error-随笔分类-cocos2d-x</title><link>http://www.cppblog.com/Error/category/20831.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 18 Apr 2017 05:21:32 GMT</lastBuildDate><pubDate>Tue, 18 Apr 2017 05:21:32 GMT</pubDate><ttl>60</ttl><item><title>cocos接入bugly获取崩溃堆栈</title><link>http://www.cppblog.com/Error/archive/2017/04/17/214864.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Mon, 17 Apr 2017 11:51:00 GMT</pubDate><guid>http://www.cppblog.com/Error/archive/2017/04/17/214864.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/214864.html</wfw:comment><comments>http://www.cppblog.com/Error/archive/2017/04/17/214864.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/214864.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/214864.html</trackback:ping><description><![CDATA[<div>1.bugly sdk整个目录拷贝到cocos_sdk/external</div><div>2.在项目中将bugly_sdk/agent/android/*.jar;bugly_sdk/android/*.jar拷贝到项目libs目录.!!!记得要添加到java的Referenced Libraries否则是不生效的。</div><div>&nbsp; 当前需要加入进来的是两个jar包，一个sdk的一个插件的</div><div>3.在项目中将bugly_sdk/android/*.so拷贝到项目的jni/prebuilt</div><div>4.Android.mk文件调整：</div><div><span style="white-space:pre">	</span>#集成libBugly.so，添加在LOCAL_PATH := $(call my-dir)</div><div><span style="white-space:pre">	</span>LOCAL_MODULE := bugly_native_prebuilt</div><div><span style="white-space:pre">	</span>LOCAL_SRC_FILES := prebuilt/$(TARGET_ARCH_ABI)/libBugly.so</div><div><span style="white-space:pre">	</span>include $(PREBUILT_SHARED_LIBRARY)</div><div></div><div><span style="white-space:pre">	</span>#引用bugly/Android.mk定义的Module，在LOCAL_STATIC_LIBRARIES := xxx之后</div><div><span style="white-space:pre">	</span>LOCAL_STATIC_LIBRARIES += bugly_crashreport_cocos_static</div><div></div><div><span style="white-space:pre">	</span>#添加在末尾</div><div><span style="white-space:pre">	</span>$(call import-module, external/bugly)</div><div>5.编辑AndroidManifest.xml添加权限：</div><div><span style="white-space:pre">	</span>&lt;uses-permission android:name="android.permission.READ_PHONE_STATE" /&gt;</div><div><span style="white-space:pre">	</span>&lt;uses-permission android:name="android.permission.INTERNET" /&gt;</div><div><span style="white-space:pre">	</span>&lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&gt;</div><div><span style="white-space:pre">	</span>&lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&gt;</div><div><span style="white-space:pre">	</span>&lt;uses-permission android:name="android.permission.READ_LOGS" /&gt;</div><div>6.初始化</div><div>在AppDelegate::applicationDidFinishLaunching()接口调用CrashReport::initCrashReport(addId, debug)</div><div>7.实际测试添加完成后大概半小时后生效</div><img src ="http://www.cppblog.com/Error/aggbug/214864.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2017-04-17 19:51 <a href="http://www.cppblog.com/Error/archive/2017/04/17/214864.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2017-04-16：cocos-js如何使用plist图片，web平台无法使用ccui</title><link>http://www.cppblog.com/Error/archive/2017/04/16/214857.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Sun, 16 Apr 2017 15:54:00 GMT</pubDate><guid>http://www.cppblog.com/Error/archive/2017/04/16/214857.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/214857.html</wfw:comment><comments>http://www.cppblog.com/Error/archive/2017/04/16/214857.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/214857.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/214857.html</trackback:ping><description><![CDATA[<div>// plsit测试</div><div>cc.log("begin test plist");</div><div>cc.spriteFrameCache.addSpriteFrames("res/hall_entrance.plist");</div><div>//var imageView = new ccui.ImageView("#hall_enter_3.png"); &nbsp;错误用法，js里边需要通过ccui.Widget.PLIST_TEXTURE参数明确指定</div><div>var imageView = new ccui.ImageView("hall_enter_3.png", ccui.Widget.PLIST_TEXTURE);</div><div>this.addChild(imageView);<br /><br /><br /><br /><br />ccui使用：<br />在project.json中的modules属性修改为："modules" : ["cocos2d","extensions"],<br /></div><img src ="http://www.cppblog.com/Error/aggbug/214857.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2017-04-16 23:54 <a href="http://www.cppblog.com/Error/archive/2017/04/16/214857.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2017-04-11</title><link>http://www.cppblog.com/Error/archive/2017/04/11/214833.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Tue, 11 Apr 2017 15:36:00 GMT</pubDate><guid>http://www.cppblog.com/Error/archive/2017/04/11/214833.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/214833.html</wfw:comment><comments>http://www.cppblog.com/Error/archive/2017/04/11/214833.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/214833.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/214833.html</trackback:ping><description><![CDATA[<div>Q1：怎么输出日志</div><div>A1：cc.log();</div><div></div><div>Q2: 日志怎么格式化输出</div><div>A2：cc.log("%d-%s", 123321, 'abc'); 目测和C类似，估计和console.log也类似，应该基础的js书里边就有，改天专门研究</div><div></div><div>Q3：为什么获取到的Button、Sprite等控件的contentSize是(0, 0)</div><div>A3: 应为没有在resource.js中添加，添加以后就能成功获取到size，表现和native一样了。猜测可能是在图片加载的时候做了预处理。</div><div></div><img src ="http://www.cppblog.com/Error/aggbug/214833.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2017-04-11 23:36 <a href="http://www.cppblog.com/Error/archive/2017/04/11/214833.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简单分析cocos2d::Sequence::create函数的可变参数实现，以及C++ 1X优化方式讨论</title><link>http://www.cppblog.com/Error/archive/2017/04/04/214807.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Tue, 04 Apr 2017 05:11:00 GMT</pubDate><guid>http://www.cppblog.com/Error/archive/2017/04/04/214807.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/214807.html</wfw:comment><comments>http://www.cppblog.com/Error/archive/2017/04/04/214807.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/214807.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/214807.html</trackback:ping><description><![CDATA[<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; ">&nbsp;ConsoleApplication2.cpp&nbsp;:&nbsp;定义控制台应用程序的入口点。<br /></span><span style="color: #008000; ">//<br /></span><br />#include&nbsp;"stdafx.h"<br />#include&nbsp;&lt;iostream&gt;<br />#include&nbsp;&lt;cstdarg&gt;<br />#include&nbsp;&lt;vector&gt;<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;变参函数例子<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />中不包含类型信息，不包含数量信息。相对优雅的解决方式有两个：<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;1.类似printf的方式，通过fmt字符串解决<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;2.类似cocos::Sequence::create的方式，应为全部是动画指针，所以类型是约定好的统一类型，结束标记可以使用NULL标记</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">void</span>&nbsp;ParametListTest(<span style="color: #0000FF; ">int</span>&nbsp;nStart,&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;定义一个参数列表，用于接收解析"<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />"</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;va_list&nbsp;parametList;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;输出第一个参数</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;nStart&nbsp;&lt;&lt;&nbsp;std::endl;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;nStart是&#8216;<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />&#8217;之前最后一个函数参数，用于内存定位，获取parametList</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;va_start(parametList,&nbsp;nStart);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />里边的具体参数个数是获取不到的<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;printf的处理和这里不一样：printf根据fmt字符串中的"%"标记来萃取参数类型、数量</span><span style="color: #008000; "><br /></span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;nTem&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;重parametList获取下一个类型为int的变量</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;nTem&nbsp;=&nbsp;va_arg(parametList,&nbsp;<span style="color: #0000FF; ">int</span>);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;-1作为结束标记</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(-1&nbsp;!=&nbsp;nTem)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;nTem&nbsp;&lt;&lt;&nbsp;std::endl;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nTem&nbsp;=&nbsp;va_arg(parametList,&nbsp;<span style="color: #0000FF; ">int</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;va_end(parametList);<br />}<br /><br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;模版参数最后一个递归(带重载的递归)</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">void</span>&nbsp;TParametListTest()<br />{<br />}<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;C++&nbsp;1x变参模版</span><span style="color: #008000; "><br /></span>template&lt;typename&nbsp;T,&nbsp;typename&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />&nbsp;Args&gt;<br /><span style="color: #0000FF; ">void</span>&nbsp;TParametListTest(T&nbsp;nStart,&nbsp;Args&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />&nbsp;args)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;nStart&nbsp;&lt;&lt;&nbsp;std::endl;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;可以直接展开多参数的定义<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;递归一次参数减少一个，最后会调用void重载</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;TParametListTest(args<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />);<br />}<br /><br /><br /><br /><br /><br /><span style="color: #0000FF; ">int</span>&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;假设需要实现的功能是输出，这个demo已经满足条件<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;假设需要实现的是类似cocos的时序动画功能，其实把std::cout换成成员变量，或者某个全局函数即可实现</span><span style="color: #008000; "><br /></span><br />&nbsp;&nbsp;&nbsp;&nbsp;ParametListTest(1,&nbsp;2,&nbsp;3,&nbsp;3,&nbsp;3,&nbsp;3,&nbsp;-1);<br />&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;"----------------------------"&nbsp;&lt;&lt;&nbsp;std::endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;TParametListTest(1,&nbsp;2,&nbsp;3,&nbsp;3,&nbsp;3,&nbsp;3); &nbsp;// 采用1X可变模版参数语法实现的，可以抹掉末尾的结束标记<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />}<br /></div><img src ="http://www.cppblog.com/Error/aggbug/214807.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2017-04-04 13:11 <a href="http://www.cppblog.com/Error/archive/2017/04/04/214807.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cocos-js中: point size rect的简单文档</title><link>http://www.cppblog.com/Error/archive/2017/03/19/214763.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Sun, 19 Mar 2017 02:54:00 GMT</pubDate><guid>http://www.cppblog.com/Error/archive/2017/03/19/214763.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/214763.html</wfw:comment><comments>http://www.cppblog.com/Error/archive/2017/03/19/214763.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/214763.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/214763.html</trackback:ping><description><![CDATA[<div>实现在CCGeometry.js</div><div>Point:</div><div>type: cc.Point(x,y)</div><div>help functon:&nbsp;</div><div><span style="white-space:pre">	</span>cc.p(x,y)</div><div><span style="white-space:pre">	</span>cc.pointEqualToPoint(p1, p2)</div><div><span style="white-space:pre">	</span></div><div>cc.Size()</div><div>cc.size();</div><div>cc.sizeEqualToSize</div><div></div><div>cc.Rect()</div><div>cc.rect()</div><div>cc.rectEqualToRect()</div><div>cc._rectEqualToZero()</div><div>cc.rectContainsRect()</div><div>cc.rectGetMaxX</div><div>cc.rectGetMidX</div><div>cc.rectGetMinX</div><div>cc.rectGetMaxY</div><div>cc.rectGetMidY</div><div>cc.rectGetMinY</div><div>cc.rectContainsPoint</div><div>cc.rectIntersertsRect</div><div>cc.rectOverlapsRect</div><div>cc.rectUnion</div><div>cc.rectInterserction</div><div></div><div>// 可视区域</div><div>cc.visibleRect()<br /><br /><br />经过实际调试：<br />Point： 有x y属性可以直接使用<br />Size: width height<br />Rect:&nbsp;x y width height</div><img src ="http://www.cppblog.com/Error/aggbug/214763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2017-03-19 10:54 <a href="http://www.cppblog.com/Error/archive/2017/03/19/214763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CSS盒子模型</title><link>http://www.cppblog.com/Error/archive/2016/03/29/213149.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Tue, 29 Mar 2016 04:43:00 GMT</pubDate><guid>http://www.cppblog.com/Error/archive/2016/03/29/213149.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/213149.html</wfw:comment><comments>http://www.cppblog.com/Error/archive/2016/03/29/213149.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/213149.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/213149.html</trackback:ping><description><![CDATA[<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;|<br />|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maggin &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;|&nbsp;|<br />|&nbsp;&nbsp;|--------------------------------------------|&nbsp;|<br />|&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;|&nbsp;|<br />|&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;padding &nbsp; &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;|&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;content&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;|<br />|&nbsp;&nbsp;|--------------------------------------------|&nbsp;|<br />|-------------------------------------------------|<br />盒子模型是由margin（边界）、border（边框）、padding（空白）和content（内容）几个属性组成。<br />margin:&nbsp;外边距(和其他盒子的间距)<br />border:&nbsp;边框<br />padding:&nbsp;内边距（内容到边框的距离）<br />content:&nbsp;内容大小<br />所以实际大小应该是：size&nbsp;=&nbsp;content&nbsp;+&nbsp;padding&nbsp;+&nbsp;border</div><img src ="http://www.cppblog.com/Error/aggbug/213149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2016-03-29 12:43 <a href="http://www.cppblog.com/Error/archive/2016/03/29/213149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cocos的内存管理[autorelease]，其实是个老掉牙的问题，不过我最近才深入看了下</title><link>http://www.cppblog.com/Error/archive/2016/03/15/213033.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Tue, 15 Mar 2016 12:52:00 GMT</pubDate><guid>http://www.cppblog.com/Error/archive/2016/03/15/213033.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/213033.html</wfw:comment><comments>http://www.cppblog.com/Error/archive/2016/03/15/213033.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/213033.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/213033.html</trackback:ping><description><![CDATA[首先Ref不用解释。<br />cocos和常见的Ref或者智能指针稍微有点不一样：<br />首先介绍传统玩法：<br />传统玩法Ref一般要配合RefPtr使用的，也就是new出来的Ref派生类引用计数为0，要放到一个RefPtr里边来做生命周期管理。<br /><br />在来看看cocos的玩法：<br />new出来Ref引用计数是为1的，那么问题来了，这样如果Add和Release成对出现则Ref永远回不到0了。<br />cocos是这样解决这个问题的：autorelease<br />调用autorelease，会把当前Ref为1的对象压入pool，然后在下一帧的调用release这样就天下太平了，如果有add到其他节点上他就会变1，如果没有就直接归零析构了<br />这样就省掉了RefPtr操作<br /><br /><br />为了保持风格统一，我也必须这样玩，这样的优势是不需要RefPtr，可能脚本绑定会方便不少吧<img src ="http://www.cppblog.com/Error/aggbug/213033.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2016-03-15 20:52 <a href="http://www.cppblog.com/Error/archive/2016/03/15/213033.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cocos2dx-quick-01</title><link>http://www.cppblog.com/Error/archive/2015/07/17/211290.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Fri, 17 Jul 2015 10:54:00 GMT</pubDate><guid>http://www.cppblog.com/Error/archive/2015/07/17/211290.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/211290.html</wfw:comment><comments>http://www.cppblog.com/Error/archive/2015/07/17/211290.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/211290.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/211290.html</trackback:ping><description><![CDATA[<div>FileUtils::setPopupNotify() &nbsp;// 图片加载失败后，弹出message box提示</div><div></div><div>xpcall(main, __G__TRACKBACK__) &nbsp; // xpcall( 调用函数, 错误捕获函数 );&nbsp;</div><div></div><div>package.path = package.path .. ";src/" &nbsp;// ..是连字符，和win path一样;风格，表示添加目录src</div><div></div><div>require("app.MyApp").new():run() &nbsp;// 加载app目录的MyApp文件，类似dofile,然后调用new方法调用默认的构造函数MyApp:ctor()在调用成员函数run</div><div></div><div></div><div>cc.FileUtils:getInstance():addSearchPath("res/") &nbsp;// 添加搜索路径</div><div></div><div>self:enterScene("MainScene") &nbsp;// 调用 AppBase:enterScene相当于&nbsp;</div><div>//self.packageRoot = packageRoot or "app" &nbsp; -- 这里的or类似C语言的？：用法，所以默认是app</div><div>//self.packageRoot .. ".scenes." .. sceneNamelocal&nbsp;</div><div>//sceneClass = require(scenePackageName)</div><div></div><div>cc.ui.UILabel看源代码，发现lua是&#8220;动态类型，必须转变cpp的思想&#8221;。cc.ui.UILabel.new实际的基类是根据参数决定的，lua代码提供若然扩展方法，基类根据参数决定了以后还可以拥有基类的方法</div><div>最终是通过display.newBMFontLabel等函数创建的。</div><div></div><div>class("UILabel", function(options) return XX end),表示类UILabel继承于后面的函数返回的对象。相当于给后面函数产生的原表附加当前给定的原表信息</div><div></div><div>&nbsp;<br /><br /><div>printInfo('run') &nbsp;-- cocos也有分级日志，<br /><div>printLog(tag, fmt, ...)<br /><div>printError(fmt, ...)<br /><div>dump_value_(v)<br /><br /><br />dump(self) &nbsp;--类似php的dump函数，用于输出复杂变量</div></div></div></div></div><img src ="http://www.cppblog.com/Error/aggbug/211290.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2015-07-17 18:54 <a href="http://www.cppblog.com/Error/archive/2015/07/17/211290.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>coco2dx3.3 的两个“bug”： 1.所有ttf文字都不显示，或者乱码，排除字符集错误；2.无法在xp上运行</title><link>http://www.cppblog.com/Error/archive/2014/12/08/209058.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Mon, 08 Dec 2014 11:26:00 GMT</pubDate><guid>http://www.cppblog.com/Error/archive/2014/12/08/209058.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/209058.html</wfw:comment><comments>http://www.cppblog.com/Error/archive/2014/12/08/209058.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/209058.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/209058.html</trackback:ping><description><![CDATA[一：ttf不显示的bug，难搞，一点头绪都没有，只知道别人电脑上能显示，到我这就不行了。其实迅雷的客户端在我的电脑上显示的也不正常。后来发现居然是桌面设置的问题，之前设置的16位，实际上设置32位真彩图就一点问题也没有了。<br />网上找了下，按照下面的修改，即时设置是16位也能正常了。<br />一句话描述就是：cocos2dx使用的是32位的帧缓存，创建bitmap的时候使用的dc不是，创建dib的时候也没有设置32位，所以就乱码了。<br /><br /><pre mb-10"="" id="recommend-content-1616121196" accuse="aContent">修改 win32/ccimage.cpp 文件<br />1.<br />    m_hBmp = CreateBitmap(nWidth, nHeight, 1, 32, NULL);<br />    改成 :<br />    m_hBmp = CreateCompatibleBitmap(m_hDC, nWidth, nHeight);<br /><br />2.<br />    填加<br />    bi.bmiHeader.biBitCount = 32;<img id="selectsearch-icon" alt="搜索" src="http://img.baidu.com/img/iknow/qb/select-search.png" /><br />    在下面这句话之前<br />    GetDIBits(dc.getDC(), dc.getBitmap(), 0, m_nHeight, m_pData, (LPBITMAPINFO)&amp;bi, DIB_RGB_COLORS);<br />完美解决<br /><br /><br /><br /><br /><br />二：<span style="font-family: verdana, 'courier new';">无法在xp上运行，现象是先提示什么 无法定位GetTickCount64于Kernel32.dll，然后又</span><span style="font-family: verdana, 'courier new';">无法定位inet_ntop于Kernel32.dll</span><pre mb-10"="" id="recommend-content-1616121196" accuse="aContent"><font face="verdana, courier new">起初怀疑是控制帧率或者定时器的时候使用了GetTickCount64，后来看了下，用的是多媒体高精度定时器那一套，然后有尝试使用windbg下api断点，也没断到。<br />在然后老老实实一个dll 一个dll的去看导入函数列表，后来发现是libwebsocket.dll使用了GetTickCount64，从官网重新搞一个回来自己编译。<br />接下来提示inet_ntop了，思维局限倒是我还以为是在websocket上除了问题，但是实际上最后找到的是在libcocos2dx里边用到了这个函数，所以，还是要有全局意识，不能自己钻到角落里边去了，盯着一个点不放。<br /></font></pre><div>if (!WSAAddressToStringA((struct sockaddr*)&amp;sin-&gt;sin6_addr, sizeof(sin-&gt;sin6_addr), 0, buf, &amp;nLen)) 			<br />&nbsp;&nbsp;&nbsp;cocos2d::log("Console: listening on  %s : %d", buf, ntohs(sin-&gt;sin6_port)); 		<br />//if( inet_ntop(res-&gt;ai_family, &amp;sin-&gt;sin6_addr, buf, sizeof(buf)) != nullptr ) 		<br />//    cocos2d::log("Console: listening on  %s : %d", buf, ntohs(sin-&gt;sin6_port)); 		</div><br /><br /><br /></pre><img src ="http://www.cppblog.com/Error/aggbug/209058.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2014-12-08 19:26 <a href="http://www.cppblog.com/Error/archive/2014/12/08/209058.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初略的过了一下cocos2d-x的脚本对事件响应的处理</title><link>http://www.cppblog.com/Error/archive/2014/03/08/206104.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Sat, 08 Mar 2014 12:47:00 GMT</pubDate><guid>http://www.cppblog.com/Error/archive/2014/03/08/206104.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/206104.html</wfw:comment><comments>http://www.cppblog.com/Error/archive/2014/03/08/206104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/206104.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/206104.html</trackback:ping><description><![CDATA[如果使用了脚本，那么最终的事件应该是由：CCLuaEngine::executeEvent分发出去的，他应该是利用lua的一些机制绑定了对象和处理函数。<br /><br /><br />在脚本侧，用类似：<br />menuPopupItem:registerScriptHandler（menuCallbackExit）<br /><br /><div>menuLayer:setTouchEnabled(true)</div> <div>&nbsp;<wbr> &nbsp;<wbr> menuLayer:registerScriptTouchHandl<wbr>er(onTouch)<br /><br /><div>&nbsp; &nbsp; &nbsp; &nbsp; layerFarm:registerScriptTouchHandler(onTouch)</div><div>&nbsp; &nbsp; &nbsp; &nbsp; layerFarm:setTouchEnabled(true)</div></div>这样的代码来设定事件响应处理函数<br /><br /><br />猜测一下，当以脚本模式运行的时候如果事件发生了，首先检测发生事件的对象相应的处理脚本函数时候存在，如果存在就直接调用脚本函数<br />具体的各种事件类型，和个事件的各种参数以后在来分析吧<img src ="http://www.cppblog.com/Error/aggbug/206104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2014-03-08 20:47 <a href="http://www.cppblog.com/Error/archive/2014/03/08/206104.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>