wp7--15
(注:本節主講對xna,遊戲開發的簡介,簡單了解一些,不過課程中的audio,input,也可用於其他的應用開發,有對應的命名空間!
xna在silverlight中的應用:
1.xna基本知識;2.audio:sound\song;3.microphone;4.input
1.xna基本知識:
(1).xna中的x表示能夠在windows xbox和合作夥伴之間達到跨平台的強大的軟體工具;n表示下一代(next-generation);a表示架構(architecture)
(2).是基於directx的遊戲開發環境,是微軟對於managed directx 的修正集擴充版本
(3).幫助開發者在建立更加優秀快速和跨平台的遊戲時能夠減少費用
(4).特點:
<1>.監控和使用accelerometer資料,這樣就可以開發出具有重力感應的遊戲;
<2>.只能儲存資料到isolatedstorage,而不能儲存到其他介質上
2.開發環境
(1).硬體:需要顯示卡最少支援directx10,shader mode2.0
(2).作業系統要求:windows vista;windows 7
3.基本架構
(1).loading:用來載入保證遊戲可以正常執行的所有資源等,這個狀態在整個系統中只在遊戲開始前執行,也就是說整個遊戲的生命週期中執行一次;
(2).update:這個狀態是由所設定的時間間隔來驅動的,在每個時間間隔裡重新計算遊戲中個角色的狀態,以及遊戲分值和各種遊戲邏輯。一般預設為每秒30次(幀),如果設定時間間隔過大,遊戲可能無法啟動;
(3).draw:這個狀態也是由所設定的時間間隔來驅動的,用來描繪各種變化到顯示裝置上
4.模擬xna架構
dispatchertimer dt=new dispatchertimer();
dt.interval=timespan.frommilliseconds(33);
dt.tick+=new eventhandler(dt_tick);
dt.start();
void dt_tick(object sender,eventargs e)
catch
}**:
引用命名空間:microsoft.xna.framework
using microsoft.xna.framework;
在建構函式中:
dispatchertimer dt=new dispatchertimer();
dt.interval=timespan.frommilliseconds(33);
dt.tick+=new eventhandler(dt_tick);
dt.start();
在dt_tick方法中:
void dt_tick(object sender,eventargs e)
catch
this.pagetitle.text=datetime.now.tostring("hh:mm:ss");
}5.audio開發
(1).sound
//最好將音訊做成資源,以資源的方式載入,讀取資源流
soundeffect sound=new soundeffect(stream.toarray(),samplerate,audiochannels.mono);
soundeffectinstance inst=sound.createinstance();
inst.play();
**:按鈕下**:
soundeffectinstance soundinst;
(2).song
//uri獲取本地**或網路**
song song=song.fromuri("mymusic",new uri("media/testmusic.***",urikind.relative));
mediaplayer.play(song);//mediaplayer的靜態方法
6.microphone:呼叫麥克風錄音;
命名空間microsoft.xna.framework.audio
microphone.bufferready+=new eventhandler(_microphone_bufferready);
_microphone.getdata(buffer);
_microphone.start();
_microphone.stop();
**:定義:
microphone microphone=microphone.default;//獲取預設麥克風
bytebuffer;
memerystream stream=new memerystream();
在建構函式中:
_microphone.bufferready+=new eventhandler(_microphone_bufferready);
void _microphone_bufferready(object sender,eventargs e)
加乙個錄製按鈕,按鈕下的**:
buffer=new byte[_microphone.getsamplesineinbytes(timespar.frommilliseconds(500))];
stream.setlength(0);
_microphone.start();
加乙個停止按鈕,按鈕下的**:
_microphone.stop();
if(stream.length>0)
private void playthreadcallback(object obj)
7.input
與使用者的互動方法主要 有三種:手勢、按鍵、觸控;
命名空間:
microsoft.xna.framework.input;
microsoft.xna.framework.input.touchpanel;
(1).觸控:狀態只有move\press\release
touchcollection touchstate=touchpanel.getstate();
foreach(touchloaction location in touchstate)
}**:
在dt_tick方法中:
void dt_tick(object sender,eventargs e)
}this.pagetitle.text=title;
}(2)手勢:
可以通過手在螢幕上的不同動作來觸發不同應用和觸控很相似,但是比其狀況要多很多,並且要指定
//用來指定手勢,必須要先設定,否則會報錯
touchpanel.enablecestures=gesturetype.freedrag;
if(touchpanel.enabledgesture!=gesturetype.none)
}**:
在建構函式中:
touchpanel.enabledgestures=gesturetype.flick|gesturetype.verticaldrag;
在dt_tick方法中:
string title=string.empty;
void dt_tick(object sender,eventargs e)
}this.pagetitle.text=title;
}
WP7基礎學習 第九講
注 因為把第七講和第八講放在一起了,主要是對那兩節的了解,簡單應用,沒太深究!不過全景檢視和樞軸檢視真的效果很不錯!express blend工具 本節主講 對微軟的blend工具的簡單介紹 簡單使用,它適合於設計人員 如 做個小小的flsh動畫,對介面控制項的修改,一些3d效果,視覺效果,不錯的工...
WP7基礎學習 第一講
分享學習筆記 初始windows phone7 平台介紹 sdk的安裝 模擬器介紹 效能測試 hello world 平台介紹 是微軟公司開發的乙個全新的移動平台 對開發者來說,是一種全新的開發方式 基本架構 screen 1 tool and support 開發應用所需的工具和支援 2 runt...
WP7基礎學習 第一講
分享學習筆記 初始windows phone7 平台介紹 sdk的安裝 模擬器介紹 效能測試 hello world 平台介紹 是微軟公司開發的乙個全新的移動平台 對開發者來說,是一種全新的開發方式 基本架構 screen 1 tool and support 開發應用所需的工具和支援 2 runt...