﻿<?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++博客-小四的海市蜃楼</title><link>http://www.cppblog.com/cugdj/</link><description>Never surrender to complexity</description><language>zh-cn</language><lastBuildDate>Tue, 07 Apr 2026 21:35:41 GMT</lastBuildDate><pubDate>Tue, 07 Apr 2026 21:35:41 GMT</pubDate><ttl>60</ttl><item><title>Unity3D的Animation相关</title><link>http://www.cppblog.com/cugdj/archive/2014/12/03/209012.html</link><dc:creator>小四</dc:creator><author>小四</author><pubDate>Wed, 03 Dec 2014 07:14:00 GMT</pubDate><guid>http://www.cppblog.com/cugdj/archive/2014/12/03/209012.html</guid><wfw:comment>http://www.cppblog.com/cugdj/comments/209012.html</wfw:comment><comments>http://www.cppblog.com/cugdj/archive/2014/12/03/209012.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cugdj/comments/commentRss/209012.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cugdj/services/trackbacks/209012.html</trackback:ping><description><![CDATA[<p>动画Layer的作用：<br />U3D的老动画系统，可以通过设置动画Layer，在不去中断低层级动画的同时，播放高层级动画。高层级动画播放完后自动切换回低层级动画。一般相同层级的动画，同时只能播放一个。</p> <p><br />Play()和PlayQuqued(QueueMode.PlayNow)的区别：<br />后者复制了动画放入播放序列，可以实现同一个动画之间的切换，比如一个攻击动作可以连续快击两次。而前者只能等第一个攻击动作完成后，再做第二个相同的攻击动作。</p><img src ="http://www.cppblog.com/cugdj/aggbug/209012.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cugdj/" target="_blank">小四</a> 2014-12-03 15:14 <a href="http://www.cppblog.com/cugdj/archive/2014/12/03/209012.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++常用计算几何算法 </title><link>http://www.cppblog.com/cugdj/archive/2012/12/05/196025.html</link><dc:creator>小四</dc:creator><author>小四</author><pubDate>Wed, 05 Dec 2012 15:07:00 GMT</pubDate><guid>http://www.cppblog.com/cugdj/archive/2012/12/05/196025.html</guid><wfw:comment>http://www.cppblog.com/cugdj/comments/196025.html</wfw:comment><comments>http://www.cppblog.com/cugdj/archive/2012/12/05/196025.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cugdj/comments/commentRss/196025.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cugdj/services/trackbacks/196025.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 多年之前在WPS做算法研究的时候写的常用计算几何算法 C++&nbsp;&nbsp;<a href='http://www.cppblog.com/cugdj/archive/2012/12/05/196025.html'>阅读全文</a><img src ="http://www.cppblog.com/cugdj/aggbug/196025.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cugdj/" target="_blank">小四</a> 2012-12-05 23:07 <a href="http://www.cppblog.com/cugdj/archive/2012/12/05/196025.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cocos2d-x版FishingJoy(捕鱼达人)示例</title><link>http://www.cppblog.com/cugdj/archive/2012/12/04/195977.html</link><dc:creator>小四</dc:creator><author>小四</author><pubDate>Tue, 04 Dec 2012 08:48:00 GMT</pubDate><guid>http://www.cppblog.com/cugdj/archive/2012/12/04/195977.html</guid><wfw:comment>http://www.cppblog.com/cugdj/comments/195977.html</wfw:comment><comments>http://www.cppblog.com/cugdj/archive/2012/12/04/195977.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/cugdj/comments/commentRss/195977.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cugdj/services/trackbacks/195977.html</trackback:ping><description><![CDATA[cocos2d-x版FishingJoy, 可做为cocos2d-x示例工程，<br />包含CCSprite、CCAction、CCParticleSystem等重要类的使用方法。<br />好久没用C++，写出的代码带强烈的Objc风格，@_@<br />可能跟cocos2d-x源于cocos2d有关。<br />cocos2d-x版本2.0.4，xcode版本4.5。<br />资源文件从网络获得，也可使用付费TexturePacker自行生成。<br /><br />源代码地址：<a href="https://github.com/dingjiecn/FishingJoy.git"><br />https://github.com/dingjiecn/FishingJoy.git<br /></a><br /><img src="http://www.cppblog.com/images/cppblog_com/cugdj/7467/o_FishingJoy.jpg" border="0" alt="" width="800" height="600" /><img src ="http://www.cppblog.com/cugdj/aggbug/195977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cugdj/" target="_blank">小四</a> 2012-12-04 16:48 <a href="http://www.cppblog.com/cugdj/archive/2012/12/04/195977.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于会说话的汤姆猫,关于cocos2d屏幕录像,视音频合成</title><link>http://www.cppblog.com/cugdj/archive/2011/11/18/160473.html</link><dc:creator>小四</dc:creator><author>小四</author><pubDate>Fri, 18 Nov 2011 15:41:00 GMT</pubDate><guid>http://www.cppblog.com/cugdj/archive/2011/11/18/160473.html</guid><wfw:comment>http://www.cppblog.com/cugdj/comments/160473.html</wfw:comment><comments>http://www.cppblog.com/cugdj/archive/2011/11/18/160473.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/cugdj/comments/commentRss/160473.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cugdj/services/trackbacks/160473.html</trackback:ping><description><![CDATA[<div>
<p>
<div><a href="http://www.cppblog.com/Files/cugdj/TalkingJohn.zip">https://github.com/dingjiecn/TalkingJohn.git<br /><br />源代码</a>&nbsp;</div>outfit7公司生产了一系列的会说话的朋友app,最著名的是会说话的汤姆猫.<br />利用业余时间做了一个TalkingJohn,资源都是用原app的,在xcode4.1编译通过.<br />为CCDirector增加category方法屏幕录像,和音视频合成.<br />录像模式在模拟器运行良好,但是在ipad上运行经常录制不成功.<br />如果有哪位同学改好了这个问题,请给我发邮件cugdj at hotmail.com.&nbsp;<br /><br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/cugdj/7467/r_talkingjohn.png" width="247" height="480" /><br />
<p>&nbsp;</p></div><img src ="http://www.cppblog.com/cugdj/aggbug/160473.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cugdj/" target="_blank">小四</a> 2011-11-18 23:41 <a href="http://www.cppblog.com/cugdj/archive/2011/11/18/160473.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于IOS APP的目录</title><link>http://www.cppblog.com/cugdj/archive/2011/10/17/158544.html</link><dc:creator>小四</dc:creator><author>小四</author><pubDate>Mon, 17 Oct 2011 07:35:00 GMT</pubDate><guid>http://www.cppblog.com/cugdj/archive/2011/10/17/158544.html</guid><wfw:comment>http://www.cppblog.com/cugdj/comments/158544.html</wfw:comment><comments>http://www.cppblog.com/cugdj/archive/2011/10/17/158544.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cugdj/comments/commentRss/158544.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cugdj/services/trackbacks/158544.html</trackback:ping><description><![CDATA[<div><h4>文件系统</h4> <h5>一些重要的应用目录</h5> <p>为了安全的缘故，一个应用只能拥有一些目录，用来写入应用的数据或者首选项参数。当一个应用安装到系统，会创建该应用的home目录。以下列出一些home目录下的主要的子目录：</p> <ul> <li>&lt;Application_Home&gt;/AppName.app：存放应用程序自身  </li><li>&lt;Application_Home&gt;/Documents/：存放用户文档和应用数据文件  </li><li>&lt;Application_Home&gt;/Library/：应用程序规范的顶级目录，下面有一些规范定义的的子目录，当然也可以自定义子目录，用于存放应用的文件，但是不宜存放用户数据文件   </li><li>&lt;Application_Home&gt;/Library/Preferences，这里存放程序规范要求的首选项文件  </li><li>&lt;Application_Home&gt;/Library/Caches，保存应用的持久化数据，用于应用升级或者应用关闭后的数据保存  </li><li>&lt;Application_Home&gt;/tmp/，保存应用数据，但不需要持久化的，在应用关闭后，该目录下的数据将删除&nbsp;<br /><div><h4>备份和恢复</h4> <p>iTunes应用可在适当情况下自动处理备份和恢复。然后，应用需要知道备份和恢复的文件放在哪里。</p> <h5>什么是备份</h5> <p>你不必为你的应用备份和恢复做任何准备。在iOS 2.2以后，当设备连接到电脑并开始同步后，iTunes会自动增量备份所有文件，但不包括下面的目录：</p> <ul> <li>&lt;Application_Home&gt;/AppName.app  </li><li>&lt;Application_Home&gt;/Library/Caches  </li><li>&lt;Application_Home&gt;/tmp </li></ul> <p>虽然iTunes备份应用自身，但不是每次同步都这样做。从app  store上购买的应用，只在随后的同步过程中被iTunes备份。再之后，iTunes并不在同步操作中备份应用，除非应用自身发生变化，比如应用的升级。</p> <p>为了避免同步过程时间过长，你需要对应用中使用的文件放在哪里做出选择。&lt;Application_Home&gt;/Documents目录用来存放用户文档和应用数据文件。临时文件要保存在Application  Home/tmp目录下，这样可以在不需要时删除。如果在两次启动中都需要的数据文件，但是不需要备份的，可放置在Application  Home/Library/Caches。比如很大的数据文件，尽量放置在Caches目录下，而不是Documents目录下，Documents目录下文件将做备份，这样会很耗时。</p> <h5>应用更新期间的文件保存</h5> <p>如果文件需要在应用更新后依然存在，需要放置在：</p> <ul> <li>&lt;Application_Home&gt;/Documents  </li><li>&lt;Application_Home&gt;/Library</li></ul></div></li></ul></div><img src ="http://www.cppblog.com/cugdj/aggbug/158544.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cugdj/" target="_blank">小四</a> 2011-10-17 15:35 <a href="http://www.cppblog.com/cugdj/archive/2011/10/17/158544.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于UIViewController的view属性</title><link>http://www.cppblog.com/cugdj/archive/2011/06/01/147871.html</link><dc:creator>小四</dc:creator><author>小四</author><pubDate>Wed, 01 Jun 2011 07:23:00 GMT</pubDate><guid>http://www.cppblog.com/cugdj/archive/2011/06/01/147871.html</guid><wfw:comment>http://www.cppblog.com/cugdj/comments/147871.html</wfw:comment><comments>http://www.cppblog.com/cugdj/archive/2011/06/01/147871.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cugdj/comments/commentRss/147871.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cugdj/services/trackbacks/147871.html</trackback:ping><description><![CDATA[当未从interface builder中为view属性显示指定outlet，或者此UIViewController是在程序中用代码创建的，<br />当访问到view属性，但是view属性为nil值的时候，会调用到loadView方法创建view出来。<br />这就可以解释<br />UIViewController *rootViewController = [[[UIViewController alloc] init] autorelease];<br />此时rootViewController.view为空<br />[self.window addSubview:rootViewController.view];<br />此时view已经被创建了。<br /><br />在UIViewController Class Reference有详细说明<br /><br /><br /><img src ="http://www.cppblog.com/cugdj/aggbug/147871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cugdj/" target="_blank">小四</a> 2011-06-01 15:23 <a href="http://www.cppblog.com/cugdj/archive/2011/06/01/147871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于mp3转ogg</title><link>http://www.cppblog.com/cugdj/archive/2010/02/05/107266.html</link><dc:creator>小四</dc:creator><author>小四</author><pubDate>Fri, 05 Feb 2010 08:54:00 GMT</pubDate><guid>http://www.cppblog.com/cugdj/archive/2010/02/05/107266.html</guid><wfw:comment>http://www.cppblog.com/cugdj/comments/107266.html</wfw:comment><comments>http://www.cppblog.com/cugdj/archive/2010/02/05/107266.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/cugdj/comments/commentRss/107266.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cugdj/services/trackbacks/107266.html</trackback:ping><description><![CDATA[首先需要一个mp3 decoder，实现mp3 to wav，然后需要一个ogg encoder，实现wav to ogg。<br>原理就是这样。自己做了一个mp3转ogg的工程，转换过程中mp3的tag信息都没有丢失。<br>速度还可以，需要的人可以自己阅读一下代码进行优化。<br>源代码在<a href="http://www.cppblog.com/Files/cugdj/mp32ogg.rar">这里</a>下载。 
<img src ="http://www.cppblog.com/cugdj/aggbug/107266.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cugdj/" target="_blank">小四</a> 2010-02-05 16:54 <a href="http://www.cppblog.com/cugdj/archive/2010/02/05/107266.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>摘自：windows游戏编程大师技巧-Andre LaMothe</title><link>http://www.cppblog.com/cugdj/archive/2009/03/27/78070.html</link><dc:creator>小四</dc:creator><author>小四</author><pubDate>Fri, 27 Mar 2009 12:08:00 GMT</pubDate><guid>http://www.cppblog.com/cugdj/archive/2009/03/27/78070.html</guid><wfw:comment>http://www.cppblog.com/cugdj/comments/78070.html</wfw:comment><comments>http://www.cppblog.com/cugdj/archive/2009/03/27/78070.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cugdj/comments/commentRss/78070.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cugdj/services/trackbacks/78070.html</trackback:ping><description><![CDATA[问题在于，即使是Windows95，实时处理视频音频的能力依然很差，<br>于是微软制作了一个叫做Win-G的软件，试图解决视频方面的问题。<br>宣传的时候，Win-G被说成是最佳的游戏编程和图形子系统，而事实<br>上它只不过是一堆用于画位图的图形调用而已。更有甚者，Win-G<br>发布后大约一年之后，Microsoft竟然否认了它的存在，不骗你! 
<img src ="http://www.cppblog.com/cugdj/aggbug/78070.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cugdj/" target="_blank">小四</a> 2009-03-27 20:08 <a href="http://www.cppblog.com/cugdj/archive/2009/03/27/78070.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DLL窗体中PreTranslateMessage的解决方案</title><link>http://www.cppblog.com/cugdj/archive/2009/01/06/71299.html</link><dc:creator>小四</dc:creator><author>小四</author><pubDate>Tue, 06 Jan 2009 02:24:00 GMT</pubDate><guid>http://www.cppblog.com/cugdj/archive/2009/01/06/71299.html</guid><wfw:comment>http://www.cppblog.com/cugdj/comments/71299.html</wfw:comment><comments>http://www.cppblog.com/cugdj/archive/2009/01/06/71299.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/cugdj/comments/commentRss/71299.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cugdj/services/trackbacks/71299.html</trackback:ping><description><![CDATA[<p>由于在DLL窗体中需要使用CToolTipCtrl来实现提示功能，<br>所以要重载PreTranslateMessage,代码如下</p>
<p>BOOL CMyWnd::PreTranslateMessage(MSG* pMsg) <br>{<br>&nbsp;m_toolTip.RelayEvent(pMsg);&nbsp;&nbsp;<br>&nbsp;return CGameWnd::PreTranslateMessage(pMsg);<br>}</p>
<p>但是由于CMyWnd是在DLL中，所以重载PreTranslateMessage无效，<br>具体原因我忘记了，反正网上都可以搜索到。不过解决方案都给的<br>不是很明确，在这里我把我的解决方法记录下来，省得以后忘掉了。<br>主要是在创建CMyWnd实例的时候把窗口指针存下来，然后使用全局<br>消息钩子执行CMyWnd::PreTranslateMessage，代码如下</p>
<p>1.定义全局变量<br>&nbsp;HHOOK g_hHook = 0;<br>&nbsp;CMyWnd* g_pMyWnd = NULL;</p>
<p>2.安装全局钩子，要在DLL中安装<br>&nbsp;g_hHook = ::SetWindowsHookEx(WH_GETMESSAGE, HookProc, 0, ::GetCurrentThreadId());</p>
<p>3.创建窗体的时候保留指针<br>&nbsp;m_pMyWnd = new CMyWnd();<br>&nbsp;g_pMyWnd = m_pMyWnd;</p>
<p>4.钩子函数<br>LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)<br>{<br>&nbsp;MSG* pMsg = (MSG*)lParam;<br>&nbsp;if(g_pMyWnd &amp;&amp; (pMsg-&gt;hwnd == g_pMyWnd-&gt;m_hWnd))<br>&nbsp;{<br>&nbsp;&nbsp;g_pMyWnd-&gt;PreTranslateMessage(pMsg);<br>&nbsp;}<br>&nbsp;return CallNextHookEx(g_hHook, nCode, wParam, lParam);<br>}</p>
<p>5.退出的时候别忘了卸载钩子<br>&nbsp;if(g_hHook)&nbsp;<br>&nbsp;&nbsp;UnhookWindowsHookEx(g_hHook);</p>
<img src ="http://www.cppblog.com/cugdj/aggbug/71299.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cugdj/" target="_blank">小四</a> 2009-01-06 10:24 <a href="http://www.cppblog.com/cugdj/archive/2009/01/06/71299.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>破窗效应</title><link>http://www.cppblog.com/cugdj/archive/2008/09/22/62496.html</link><dc:creator>小四</dc:creator><author>小四</author><pubDate>Mon, 22 Sep 2008 06:58:00 GMT</pubDate><guid>http://www.cppblog.com/cugdj/archive/2008/09/22/62496.html</guid><wfw:comment>http://www.cppblog.com/cugdj/comments/62496.html</wfw:comment><comments>http://www.cppblog.com/cugdj/archive/2008/09/22/62496.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/cugdj/comments/commentRss/62496.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cugdj/services/trackbacks/62496.html</trackback:ping><description><![CDATA[一个碎了一块玻璃的房子，如果没有及时修补，很快其他的玻璃也会被打碎。<br>一段使用了全局变量和硬编码的代码，很快会充斥大量的全局变量和硬编码。 
<img src ="http://www.cppblog.com/cugdj/aggbug/62496.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cugdj/" target="_blank">小四</a> 2008-09-22 14:58 <a href="http://www.cppblog.com/cugdj/archive/2008/09/22/62496.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>