|
動畫Layer的作用:
U3D的老動畫系統,可以通過設置動畫Layer,在不去中斷低層級動畫的同時,播放高層級動畫。高層級動畫播放完后自動切換回低層級動畫。一般相同層級的動畫,同時只能播放一個。
Play()和PlayQuqued(QueueMode.PlayNow)的區別:
后者復制了動畫放入播放序列,可以實現同一個動畫之間的切換,比如一個攻擊動作可以連續快擊兩次。而前者只能等第一個攻擊動作完成后,再做第二個相同的攻擊動作。
outfit7公司生產了一系列的會說話的朋友app,最著名的是會說話的湯姆貓.
為了安全的緣故,一個應用只能擁有一些目錄,用來寫入應用的數據或者首選項參數。當一個應用安裝到系統,會創建該應用的home目錄。以下列出一些home目錄下的主要的子目錄:
iTunes應用可在適當情況下自動處理備份和恢復。然后,應用需要知道備份和恢復的文件放在哪里。
你不必為你的應用備份和恢復做任何準備。在iOS 2.2以后,當設備連接到電腦并開始同步后,iTunes會自動增量備份所有文件,但不包括下面的目錄:
雖然iTunes備份應用自身,但不是每次同步都這樣做。從app store上購買的應用,只在隨后的同步過程中被iTunes備份。再之后,iTunes并不在同步操作中備份應用,除非應用自身發生變化,比如應用的升級。
為了避免同步過程時間過長,你需要對應用中使用的文件放在哪里做出選擇。<Application_Home>/Documents目錄用來存放用戶文檔和應用數據文件。臨時文件要保存在Application Home/tmp目錄下,這樣可以在不需要時刪除。如果在兩次啟動中都需要的數據文件,但是不需要備份的,可放置在Application Home/Library/Caches。比如很大的數據文件,盡量放置在Caches目錄下,而不是Documents目錄下,Documents目錄下文件將做備份,這樣會很耗時。
如果文件需要在應用更新后依然存在,需要放置在:
由于在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);