C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十三)牵引式地图移动模式①
2009-06-22 07:08:36 来源:WEB开发网大致原理有了,如何通过代码来具体实现呢?
这里我提供两种方法:
第一种方法为通过载体来实现地图移动。具体为首先向游戏窗体中添加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);
}
}
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
更多精彩
赞助商链接