




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、面向?qū)ο蟮膭赢嬙O(shè)計基礎(chǔ)練習(xí):得到位置n得到目標(biāo)位置nship1.getvalue(canvas.leftproperty)nship1.getvalue(canvas.topproperty)n得到的是目標(biāo)左上角距離左邊和定邊的距離基礎(chǔ)練習(xí):設(shè)置位置n ship1.setvalue(canvas.leftproperty, shiplocation.x);nship1.setvalue(canvas.topproperty, shiplocation.y);n把目標(biāo)左上角設(shè)置到指定位置幀呈現(xiàn)事件n private void myrender(object sender, eventargs e
2、)nnncompositiontarget.rendering += myrender;n一個動畫有很多幀組成,在每幀中都可以執(zhí)行判斷或操作新建項目mygamen新建文件夾usercontrolsn把矢量圖轉(zhuǎn)換成的xaml文件拷貝入文件夾usercontrolsn把xaml文件修改正確的namespace,再包含到項目中(這兩步不能反了,因為只要包含到項目中就會生成cs文件)n如下格式在頁面放入飛船和按鈕n n n n 定義公用變量n private point shiplocation = new point(0, 0);n private point shipspeed = new poi
3、nt(4,4);n表示飛船的位置和速度n因為速度有x和y坐標(biāo)的速度,所以使用點對象表示比較方便,其含義并不是一個點。n位置坐標(biāo)是左上角的點位置添加一個鍵盤控制事件n private void mykeydown(object sender, keyeventargs e)n n switch (e.key)n n case key.left:n break;n case key.right:n break;n case key.up:n break;n case key.down: n break;n case key.space:n break;n default:n break;n 完善代
4、碼n switch (e.key)n n case key.left:n shiplocation.x -= shipspeed.x;/減小距離左邊界的距離n break;n case key.right:n shiplocation.x += shipspeed.x;/n break;n case key.up:n shiplocation.y -= shipspeed.y;/n break;n case key.down:n shiplocation.y += shipspeed.y;/增大距離上邊界距離n break;n case key.space:n break;n default:
5、n break;n 在按鈕單擊代碼n button1.visibility = visibility.collapsed;n shiplocation.x = (double)ship1.getvalue(canvas.leftproperty);n shiplocation.y = (double)ship1.getvalue(canvas.topproperty);n compositiontarget.rendering += myrender;n this.keydown += new keyeventhandler(mykeydown);n紅色為自定義的鍵盤按下事件加上幀呈現(xiàn)事件n
6、private void myrender(object sender, eventargs e)n n ship1.setvalue(canvas.leftproperty, shiplocation.x);n ship1.setvalue(canvas.topproperty, shiplocation.y);n 程序測試,通過按鍵控制飛船方向n private point shiplocation = new point(0, 0);n private point shipspeed = new point(4,4);n private void mykeydown(object sen
7、der, keyeventargs e)n n switch (e.key)n n case key.left:n shiplocation.x -= shipspeed.x;n break;n case key.right:n shiplocation.x += shipspeed.x;n break;n case key.up:n shiplocation.y -= shipspeed.y;n break;n case key.down:n shiplocation.y += shipspeed.y;n break;n case key.space:n default:n break;n
8、n n private void button1_click(object sender, routedeventargs e)n n button1.visibility = visibility.collapsed;n shiplocation.x = (double)ship1.getvalue(canvas.leftproperty);n shiplocation.y = (double)ship1.getvalue(canvas.topproperty);n compositiontarget.rendering += myrender;n this.keydown += new k
9、eyeventhandler(mykeydown);n 產(chǎn)生一個向上飛的子彈n引用using luoyonggame.usercontrols;n定義公用變量n bullet bullet;n private point bulletlocation = new point(0, 0);n private point bulletspeed = new point(0, 20);n n 這里子彈要動態(tài)產(chǎn)生,要被多個事件使用在按下空白鍵事件中加代碼n case key.space:n bullet = new bullet();n cnv.children.add(bullet);n bulle
10、tlocation.x = (double)ship1.getvalue(canvas.leftproperty);n bulletlocation.y = (double)ship1.getvalue(canvas.topproperty);n break;n把子彈坐標(biāo)定到飛船所在位置寫幀呈現(xiàn)事件n private void myrender(object sender, eventargs e)n n ship1.setvalue(canvas.leftproperty, shiplocation.x);n ship1.setvalue(canvas.topproperty, shiplo
11、cation.y);n n bullet.setvalue(canvas.leftproperty, bulletlocation.x);n bullet.setvalue(canvas.topproperty, bulletlocation.y);n bulletlocation.y -= bulletspeed.y;n完善子彈控制,只能有一發(fā)n private void myrender(object sender, eventargs e)n n ship1.setvalue(canvas.leftproperty, shiplocation.x);n ship1.setvalue(ca
12、nvas.topproperty, shiplocation.y);n n bullet.setvalue(canvas.leftproperty, bulletlocation.x);n bullet.setvalue(canvas.topproperty, bulletlocation.y);n bulletlocation.y -= bulletspeed.y;n if (bulletlocation.y 0)n n bullet = null;n n n case key.space:n if (bullet = null)n n bullet = new bullet();n cnv
13、.children.add(bullet);n bulletlocation.x = (double)ship1.getvalue(canvas.leftproperty);n bulletlocation.y = (double)ship1.getvalue(canvas.topproperty);n n break;nn n n n n n n n n n n canvas x:name=alien_01_01 width=195 height=129 canvas.left=修改mainpage.xaml nn n n n n n n n nn注意要編譯,注意工具欄,xmlns:my=“
14、clr-namespace:mygame.usercontrols”可以從工具欄拖出控件了。界面類中的變量n /暫存綠色外星人在畫布中的位置n private point greenalien1location = new point(0, 0);n /暫存綠色外星人在x軸上的移動速度n private point greenalien1speed = new point(250, 0);n /定義動畫在畫布中的左邊界n private point upperleftcorner = new point(0, 0);n /定義動畫在畫布中的右邊界n private point bottomri
15、ghtcorner = new point(0, 0);n /暫存外星人的行高n private double rowheight = 60;n /暫存完成呈現(xiàn)幀的時間n private datetime lasttick;n private point greenalienlocation = new point(0, 0);n greenalien green;n private double speed = 1;n private void renderframe(object sender, eventargs e)n n if (green != null)n n greenalie
16、nlocation.x += speed;n if (greenalienlocation.x = (cav.actualwidth - green.actualwidth * 0.5)n n speed *= -1;n n greenalienlocation.y += 0.2;n green.setvalue(canvas.leftproperty, greenalienlocation.x);n green.setvalue(canvas.topproperty, greenalienlocation.y); n n n private void btnstartgame_click(o
17、bject sender, routedeventargs e)n n button3.visibility = visibility.collapsed;n shiplocation.x = (double)ship1.getvalue(canvas.leftproperty);n shiplocation.y = (double)ship1.getvalue(canvas.topproperty);n green = new greenalien();n cav.children.add(green);n compositiontarget.rendering += myrender;n
18、keydown += new keyeventhandler(mykeydown); n ncompositiontarget.rendering是響應(yīng)靜態(tài)事件,觸發(fā)該事件是為了為每幀獲取內(nèi)容。這是一種非常方便的方法,用它構(gòu)建基于幀的動畫的基本技術(shù)很容易,只需要簡單地為靜態(tài)的compositiontarget.rendering事件關(guān)聯(lián)事件處理程序。一旦關(guān)聯(lián)了事件處理程序,silverlight就會開始不斷地調(diào)用這個事件處理程序(只要渲染代碼執(zhí)行得足夠快,每秒將會調(diào)用60次) width 和 actualwidth差別nwidth:是我們期望控件應(yīng)有的寬度,是可讀寫的,可在xaml文件中設(shè)置,
19、也可在法度中設(shè)置。若是沒有設(shè)置,width的值為nan(not a number)nactualwidth:是控件render的實際寬度,控件render之前,它的值為0,。該屬性是只讀的。n運行后看到一個精靈的運動n在silverlight 中,我們必須對一些重要問題進(jìn)行精確地控制。其中最重要的是時間管理。默認(rèn)情況下,silverlight 每秒輸出60幀圖像。這意味著代碼必須盡可能快地執(zhí)行每一個幀的輸出以避免漏掉一些幀的顯示任務(wù)以便生成一個平滑流暢的動畫效果。對于創(chuàng)建其它使用矢量圖形的程序來說,其實現(xiàn)步驟和我們前面的例子的步驟幾乎完全相同。你可以使用基于矢量圖形的動畫精靈來替換前面的光柵圖像。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025時政新聞知識點
- 郵政業(yè)務(wù)營銷員中級試題3
- 2025至2030年中國菱鎂建筑防火板行業(yè)發(fā)展研究報告
- 浙江省八年級歷史與社會上冊(人教)2.3《日本的大化改新》 教學(xué)設(shè)計2
- 2025至2030年中國紫檀木產(chǎn)品行業(yè)發(fā)展研究報告
- 2023六年級英語下冊 Unit 3 What Will You Do This Summer Lesson 15 Jenny's Summer Holiday教學(xué)設(shè)計 冀教版(三起)
- 裝修防火施工方案
- 2025至2030年中國硝酸戊四醇酯片行業(yè)發(fā)展研究報告
- 3我們班 他們班 教學(xué)設(shè)計-2024-2025學(xué)年道德與法治四年級上冊統(tǒng)編版
- 花池圍墻施工方案
- 消防設(shè)施操作員實戰(zhàn)試題及答案分享
- 2025年北京電子科技職業(yè)學(xué)院高職單招(數(shù)學(xué))歷年真題考點含答案解析
- 山東省濱州市無棣縣2024-2025學(xué)年七年級上學(xué)期期末生物試題(原卷版+解析版)
- 新東方在國際教育領(lǐng)域的布局與市場機會
- 人武專干考試題型及答案
- 2025年上半年??谑忻捞m區(qū)水務(wù)局下屬事業(yè)單位招考易考易錯模擬試題(共500題)試卷后附參考答案
- 2025屆高三化學(xué)二輪復(fù)習(xí) 化學(xué)反應(yīng)原理綜合 課件
- 9.3.2《設(shè)計簡單裝置制作酸奶》跨學(xué)科實踐主題學(xué)習(xí)單元教學(xué)設(shè)計
- 2025年北京五湖四海人力資源有限公司招聘筆試參考題庫含答案解析
- 常見的酸和堿第2課時酸的化學(xué)性質(zhì) 2024-2025學(xué)年九年級化學(xué)人教版(2024)下冊
- 2025年鄭州市九年級中考語文一模試卷附答案解析
評論
0/150
提交評論