WEB开发网
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game T... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十五)制作精美的可任意拖放对象的物品栏及装备栏

 2010-09-30 22:35:31 来源:WEB开发网   
核心提示: 充分理解DragDrop事件的顺序与原理后,我们制作物品栏与装备栏之间的拖放就轻松多了,C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十五)制作精美的可任意拖放对象的物品栏及装备栏(4),注册相应的事件并对每个物品的类型进行判断是否可以放置等即可(例

充分理解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();
                }
            };

嘿嘿,到此就大功告成了。当然,在换装时还需要处理主角属性变化等逻辑,且实际武器衣服的更换同样会发生在主角身上(类似纸娃娃系统),这些内容在不同的游戏中处理方式不同,具体就不列举了。下面是最后的效果图,非常酷吧:

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十五)制作精美的可任意拖放对象的物品栏及装备栏

DragDropTarget拖放控件在目前来说限制太多,且支持的类型也很少,还存在BUG。但是它的出现着实让人迷恋,在它还未完善前,大家如果打算使用相应功能,自行定义实现其实也是不错的选择,原理和ChildWindow有异曲同工之处,至少你可以很好的把握住从Drag到Drop整个流程到底谁被抓取,抓取源是什么,放到了哪个目标源,替换的是哪个对象等等;而这些在目前我所用到的DragDropTarget控件中都很难去实现,或者说极不方便;毕竟这个开源工具集还在不断的更新与完善中,Silverlight版本更新过快也对其有很大的影响。总来的说,一切美好东西的形成总是需要时间去磨练,期待更好,是我们每位开发者理想的追求。

本节源码请到目录中下载,在线演示地址:http://silverfuture.cn

出处:http://alamiye010.cnblogs.com/ 

上一页  1 2 3 4 

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接