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

WPF/Silverlight 遊戲開發教程(三十三之二):Buff 圖標顯示與工具提示實作

     編輯:關於C語言

網遊常在頭像面板顯示監視對象的 Buff 圖標及持續時間、效果。新增 QXIcon 圖標控件:

<Canvas x:Name="Icon">
    <Image x:Name="Body">
        <Image.ToolTip>
            <TextBlock x:Name="Details" />
        </Image.ToolTip>
    </Image>
</Canvas>

主體為圖片,加 ToolTip 顯示描述。通用頭像面板加入水平 StackPanel 作為 Buff 容器:

<StackPanel x:Name="ExtraPanel" Orientation="Horizontal" />

選 StackPanel 兼容 Silverlight,動態增減子控件完美,僅需 Add/Remove。

刷新邏輯:Buff 圖標增減判斷

for (int i = 0; i < obj.ExtraTime.Count(); i++)
{
    QXIcon icon = ObjectRoleFace.ExtraPanel.FindName(string.Format("Extra{0}", i)) as QXIcon;
    if (obj.ExtraTime[i] > 0)
    {
        XElement ExtraItem = Super.GetTreeNode(Super.SystemXElement["ExtraItems"], "Item", "Value", i.ToString());
        if (icon == null)
        {
            icon = new QXIcon() { Width = 16, Height = 16, BodySource = Super.getImage(ExtraItem.Attribute("Src").Value) };
            ObjectRoleFace.ExtraPanel.RegisterName(string.Format("Extra{0}", i), icon);
            ObjectRoleFace.ExtraPanel.Children.Add(icon);
        }
        icon.Tip = string.Format("{0}持續:{1}秒", ExtraItem.Attribute("Name").Value, obj.ExtraTime[i]);
    }
    else
    {
        if (icon != null)
        {
            ObjectRoleFace.ExtraPanel.UnregisterName(string.Format("Extra{0}", i));
            ObjectRoleFace.ExtraPanel.Children.Remove(icon);
            icon = null;
        }
    }
}

下節將講解魔法特效裝飾。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved