C#開發WPF/Silverlight動畫及游戲系列教程(Game Tutorial):(四十)向Silverlight移植②
三、新增功能:
1)新增游戲的音樂及音效對象:
public static MediaElement gameMusic, gameAudio;
2)新增游戲鼠標光標:
//設置游戲鼠標光標
GameCursor.Stretch = Stretch.Fill;
GameCursor.Source = Super.GetImage("/Image/Cursor/0.png");
在鼠標移動事件中根據命中測試進行時時的鼠標光標圖片位置更新:
//鼠標移動(懸停)事件
private void Game_MouseMove(object sender, MouseEventArgs e) {
……
Point p = e.GetPosition(Root);
GameCursor.SetValue(Canvas.LeFTProperty, p.X); GameCursor.SetValue(Canvas.TopProperty, p.Y);
……
}
此方法實現了鼠標圖片跟隨光標移動,但是很明顯的影響了程序整體性能(CPU消耗會明顯增加),如果哪位朋友能提供更好的解決方案,望留言給我。
3)新增點擊水滴:
當鼠標在屏幕上左鍵點擊時,只要不點到對象物體上,則在該位置顯示出光標水滴,並播放它自身的動畫。目前我的Silverlight游戲引擎中只用一個光標水滴:
QXDecoration hitCursor;
/// <summary>
/// 加載光標點擊水滴
/// </summary>
private void LoadHitCursor() {
hitCursor = new QXDecoration() {
Code = 1,
EndFrame = 9,
CenterX = 32,
CenterY = 32,
};
hitCursor.Visibility = Visibility.Collapsed;
Add(hitCursor);
}
//鼠標左鍵事件
private void Game_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
……
//出現光標水滴
hitCursor.Visibility = Visibility.Visible;
hitCursor.FrameCounter = 0;
hitCursor.Timer.Start();
hitCursor.Coordinate = p;
……
}