C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十) 第一部分拓展小结篇
2009-07-01 07:07:30 来源:WEB开发网最后就是在游戏窗口刷新线程中对它也进行时时的更新:
private void Timer_Tick(object sender, EventArgs e) {
……
//遮罩层跟随移动
Canvas.SetLeft(Mask, MapLeft + 793);
Canvas.SetTop(Mask, MapTop + 217);
//主角跟随地图同时移动
Canvas.SetLeft(Spirit, Spirit.X - Spirit.CenterX + MapLeft);
Canvas.SetTop(Spirit, Spirit.Y - Spirit.CenterY + MapTop);
Canvas.SetZIndex(Spirit, (int)Spirit.Y); //时时的更新它的层次(画家算法)
……
}
这里关键的代码就是黄色部分代码,我通过Canvas.SetZIndex(Mask, 612)设置了遮挡物的层次处于ZIndex:612这个位置,弄过网页的同志对Z-Index应该不陌生,它们的意义是一样的。最后还需要精灵的ZIndex与之配合才能实现完美默契的遮罩效果,因此我们在线程中时时根据精灵的Y坐标来更改它的ZIndex:Canvas.SetZIndex(Spirit, (int)Spirit.Y),这样就算以后增加了其他的NPC、怪物之类的对象物体,只要同样的设置它们的ZIndex=Y,即可以完美的实现时时的层次关系。
三、完美换装
这个就简单多了,因为之前的章节中已经将相关参数与实现方法都定义好了,那么剩下的就是如何调用的问题。这里为了演示方便,我在xaml里面添加了两个下拉列表(ComboBox)分别对应衣服及武器的代号,和一个换装启动按钮(本教程目录中有源码下载,这里就不列出来了)。然后我们在此按钮的点击事件中只需要3行代码就可以轻松的实现换装:
Tags:开发 WPF Silverlight
编辑录入:爽爽 [复制链接] [打 印]- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››WPF学习笔记12. Binding (5)
- ››WPF学习笔记11. Binding (4)
- ››WPF学习笔记10. Binding (3)
- ››WPF学习笔记9. Binding (2)
- ››WPF学习笔记8. Binding
- ››WPF学习笔记7. Resource
- ››WPF学习笔记6. RoutedEvent
- ››WPF学习笔记5. DependencyProperty
- ››WPF学习笔记3. Navigation
- ››WPF学习笔记之2. Dispatcher
- ››WPF学习笔记之1. Application
更多精彩
赞助商链接