WPF遊戲程式設計03 物體運動

2021-05-31 21:26:25 字數 1833 閱讀 7556

上一節的**類似,不同的地方其實也就是宣告動畫執行緒處,共4句:

dispatchertimer dispatchertimer = new dispatchertimer(dispatcherpriority.normal);

dispatchertimer.tick += new eventhandler(timer_tick);

dispatchertimer.interval = timespan.frommilliseconds(50); 

dispatchertimer.start();

第一句申明乙個介面計時器dispatchertimer ,並且設定其執行緒優先級別為normal,這是標準設定,你可以根據你自己的需求進行更改,一共10個級別。

第二句註冊tick 事件,也就是計時器間隔觸發的事件。

第三句設定tick 事件的間隔,可以有很多方式,我使用的是timespan.frommilliseconds(),即間隔單位為毫秒。

第四句啟動執行緒。

是不是很簡單?這樣的話可以很輕鬆的通過interval 來控制重新整理乙個物件屬性的頻率了。接下來我們同樣使用ctrl+f5來測試一下成果。呵呵,結果和第二種動畫方法是一樣的,存在同樣的問題,因為畢竟兩種動畫的原理是一致的。

那麼到此,三種動態建立動畫的方法都已經詳細介紹過了,大家可能會有種感覺,比較鍾情於第一種wpf/silverlight推薦的storyboard動畫,既直觀又方便使用,而且彷彿不易出錯。其實這3種動畫都有它特定的使用場合。

第一種動畫適合建立簡單的物件位移及直接性質的屬性更改(在後面的教程中,我還將更深入的挖掘storyboard動畫的潛力,動態建立更複雜的基於keyframe的關鍵幀動畫)。

第二種動畫適合全域性屬性的時時更改,例如我們後面要講到的敵人或npc以及地圖等全體性的相對位移及屬性更改時就要用到它了。

第三種動畫則非常適合運用在spirit(角色)的個人動畫中,例如角色的移動,戰鬥,施法等動作。

小結:前三節分別講解了storyboard動畫,compositiontarget動畫,dispatchertimer動畫,並橫向分析了不同的場合對應不同的動畫應用模式,這些將是構成wpf/silverlight遊戲引擎的基礎。

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.windows;

using system.windows.controls;

using system.windows.data;

using system.windows.documents;

using system.windows.input;

using system.windows.media;

using system.windows.media.imaging;

using system.windows.shapes;

using system.windows.threading;

private void drawpentacle()

private void timertick(object sender, eventargs e)

private void container_mouseleftbuttondown(object sender, mousebuttoneventargs e)

private polygon pentacle;

private int speed = 5;

private point moveto;

}}

物聯網WPF介面

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...

WPF程式設計寶典 WPF概述

寫在結尾 這本書買了很久了,花了半年的時間才看完實在是心中有愧,所以決定重新看一遍,邊看邊寫,寫一下書上的東西和一些自己的理解。沒買這本書的同學可以去買一本看看,如果要入門wpf這本書還是挺好用的。今天講的是什麼是wpf,wpf的特點。比較枯燥,有一定基礎的同學可以自行略過。wpf程式通過direc...

WPF遊戲,使用move遊戲開發

我看了好多遊戲的原始碼,其實每乙個,我想做,rpg的都需要移動,那麼wpf,win8應用,資料繫結,我們需要乙個thread來讓人物移動。於是用move。在每個人物,自己和敵人,npc類,都有乙個move。在c 乙個最底類,people,有抽象函式move,屬性將要走x,將要走y。然後在需要人物移動...