最近在工作上使用了 Pyro Particle Editor 官網在這:http://pyro.fenomen-games.com/
可能有點冷門吧,它的SDK使用在網路上查不到什麼教學,只能看裡面的範例寫程式,但範例只有寫到CPyroEmitter控制XY來改變位置,那旋轉或縮放呢?
在IPyroParticleEmitter類別內確實是有一些控制的函數,不過只用上SetLocalMatrix就很好用了,可是參數const float m[3][4]要怎麼填?
我以D3DX的D3DXMATRIX為例子:
//宣告D3D的矩陣
D3DXMATRIX Mat;
//之後Mat填入或計算自己想要的移動旋轉或縮放
//Mat算好後,依下面順序填入
float m[3][4]={{Mat._11,Mat._21,Mat._31,Mat._41},
{Mat._12,Mat._22,Mat._32,Mat._42},
{Mat._13,Mat._23,Mat._33,Mat._43},};
//在類別render之前呼叫SetLocalMatrix 即可
m_pEmitter->SetLocalMatrix(m);
m_pEmitter->Render();
依每個人不同的用法,要改一下程式,我是直接在CPyroEmitter類別加上void Render(float m[3][4])
{
if( m_pEmitter ){
m_pEmitter->SetLocalMatrix(m);
m_pEmitter->Render();
}
}
但重點就是矩陣填入的方式,我一開始填成Mat._11,Mat._12的順序,浪費不少時間,這邊做個記錄,說不定也可以幫到別人。
2014年1月31日 星期五
2014年1月11日 星期六
onActivityResult 無法接收到 resultCode與data
今日快樂的使用onActivityResult時,竟然收到resultCode=0與data=null。
不過requestCode到是正常,這可怪了,之前可用得好好的,網上查了一下,也沒找到答案。
想了想,這次使用setResult的時機是在onDestroy內呼叫的,會不會是這個原因呢?以往都是按下button才呼叫setResult,之後接著finish();離開這個Activity,這次剛好想在onDestroy才回傳,結果失敗了。
也有試著在onStop內做同樣的事,也是失敗,會不會onStop與onDestroy內原本就不能做setResult呢?
當然啦,細節還是以後再想,先解決問題,就先不要在onDestroy內呼叫setResult。改成在keyDown內呼叫,程式碼如下:
public boolean onKeyDown(int keyCode, KeyEvent e) {
if(keyCode == KeyEvent.KEYCODE_BACK && 0==e.getRepeatCount() ) {
Intent intent = new Intent();
Bundle bundleBack = new Bundle();
bundleBack.putInt("val", "100");
intent.putExtras(bundleBack);
setResult(RESULT_OK, intent);
finish();
}
return false;
}
不過requestCode到是正常,這可怪了,之前可用得好好的,網上查了一下,也沒找到答案。
想了想,這次使用setResult的時機是在onDestroy內呼叫的,會不會是這個原因呢?以往都是按下button才呼叫setResult,之後接著finish();離開這個Activity,這次剛好想在onDestroy才回傳,結果失敗了。
也有試著在onStop內做同樣的事,也是失敗,會不會onStop與onDestroy內原本就不能做setResult呢?
當然啦,細節還是以後再想,先解決問題,就先不要在onDestroy內呼叫setResult。改成在keyDown內呼叫,程式碼如下:
public boolean onKeyDown(int keyCode, KeyEvent e) {
if(keyCode == KeyEvent.KEYCODE_BACK && 0==e.getRepeatCount() ) {
Intent intent = new Intent();
Bundle bundleBack = new Bundle();
bundleBack.putInt("val", "100");
intent.putExtras(bundleBack);
setResult(RESULT_OK, intent);
finish();
}
return false;
}
2013年12月29日 星期日
android WifiManager 的 SSID 双引號疑問?
在android上建立熱點與連上熱點的方法在 google 上查一下就很多了。
這裡提個觀察到的現象,所以只列出重點程式碼。
建熱點時,若名稱為 mynet
WifiConfiguration config = new WifiConfiguration();
config.SSID = "mynet";//注意字串裡沒加双引號
連上熱點如下:
WifiManager wifiManager;
wifiManager.setWifiEnabled(true);
WifiConfiguration wifiConfig;
wifiConfig.SSID = "\"" + "mynet" + "\""; //注意這邊有加上双引號
int netID = wifiManager.addNetwork(wifiConfig);
wifiManager.enableNetwork(netID, true);
我用2台android設備對連
nexus 7 當客戶端, inhon g1 當熱點
2台設備連線完成,客戶端那一台印出熱點的SSID
Log.e("SSID name: ", wifiManager.getConnectionInfo().getSSID());
nexus 7 印出了 "mynet" ,感覺很正常,因為剛才有加双引號。
接著交換,換 nexus 7 當熱點,inhon g1 當客戶端,
結果印出了 mynet
双引號去那裡了?
這裡提個觀察到的現象,所以只列出重點程式碼。
建熱點時,若名稱為 mynet
WifiConfiguration config = new WifiConfiguration();
config.SSID = "mynet";//注意字串裡沒加双引號
連上熱點如下:
WifiManager wifiManager;
wifiManager.setWifiEnabled(true);
WifiConfiguration wifiConfig;
wifiConfig.SSID = "\"" + "mynet" + "\""; //注意這邊有加上双引號
int netID = wifiManager.addNetwork(wifiConfig);
wifiManager.enableNetwork(netID, true);
我用2台android設備對連
nexus 7 當客戶端, inhon g1 當熱點
2台設備連線完成,客戶端那一台印出熱點的SSID
Log.e("SSID name: ", wifiManager.getConnectionInfo().getSSID());
nexus 7 印出了 "mynet" ,感覺很正常,因為剛才有加双引號。
接著交換,換 nexus 7 當熱點,inhon g1 當客戶端,
結果印出了 mynet
双引號去那裡了?
2013年10月13日 星期日
Google Play services 安裝問題
打開 android SK Manager 下載了Google Play services.
完成後重新打開Eclipse,呵呵太好了全部的專案都又打上紅叉。
在專案上按右鍵選擇Properties後裡頭的項目,按下去就跳
the currently displayed page contains invalid values. 訊息。
開發android這些年來,老是碰到這種事,真是人生處處皆挫折。
只好再上網查了,應該是adt版本的問題,於是選擇
Help->Install New softwar.
在Work with:選了
ADT Plugin - http://dl-ssl.google.com/android/eclipse/
出現了Developer Tools與NDK Plugins,把它全選然後按NEXT,準備安裝。
接著進Windows->Android SDK Manager.可以看到有些項目可以更新,更新後就正常了。
完成後重新打開Eclipse,呵呵太好了全部的專案都又打上紅叉。
在專案上按右鍵選擇Properties後裡頭的項目,按下去就跳
the currently displayed page contains invalid values. 訊息。
開發android這些年來,老是碰到這種事,真是人生處處皆挫折。
只好再上網查了,應該是adt版本的問題,於是選擇
Help->Install New softwar.
在Work with:選了
ADT Plugin - http://dl-ssl.google.com/android/eclipse/
出現了Developer Tools與NDK Plugins,把它全選然後按NEXT,準備安裝。
接著進Windows->Android SDK Manager.可以看到有些項目可以更新,更新後就正常了。
2013年5月1日 星期三
Android ProGuard問題2
加了 ProGuard 後沒碰到什麼問題,很高興的傳到手機測試,
結果執行到特定的地方就出錯了。
訊息沒留下來,只取了這一小段
ould not find method org.apache.http.params.HttpConnectionParams
是什麼問題呢?弄了老半天也想不出來,整理程式碼時發現
有個程式庫 httpclient-4.1.1.jar ,應該沒使用到吧,於是從專案裡移除,
再重新包成pak,於是就沒問題了,
看來以後沒用到的程式庫還是不要亂加比較好。
結果執行到特定的地方就出錯了。
訊息沒留下來,只取了這一小段
ould not find method org.apache.http.params.HttpConnectionParams
是什麼問題呢?弄了老半天也想不出來,整理程式碼時發現
有個程式庫 httpclient-4.1.1.jar ,應該沒使用到吧,於是從專案裡移除,
再重新包成pak,於是就沒問題了,
看來以後沒用到的程式庫還是不要亂加比較好。
訂閱:
文章 (Atom)