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

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十三)牵引式地图移动模式①

 2009-06-22 07:08:36 来源:WEB开发网   
核心提示: 大致原理有了,如何通过代码来具体实现呢? 这里我提供两种方法: 第一种方法为通过载体来实现地图移动,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十三)牵引式地图移动模式①(2),具体为首先向游戏窗体中添加8个完全透明的滚动介质(就好比图中那8块区

大致原理有了,如何通过代码来具体实现呢?

  这里我提供两种方法:

  第一种方法为通过载体来实现地图移动。具体为首先向游戏窗体中添加8个完全透明的滚动介质(就好比图中那8块区域,其中4个蓝的,4个棕的)分别布局在地图边缘的8个位置上(它们相对于游戏窗体来说永远是不动的),然后在界面线程中时时判断鼠标是否悬停在它们中的某个上从而进行相应的地图移动。

这里我以正下方的滚动介质为例,这样来创建它:

        int scrollspeed = 5; //定义滚动速度
        Rectangle roller = new Rectangle(); //创建滚动介质
        private void InitRoller() {
            roller.Width = 800;
            roller.Height = 20;
            roller.Opacity = 0.3;
            roller.Fill = new SolidColorBrush(Colors.Blue);
            Carrier.Children.Add(roller);
            Canvas.SetZIndex(roller, 10001);
            Canvas.SetTop(roller, 490);
        }

这里为了演示需要,我将它的透明度暂且设置为0.3而不是0,目的是为方便大家可以看到它。接下来我们就需要在CompositionTarget的Timer_Tick事件中时时判断鼠标是否在它上面:       

private void Timer_Tick(object sender, EventArgs e) {
            //时时判断如果鼠标停留在了该滚动介质上,则地图相应滚动
            if (roller.IsMouseOver) {
                Canvas.SetTop(Map, Canvas.GetTop(Map) - scrollspeed);
            }
   }

上一页  1 2 3 4  下一页

Tags:开发 WPF Silverlight

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