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

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十四) 精灵控件横空出世!①

 2009-06-22 07:08:32 来源:WEB开发网   
核心提示:在上一节中,我们实现了地图牵引式移动,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十四) 精灵控件横空出世!①,同时还遗留着一个小尾巴:主角和障碍物该如何跟随着地图的移动而移动? 上节中有点到,只要在地图移动的同时,随便建一个) for (int y = 11; y <

在上一节中,我们实现了地图牵引式移动,同时还遗留着一个小尾巴:主角和障碍物该如何跟随着地图的移动而移动?

上节中有点到,只要在地图移动的同时,时时根据主角等对象物体的X,Y坐标进行相对于地图的X,Y坐标移动即可达到目的。但是由此又引来了新问题:主角为Image控件,障碍物则为矩形控件,它们都没有X,Y这两个属性,我们该如何对它们的坐标进行记录呢?

最简单且最直接的方法莫过于将它们的X,Y坐标通过分隔符连接然后记录进Tag属性中,在调用的时候再将它分离取出。例如我们可以在构建障碍物的时候这样做:

            //构建障碍物(本节只为演示,随便建一个)
            for (int y = 11; y <= 14; y++) {
                for (int x = 31; x <= 40; x++) {
                    //障碍物在矩阵中用0表示
                    Matrix[x, y] = 0;
                    rect = new Rectangle();
                    //目前暂时不新创一个自定义控件,而把坐标储存在Tag属性中
                    rect.Tag = x + "," + y;
                    ……
                }
            }

其中上图中黄色的代码即为将障碍物的X,Y坐标记录进它的Tag属性,然后我们可以通过下面的函数在需要的时候对Tag属性进行分离调用:

        //从矩形障碍物的Tag属性中分离出它的坐标Point
        private Point getPointFromTag(object tag) {
            string[] str = tag.ToString().Split(new char[] { ',' });
            return new Point(Convert.ToDouble(str[0]), Convert.ToDouble(str[1]));
        }

1 2 3 4 5  下一页

Tags:开发 WPF Silverlight

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