C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十五)制作精美的可任意拖放对象的物品栏及装备栏
2010-09-30 22:35:31 来源:WEB开发网充分理解DragDrop事件的顺序与原理后,我们制作物品栏与装备栏之间的拖放就轻松多了,注册相应的事件并对每个物品的类型进行判断是否可以放置等即可(例如药水是装备不了的,而帽子是无法拖到鞋子上的):
物品栏与装备栏之间除了通过拖放交互,在双击某个装备时,应该实现同样的装/卸功能。因此,这里我为QXIcon添加新的鼠标左键双击事件:public event MouseButtonEventHandler MouseLeftButtonDoubleClick;并通过如下代码实现双击功能:
doubleClickTimer = new DispatcherTimer() { Interval = TimeSpan.FromMilliseconds(250) };
doubleClickTimer.Tick += (s, e) => { doubleClickTimer.Stop(); };
this.MouseLeftButtonDown += (s, e) => {
if (doubleClickTimer.IsEnabled) {
doubleClickTimer.Stop();
if (MouseLeftButtonDoubleClick != null) {
MouseLeftButtonDoubleClick(s, e);
}
} else {
doubleClickTimer.Start();
}
};
嘿嘿,到此就大功告成了。当然,在换装时还需要处理主角属性变化等逻辑,且实际武器衣服的更换同样会发生在主角身上(类似纸娃娃系统),这些内容在不同的游戏中处理方式不同,具体就不列举了。下面是最后的效果图,非常酷吧:
DragDropTarget拖放控件在目前来说限制太多,且支持的类型也很少,还存在BUG。但是它的出现着实让人迷恋,在它还未完善前,大家如果打算使用相应功能,自行定义实现其实也是不错的选择,原理和ChildWindow有异曲同工之处,至少你可以很好的把握住从Drag到Drop整个流程到底谁被抓取,抓取源是什么,放到了哪个目标源,替换的是哪个对象等等;而这些在目前我所用到的DragDropTarget控件中都很难去实现,或者说极不方便;毕竟这个开源工具集还在不断的更新与完善中,Silverlight版本更新过快也对其有很大的影响。总来的说,一切美好东西的形成总是需要时间去磨练,期待更好,是我们每位开发者理想的追求。
本节源码请到目录中下载,在线演示地址:http://silverfuture.cn
出处:http://alamiye010.cnblogs.com/
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
更多精彩
赞助商链接