动画Layer的作用:
U3D的老动画系统,可以通过设置动画Layer,在不去中断低层级动画的同时,播放高层级动画。高层级动画播放完后自动切换回低层级动画。一般相同层级的动画,同时只能播放一个。
Play()和PlayQuqued(QueueMode.PlayNow)的区别:
后者复制了动画放入播放序列,可以实现同一个动画之间的切换,比如一个攻击动作可以连续快击两次。而前者只能等第一个攻击动作完成后,再做第二个相同的攻击动作。
posted @
2014-12-03 15:14 小四 阅读(190) |
评论 (0) |
编辑 收藏
摘要: 多年之前在WPS做算法研究的时候写的常用计算几何算法 C++
阅读全文
posted @
2012-12-05 23:07 小四 阅读(4689) |
评论 (0) |
编辑 收藏
cocos2d-x版FishingJoy, 可做为cocos2d-x示例工程,
包含CCSprite、CCAction、CCParticleSystem等重要类的使用方法。
好久没用C++,写出的代码带强烈的Objc风格,@_@
可能跟cocos2d-x源于cocos2d有关。
cocos2d-x版本2.0.4,xcode版本4.5。
资源文件从网络获得,也可使用付费TexturePacker自行生成。
源代码地址:
https://github.com/dingjiecn/FishingJoy.git
posted @
2012-12-04 16:48 小四 阅读(2936) |
评论 (2) |
编辑 收藏
outfit7公司生产了一系列的会说话的朋友app,最著名的是会说话的汤姆猫.
利用业余时间做了一个TalkingJohn,资源都是用原app的,在xcode4.1编译通过.
为CCDirector增加category方法屏幕录像,和音视频合成.
录像模式在模拟器运行良好,但是在ipad上运行经常录制不成功.
如果有哪位同学改好了这个问题,请给我发邮件cugdj at hotmail.com.
posted @
2011-11-18 23:41 小四 阅读(9873) |
评论 (2) |
编辑 收藏
文件系统
一些重要的应用目录
为了安全的缘故,一个应用只能拥有一些目录,用来写入应用的数据或者首选项参数。当一个应用安装到系统,会创建该应用的home目录。以下列出一些home目录下的主要的子目录:
- <Application_Home>/AppName.app:存放应用程序自身
- <Application_Home>/Documents/:存放用户文档和应用数据文件
- <Application_Home>/Library/:应用程序规范的顶级目录,下面有一些规范定义的的子目录,当然也可以自定义子目录,用于存放应用的文件,但是不宜存放用户数据文件
- <Application_Home>/Library/Preferences,这里存放程序规范要求的首选项文件
- <Application_Home>/Library/Caches,保存应用的持久化数据,用于应用升级或者应用关闭后的数据保存
- <Application_Home>/tmp/,保存应用数据,但不需要持久化的,在应用关闭后,该目录下的数据将删除
备份和恢复
iTunes应用可在适当情况下自动处理备份和恢复。然后,应用需要知道备份和恢复的文件放在哪里。
什么是备份
你不必为你的应用备份和恢复做任何准备。在iOS 2.2以后,当设备连接到电脑并开始同步后,iTunes会自动增量备份所有文件,但不包括下面的目录:
- <Application_Home>/AppName.app
- <Application_Home>/Library/Caches
- <Application_Home>/tmp
虽然iTunes备份应用自身,但不是每次同步都这样做。从app store上购买的应用,只在随后的同步过程中被iTunes备份。再之后,iTunes并不在同步操作中备份应用,除非应用自身发生变化,比如应用的升级。
为了避免同步过程时间过长,你需要对应用中使用的文件放在哪里做出选择。<Application_Home>/Documents目录用来存放用户文档和应用数据文件。临时文件要保存在Application Home/tmp目录下,这样可以在不需要时删除。如果在两次启动中都需要的数据文件,但是不需要备份的,可放置在Application Home/Library/Caches。比如很大的数据文件,尽量放置在Caches目录下,而不是Documents目录下,Documents目录下文件将做备份,这样会很耗时。
应用更新期间的文件保存
如果文件需要在应用更新后依然存在,需要放置在:
- <Application_Home>/Documents
- <Application_Home>/Library
posted @
2011-10-17 15:35 小四 阅读(2043) |
评论 (0) |
编辑 收藏
当未从interface builder中为view属性显示指定outlet,或者此UIViewController是在程序中用代码创建的,
当访问到view属性,但是view属性为nil值的时候,会调用到loadView方法创建view出来。
这就可以解释
UIViewController *rootViewController = [[[UIViewController alloc] init] autorelease];
此时rootViewController.view为空
[self.window addSubview:rootViewController.view];
此时view已经被创建了。
在UIViewController Class Reference有详细说明
posted @
2011-06-01 15:23 小四 阅读(1255) |
评论 (0) |
编辑 收藏
首先需要一个mp3 decoder,实现mp3 to wav,然后需要一个ogg encoder,实现wav to ogg。
原理就是这样。自己做了一个mp3转ogg的工程,转换过程中mp3的tag信息都没有丢失。
速度还可以,需要的人可以自己阅读一下代码进行优化。
源代码在
这里下载。
posted @
2010-02-05 16:54 小四 阅读(1396) |
评论 (1) |
编辑 收藏
问题在于,即使是Windows95,实时处理视频音频的能力依然很差,
于是微软制作了一个叫做Win-G的软件,试图解决视频方面的问题。
宣传的时候,Win-G被说成是最佳的游戏编程和图形子系统,而事实
上它只不过是一堆用于画位图的图形调用而已。更有甚者,Win-G
发布后大约一年之后,Microsoft竟然否认了它的存在,不骗你!
posted @
2009-03-27 20:08 小四 阅读(487) |
评论 (0) |
编辑 收藏
由于在DLL窗体中需要使用CToolTipCtrl来实现提示功能,
所以要重载PreTranslateMessage,代码如下
BOOL CMyWnd::PreTranslateMessage(MSG* pMsg)
{
m_toolTip.RelayEvent(pMsg);
return CGameWnd::PreTranslateMessage(pMsg);
}
但是由于CMyWnd是在DLL中,所以重载PreTranslateMessage无效,
具体原因我忘记了,反正网上都可以搜索到。不过解决方案都给的
不是很明确,在这里我把我的解决方法记录下来,省得以后忘掉了。
主要是在创建CMyWnd实例的时候把窗口指针存下来,然后使用全局
消息钩子执行CMyWnd::PreTranslateMessage,代码如下
1.定义全局变量
HHOOK g_hHook = 0;
CMyWnd* g_pMyWnd = NULL;
2.安装全局钩子,要在DLL中安装
g_hHook = ::SetWindowsHookEx(WH_GETMESSAGE, HookProc, 0, ::GetCurrentThreadId());
3.创建窗体的时候保留指针
m_pMyWnd = new CMyWnd();
g_pMyWnd = m_pMyWnd;
4.钩子函数
LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
MSG* pMsg = (MSG*)lParam;
if(g_pMyWnd && (pMsg->hwnd == g_pMyWnd->m_hWnd))
{
g_pMyWnd->PreTranslateMessage(pMsg);
}
return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
5.退出的时候别忘了卸载钩子
if(g_hHook)
UnhookWindowsHookEx(g_hHook);
posted @
2009-01-06 10:24 小四 阅读(1921) |
评论 (1) |
编辑 收藏
一个碎了一块玻璃的房子,如果没有及时修补,很快其他的玻璃也会被打碎。
一段使用了全局变量和硬编码的代码,很快会充斥大量的全局变量和硬编码。
posted @
2008-09-22 14:58 小四 阅读(1399) |
评论 (3) |
编辑 收藏