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

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十三)制作游戏主菜单面板及鼠标左右键快捷技能栏

 2010-09-30 21:06:32 来源:WEB开发网   
核心提示: 当鼠标在右键快捷按钮图标上点击时,我将availableMagic中的所有对象以图标的形式添加进名为rightButtonMagicList的WrapPanel中,C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十三)制作游戏主菜单面板及鼠标左右键快捷

当鼠标在右键快捷按钮图标上点击时,我将availableMagic中的所有对象以图标的形式添加进名为rightButtonMagicList的WrapPanel中,由于此Demo中图标的宽高均为27像素,因此我约束rightButtonMagicList宽为270,即一行如果超过10个图标则自动换行。最后为它赋予相应的事件,当点中某个魔法技能,主角当前的右键默认魔法更改为此魔法,且右键快捷按钮图标的魔法也换成它:

……
           //右键魔法选择
            rightButtonMagicIcon.MouseLeftButtonDown += delegate(object sender, MouseButtonEventArgs e) {
                if (rightButtonMagicList == null) {
                    rightButtonMagicList = new WrapPanel() {
                        Orientation = Orientation.Horizontal,
                        Width = 270, //一行放10个图标,每个27宽
                    };
                    foreach (Magic magic in availableMagic) {
                        QXIcon magicIcon = new QXIcon(IconTypes.Highlights) {
                            BodySource = new ImageBrush() { ImageSource = Super.GetImage(string.Format("/Image/Magic/{0}/0.png", magic.Code)) },
                            NewSource = new ImageBrush() { ImageSource = Super.GetImage("/Image/Icon/34.png") },
                            Width = 27,
                            Height = 27,
                            Tip = magic.Name,
                            Tag = magic,
                        };
                        magicIcon.MouseLeftButtonDown += delegate(object ss, MouseButtonEventArgs ee) {
                            QXIcon icon = ss as QXIcon;
                            Magic m = icon.Tag as Magic;
                            rightButtonMagicIcon.BodySource = icon.BodySource;
                            rightButtonMagicIcon.Tip = m.Name;
                            Leader.CurrentMagic.Code = m.Code;
                            Leader.CurrentMagic.Level = m.Level;
                            rightButtonMagicList.Visibility = Visibility.Collapsed;
                            ee.Handled = true;
                        };
                        rightButtonMagicList.Children.Add(magicIcon);
                    }
                    BottomMenu.Children.Add(rightButtonMagicList);
                    Canvas.SetLeft(rightButtonMagicList, 437); Canvas.SetTop(rightButtonMagicList, -Math.Ceiling(rightButtonMagicList.Children.Count / (rightButtonMagicList.Width / 27)) * 27);
                } else {
                    if (rightButtonMagicList.Visibility == Visibility.Collapsed) {
                        rightButtonMagicList.Visibility = Visibility.Visible;
                        Canvas.SetTop(rightButtonMagicList, -rightButtonMagicList.ActualHeight);
                    } else {
                        rightButtonMagicList.Visibility = Visibility.Collapsed;
                    }
                }
                e.Handled = true;
……

具体逻辑大家仔细看就明白了~还算比较简单的。实际效果如下:

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十三)制作游戏主菜单面板及鼠标左右键快捷技能栏

另外的,大家不妨自行修改一下循环代码,多加几个魔法上去体验一下WrapPanel的强大:

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十三)制作游戏主菜单面板及鼠标左右键快捷技能栏

游戏主界面菜单已初具雏形,接下来的任务就是去完善它的各面板及相应功能~敬请关注。

在线演示地址:http://silverfuture.cn

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

上一页  2 3 4 5 6 7 

Tags:开发 WPF Silverlight

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