![silverlight動畫設(shè)計-飛船打子彈動畫設(shè)計ppt課件_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/22/ad3b682d-bd2c-482b-ab75-0e46a6a7e434/ad3b682d-bd2c-482b-ab75-0e46a6a7e4341.gif)
![silverlight動畫設(shè)計-飛船打子彈動畫設(shè)計ppt課件_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/22/ad3b682d-bd2c-482b-ab75-0e46a6a7e434/ad3b682d-bd2c-482b-ab75-0e46a6a7e4342.gif)
![silverlight動畫設(shè)計-飛船打子彈動畫設(shè)計ppt課件_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/22/ad3b682d-bd2c-482b-ab75-0e46a6a7e434/ad3b682d-bd2c-482b-ab75-0e46a6a7e4343.gif)
![silverlight動畫設(shè)計-飛船打子彈動畫設(shè)計ppt課件_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/22/ad3b682d-bd2c-482b-ab75-0e46a6a7e434/ad3b682d-bd2c-482b-ab75-0e46a6a7e4344.gif)
![silverlight動畫設(shè)計-飛船打子彈動畫設(shè)計ppt課件_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/22/ad3b682d-bd2c-482b-ab75-0e46a6a7e434/ad3b682d-bd2c-482b-ab75-0e46a6a7e4345.gif)
版權(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 Poin
3、t(4,4);n表示飛船的位置和速度n因為速度有x和y坐標(biāo)的速度,所以使用點(diǎn)對象表示比較方便,其含義并不是一個點(diǎn)。n位置坐標(biāo)是左上角的點(diǎn)位置添加一個鍵盤控制事件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:n
5、 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 p
6、rivate 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 send
7、er, 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 n
8、 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 Ke
9、yEventHandler(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 bullet
10、Location.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, shipLoc
11、ation.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(Can
12、vas.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=“c
14、lr-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 bottomRigh
15、tCorner = 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 greenAlienL
16、ocation.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(obj
17、ect 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 Ke
18、yDown += 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差別Width:是我們期望控件應(yīng)有的寬度,是可讀寫的,可在xaml文件中設(shè)置,也可在法度中設(shè)置。若是沒有設(shè)置,Width的值為NaNNot a Number)ActualWidth:是控件Render的實(shí)際寬度,控件Render之前,它的值為0,。該屬性是只讀的。n運(yùn)行后看到一個精靈的運(yùn)動n在Silverlight 中,我們必須對一些重要問題進(jìn)行精確地控制。其中最重要的是時間管理。默認(rèn)情況下,Silverlight 每秒輸出60幀圖像。這意味著代碼必須盡可能快地執(zhí)行每一個幀的輸出以避免漏掉一些幀的顯示任務(wù)以便生成一個平滑流暢的動畫效果。對于創(chuàng)建其它使用矢量圖形的程序來說,其實(shí)現(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度幼兒園兒童安全教育教材及課程開發(fā)協(xié)議
- 2025年度城市綜合體物業(yè)管理服務(wù)合同協(xié)議范本
- 2025年產(chǎn)品質(zhì)量保證協(xié)議文本
- 2025年倉儲場地續(xù)租合同樣本
- 2025年市場擴(kuò)張戰(zhàn)略策劃咨詢協(xié)議
- 市場調(diào)研與分析服務(wù)框架協(xié)議
- 2025年飲料酒項目規(guī)劃申請報告模范
- 2025年中藥材市場分析與采購服務(wù)合同
- 2025年滌綸短纖項目規(guī)劃申請報告模范
- 2025年鼻毛修剪器項目規(guī)劃申請報告模稿
- 2024安全事故案例
- 生日快樂祝福含生日歌相冊課件模板
- 2024-2025學(xué)年人教版數(shù)學(xué)六年級上冊 期末綜合卷(含答案)
- 天津市部分區(qū)2023-2024學(xué)年高二上學(xué)期期末考試 物理 含解析
- 2024年考研管理類綜合能力(199)真題及解析完整版
- 2024年濰坊護(hù)理職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫附答案
- 《鉗工基本知識》課件
- 第八期:風(fēng)電典型事故案例剖析(二)
- 水文與水資源勘測基礎(chǔ)知識單選題100道及答案解析
- 2024年我國人口老齡化問題與對策
- 2025年中國工程建設(shè)行業(yè)現(xiàn)狀、發(fā)展環(huán)境及投資前景分析報告
評論
0/150
提交評論