C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十四) 精灵控件横空出世!①
2009-06-22 07:08:32 来源:WEB开发网在上一节中,我们实现了地图牵引式移动,同时还遗留着一个小尾巴:主角和障碍物该如何跟随着地图的移动而移动?
上节中有点到,只要在地图移动的同时,时时根据主角等对象物体的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]));
}
Tags:开发 WPF Silverlight
编辑录入:爽爽 [复制链接] [打 印]- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››silverlight全屏显示图片
- ››Silverlight MVVM 模式(一) 切近实战
- ››开发者眼中的Windows Phone和Android
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››WPF学习笔记12. Binding (5)
- ››WPF学习笔记11. Binding (4)
- ››WPF学习笔记10. Binding (3)
- ››WPF学习笔记9. Binding (2)
- ››WPF学习笔记8. Binding
更多精彩
赞助商链接