WEB开发网
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game C... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十三) 锦上添花之魔法特效装饰

 2010-09-30 20:58:14 来源:WEB开发网   
核心提示: <StackPanel x:Name="ExtraPanel" Orientation="Horizontal" />为什么选择StackPanel而不是其他的布局控件呢?一方面为了与Silverlight更好的兼容,另一方面只要设置好它的宽度

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

为什么选择StackPanel而不是其他的布局控件呢?一方面为了与Silverlight更好的兼容,另一方面只要设置好它的宽度,动态的子控件添加或移除队列起来均非常的完美,我们需要做的仅仅是Add和Remove操作罢了。

最后,在刷新监视对象角色头像面板方法中添加如下逻辑进行Buff图标的添加与移除判断:

…… 
//更新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; 
    } 
  } 
 } 
……

运行效果图:

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十三) 锦上添花之魔法特效装饰

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十三) 锦上添花之魔法特效装饰

很酷吧~WPF中的ToolTip非常强大,模板化的它无论内容多少或形式如何均能自如显示。不同尺寸的QXIcon不仅仅可以用来显示Buff图标,还可以拓展到技能图标、快捷图标等等;另外,这些Buff图标在StackPanel的管理下显得相当智能,前一个图标消失后,后一个图标将自动前置,再新加入的Buff图标又会跟进追尾显示,而这些的一切乱序队列均是伟大的StackPanel在默默无闻的处理,我们无须插手任何一句多余的代码:

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十三) 锦上添花之魔法特效装饰

角色面板到此为止总算完善了。下一节我将为大家讲解如何为本教程示例游戏制作地图编辑器,初步打算首先实现障碍物设置与地图切片功能,现做现卖,时间会久一点,要关注哦。

出处:http://alamiye010.cnblogs.com/

上一页  1 2 3 

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接