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

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十二) 雷、混、冰、毒、火、风 - 幻化中的魔法魅力

 2010-09-30 20:58:24 来源:WEB开发网   
核心提示: 完成了界面,剩下的就是实现逻辑,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十二) 雷、混、冰、毒、火、风 - 幻化中的魔法魅力(3),魔法附加属性不可能是永久的,就好比中毒有个中毒持续时间,因此下面我将按类型分类进行讲解:1)雷:本示例教程中我将之定

完成了界面,剩下的就是实现逻辑。魔法附加属性不可能是永久的,就好比中毒有个中毒持续时间,麻痹有麻痹持续时间等等,除了那些即效魔法外,本文介绍的这6类魔法附加属性均为持续性的。因此,我通过为精灵控件添加一个ExtraTime属性来记录精灵被施与魔法附加属性的持续时间:

        double[] _ExtraTime = new double[6];
        /// <summary>
        /// 获取或设置被附加属性对应持续时间,与枚举ExtraAttributes一一对应
        /// </summary>
        public double[] ExtraTime {
            get { return _ExtraTime; }
            set { _ExtraTime = value; }
        }

该时间数组为double类型,分别与枚举ExtraAttributes一一对应。通过如此设置,我们可以轻松的借助主界面间隔为1秒的辅助线程 AuxiliaryThread去同步更新它们(每秒-1),并实现例如中毒每秒伤血等相关业务逻辑,可谓水到渠成,无缝衔接。

由于此6种附加属性实现的相应功能相差较大,基本无统一的规律可寻,因此下面我将按类型分类进行讲解:

1)雷:

本示例教程中我将之定义为使精灵无法动弹,无法动弹一方面意味着它自身动作被锁定,另一方面表示它无法移动。代码实现即:

      if (enemy.VLife > injure) {
          enemy.BodyMaskColor = new SolidColorBrush(Colors.Snow);
          enemy.BodyMaskSource.ImageSource = enemy.Body.Source;
          enemy.TimerState = TimerStates.Stop;
          Super.PauseSpiritStoryboard(enemy);
      } else {
          enemy.TimerState = TimerStates.Start;
  }

上一页  1 2 3 4 5 6 7  下一页

Tags:开发 WPF Silverlight

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