首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 開發 WPF/Silverlight 動畫與遊戲教學 (40):移植至 Silverlight (下)

     編輯:關於C語言

Silverlight 遊戲引擎新增功能實現

延續上篇移植工作,本文記錄遊戲引擎在 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 實例複用,透過重置幀計數器與座標實現多次播放,節省記憶體分配開銷。

點擊水滴特效展示
圖 2:滑鼠點擊水滴動畫效果
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved