大佬教程收集整理的这篇文章主要介绍了Silverlight 解谜游戏 之十一 鼠标的新衣,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本篇我们将对鼠标指针进行美化,也给它穿上好看点的马甲,对于其样式来源可以选择Image 或Path。可以通过微软的 Expression Design 设计出鼠标指针样式@H_944_19@@H_944_19@
先看看鼠标指针换上新装的效果:
2. 在Interactivity 中创建@H_69_61@mouse@R_674_10930@or 文件夹,并在其中加入@H_69_61@mouse@R_674_10930@orBehavior、NameResolvedEventArgs、NameResolver 类:
3. 在NameResolver 类中,最关键的就是updateObjectFromname 方法,它将@R_674_10930@orName 属性与鼠标指针对象结合起来:
private void updateObjectFromname(DependencyObject oldObject) { DependencyObject resolvedObject = null; this.ResolvedObject = null; if (this.NameScopeReferenceElement != null) { if (!ISELER_508_11845@entLoaded(this.NameScopeReferenceElement)) { this.NameScopeReferenceElement.Loaded +=
new RoutedEventHandler(this.onNameScopeReferenceLoaded); this.PendingReferenceElementLoad = true; return; } if (!String.IsNullOrEmpty(this.Name)) { FrameworkElement actualNameScopeReferenceElement =
this.ActualNameScopeReferenceElement; if (actualNameScopeReferenceElement != null) { resolvedObject = actualNameScopeReferenceElement.FindName(this.Name)
as DependencyObject; } } } this.HasAttempedResolve = true; this.ResolvedObject = resolvedObject; if (oldObject != this.object) { this.onObjectChanged(oldObject,this.object); } }
4. 在Mouse@R_674_10930@orBehavior 类中,存有@R_674_10930@orName、OffsetX、OffsetY 属性,它们将用于在Blend 中对鼠标指针进行设置:
public static readonly DependencyProperty @R_674_10930@orNameProperty = DependencyProperty.Register("@R_674_10930@orName",typeof(String),typeof(@H_73_86@mouse@R_674_10930@orBehavior),new PropertyMetadata(new PropertyChangedCallBACk(On@R_674_10930@orNameChanged))); public static readonly DependencyProperty OffsetXProperty = DependencyProperty.Register("OffsetX",typeof(double),null); public static readonly DependencyProperty OffsetYProperty = DependencyProperty.Register("OffsetY",null);
以及MouseEnter、MouSELEave、MouseMove 事件:
private void AssociatedObject_MouseEnter(object sender,@H_73_86@mouseEventArgs E) { if (!this.Is@R_674_10930@orNameSet) return; FrameworkElement @R_674_10930@or = @R_674_10930@or as FrameworkElement; @R_674_10930@or.IsHitTestVisible = false; @R_674_10930@or.Visibility = Visibility.Visible; if (@R_674_10930@orStack.Count > 0 && @R_674_10930@orStack.Peek() != @R_674_10930@or) { @R_674_10930@orStack.Peek().Visibility = Visibility.Collapsed; } if (!@R_674_10930@orStack.Contains(@R_674_10930@or)) @R_674_10930@orStack.Push(@R_674_10930@or); AssociatedObject.@R_674_10930@or = @R_674_10930@ors.None; this.AssociatedObject.MouseMove += new @H_73_86@mouseEventHandler(AssociatedObject_MouseMovE); } private void AssociatedObject_MouSELEave(object sender,@H_73_86@mouseEventArgs E) { if (!this.Is@R_674_10930@orNameSet) return; FrameworkElement @R_674_10930@or = @R_674_10930@or as FrameworkElement; @R_674_10930@or.Visibility = Visibility.Collapsed; @R_674_10930@orStack.Pop(); if (@R_674_10930@orStack.Count > 0) { @R_674_10930@orStack.Peek().Visibility = Visibility.Visible; } this.AssociatedObject.MouseMove -= new @H_73_86@mouseEventHandler(AssociatedObject_MouseMovE); AssociatedObject.@R_674_10930@or = null; } private void AssociatedObject_MouseMove(object sender,@H_73_86@mouseEventArgs E) { if (!this.Is@R_674_10930@orNameSet) return; FrameworkElement @R_674_10930@or = @R_674_10930@or as FrameworkElement; Point @H_255_85@mousePosition = e.GetPosition(null); @R_674_10930@or.Margin = new Thickness(mousePosition.X + OffsetX,mousePosition.Y + OffsetY,0); }
5. 添加好上面三个类并重新编译后,我们回到Blend 中,为UserControl 添加新的Behavior->@H_69_61@mouse@R_674_10930@orBehavior:
6. 在LayoutRoot 中添加鼠标指针图片,命名为@R_674_10930@orArrow:
将其放在GameScreen 上方,Left 设为0,Top 设为-50:
7. 选择刚刚添加的Mouse@R_674_10930@orBehavior 将@R_674_10930@orName 设为鼠标指针名称@R_674_10930@orArrow,OffsetY 设为50(因为之前它与LayoutRoot有-50的偏差):
以上是大佬教程为你收集整理的Silverlight 解谜游戏 之十一 鼠标的新衣全部内容,希望文章能够帮你解决Silverlight 解谜游戏 之十一 鼠标的新衣所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。