動畫Layer的作用:
U3D的老動畫系統,可以通過設置動畫Layer,在不去中斷低層級動畫的同時,播放高層級動畫。高層級動畫播放完后自動切換回低層級動畫。一般相同層級的動畫,同時只能播放一個。
Play()和PlayQuqued(QueueMode.PlayNow)的區別:
后者復制了動畫放入播放序列,可以實現同一個動畫之間的切換,比如一個攻擊動作可以連續快擊兩次。而前者只能等第一個攻擊動作完成后,再做第二個相同的攻擊動作。
posted @
2014-12-03 15:14 小四 閱讀(205) |
評論 (0) |
編輯 收藏
outfit7公司生產了一系列的會說話的朋友app,最著名的是會說話的湯姆貓.
利用業余時間做了一個TalkingJohn,資源都是用原app的,在xcode4.1編譯通過.
為CCDirector增加category方法屏幕錄像,和音視頻合成.
錄像模式在模擬器運行良好,但是在ipad上運行經常錄制不成功.
如果有哪位同學改好了這個問題,請給我發郵件cugdj at hotmail.com.
posted @
2011-11-18 23:41 小四 閱讀(9907) |
評論 (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 小四 閱讀(2061) |
評論 (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 小四 閱讀(1283) |
評論 (0) |
編輯 收藏
首先需要一個mp3 decoder,實現mp3 to wav,然后需要一個ogg encoder,實現wav to ogg。
原理就是這樣。自己做了一個mp3轉ogg的工程,轉換過程中mp3的tag信息都沒有丟失。
速度還可以,需要的人可以自己閱讀一下代碼進行優化。
源代碼在
這里下載。
posted @
2010-02-05 16:54 小四 閱讀(1418) |
評論 (1) |
編輯 收藏
問題在于,即使是Windows95,實時處理視頻音頻的能力依然很差,
于是微軟制作了一個叫做Win-G的軟件,試圖解決視頻方面的問題。
宣傳的時候,Win-G被說成是最佳的游戲編程和圖形子系統,而事實
上它只不過是一堆用于畫位圖的圖形調用而已。更有甚者,Win-G
發布后大約一年之后,Microsoft竟然否認了它的存在,不騙你!
posted @
2009-03-27 20:08 小四 閱讀(503) |
評論 (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 小四 閱讀(1966) |
評論 (1) |
編輯 收藏