延續上篇移植工作,本文記錄遊戲引擎在 Silverlight 平台新增的三大核心功能:音樂音效系統、自訂滑鼠游標與點擊特效。
引入靜態 MediaElement 管理遊戲音頻:
public static MediaElement gameMusic, gameAudio;
此設計允許全域控制背景音樂與音效播放,支援並行播放多個音效實例。
透過 Image 控件實現遊戲專用游標:
// 設定遊戲滑鼠游標
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 佔用,歡迎讀者提供更優解決方案(如使用 Cursor 類別或硬體游標)。
滑鼠左鍵點擊空白區域時顯示動畫水滴:
QXDecoration hitCursor;
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; // 使用上篇重構的協調屬性
}
採用單一 QXDecoration 實例複用,透過重置幀計數器與座標實現多次播放,節省記憶體分配開銷。