程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#開發WPF/Silverlight動畫及游戲系列教程(Game Tutorial):(三十九)(1)

C#開發WPF/Silverlight動畫及游戲系列教程(Game Tutorial):(三十九)(1)

編輯:關於C語言

C#開發WPF/Silverlight動畫及游戲系列教程(Game Tutorial):(三十九)向Silverlight移植①

一、主要改進:

1)Silverlight3.0上的右鍵實現:

//注冊右鍵事件
HtmlPage.Document.AttachEvent("oncontextmenu", Game_MouseRightButtonDown);
//鼠標右鍵事件
private void Game_MouseRightButtonDown(object sender, HtmlEventArgs e) {
        e.PreventDefault(); //取消右鍵彈出菜單
……邏輯部分
}

通過上述方法還必須配合<param name="Windowless" value="true" />或System.Windows.Interop.Settings.Windowless = true才能實現右鍵功能。另外需要特別說明的是,此方法並非官方所提供的解決方案,而是第三方間接的實現方式。因此,在使用前,您必須解為Silverlight解禁右鍵將付出的代價:①Windowless = true將降低程序整體性能;②無法使用輸入法;③無法被所有的浏覽器所兼容,例如在Google Chrome中,雖然可以激發出右鍵功能,但是取消不了彈出右鍵菜單。綜上,在Silverlight3.0中,您還是得謹慎再謹慎的考慮是否使用右鍵。

2)撤消精靈及其他所有控件中的x,y,z坐標定位用關聯屬性,取而代之的是一個名為Coordinate的關聯屬性,其完整定義如下:

/// <summary>
/// 獲取或設置控件坐標(關聯屬性)
/// </summary>
public Point Coordinate {
 get { return (Point)GetValue(CoordinateProperty); }
 set { SetValue(CoordinateProperty, value); }
}
public static readonly DependencyProperty CoordinateProperty = DependencyProperty.Register(
 "Coordinate",
 typeof(Point),
 typeof(QXSprite),
 new PropertyMetadata(ChangeCoordinateProperty)
);
private static void ChangeCoordinateProperty(DependencyObject d, DependencyPropertyChangedEventArgs e) {
 QXSprite obj = (QXSprite)d;
 if (obj.Visibility == Visibility.Visible) {
  Point p = (Point)e.NewValue;
  obj.SetValue(Canvas.LeFTProperty, p.X - obj.CenterX);
  obj.SetValue(Canvas.TopProperty, p.Y - obj.CenterY);
  obj.SetValue(Canvas.ZIndexProperty, Convert.ToInt32(p.Y));
 }
}

Coordinate的類型為Point,因此,我將原先精靈移動用的DoubleAnimation動畫類型替換成了PointAnimation;這樣,不論是在代碼結構還是性能上均得到很大的優化。更改控件坐標時,只需修改它的Coordinate = new Point(x,y)即可,系統會判斷該關聯屬性的值是否發生改變而激發ChangeCoordinateProperty方法,從而更新該控件最終在畫面中的LeFTProperty、TopProperty和ZIndexProperty。沒錯,關聯屬性就是這麼強大。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved