C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十三)牵引式地图移动模式①
2009-06-22 07:08:36 来源:WEB开发网这样就创建好了这8个区域中的其中一个(正下方区域),其他7个的创建和实现方法依次类推,很简单就不累述了。好了,我们按CTRL+F5来测试一下,当鼠标停留在窗体正下方的那个蓝色长方形区域时,地图会非常平滑的向上移动,这样就实现了我们视觉上的窗口向下取景效果。
图片看不清楚?请点击这里查看原图(大图)。
从上图可以看出,地图向上移从而实现窗口向下取景的视觉效果,这就是地图的相对移动原理。
通过实体介质来实现地图移动的方式具有直观、代码简单、逻辑不复杂的特性,但性能不好。
接下来看第二种方法,此方式不需要创建滚动介质,而是时时根据鼠标位置是否处于这8个区域中的任意一个进行对应的地图移动。这种方法相对于上一种方法来说虽然不够直观且需要的逻辑代码较多而繁,但它具有更高的性能与实用性,也是我推荐的方法。至于要如何实现它,我们首先需要写一个方法,该方法用来判断鼠标当前的位置并返回一个数字:
//根据鼠标的位置获取鼠标所处的区域代号
//0代表正上方区域(即0点钟位置)然后其他7个区域按顺时针依次为1,2,3,4,5,6,7
int distance = 80; //定义距离边缘多少即开始牵引地图
private int getMouseArea() {
Point MousePosition = Mouse.GetPosition(Carrier); //获取鼠标当前处于窗口中的位置
int result = -1;
//如果鼠标未超出窗口
if (MousePosition.X >= 0 && MousePosition.Y >= 0) {
//根据8种情况返回8个数字
if (MousePosition.X >= 190 && MousePosition.X <= 570) {
if (MousePosition.Y <= distance) {
result = 0;
} else if (MousePosition.Y >= 500 - distance) {
result = 4;
}
} else if (MousePosition.Y >= 125 && MousePosition.Y <= 375) {
if (MousePosition.X <= distance) {
result = 6;
} else if (MousePosition.X >= 760 - distance) {
result = 2;
}
} else if ((MousePosition.X < 190 && MousePosition.Y <= distance)
|| (MousePosition.Y < 125 && MousePosition.X <= distance)) {
result = 7;
} else if ((MousePosition.X > 570 && MousePosition.Y <= distance)
|| (MousePosition.Y < 125 && MousePosition.X >= 760 - distance)) {
result = 1;
} else if ((MousePosition.X > 570 && MousePosition.Y >= 500 - distance)
|| (MousePosition.Y > 375 && MousePosition.X >= 760 - distance)) {
result = 3;
} else if ((MousePosition.X < 190 && MousePosition.Y >= 500 - distance)
|| (MousePosition.Y > 375 && MousePosition.X <= distance)) {
result = 5;
}
}
return result;
}
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
更多精彩
赞助商链接