WP7基礎學習 第十五講

2021-09-08 01:56:50 字數 3675 閱讀 3225

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...