首頁>Club>
10
回覆列表
  • 1 # 使用者9559780179916

    這是我個人筆記

    可以使用"拖放事件+拖放操作"方式拖動控制元件到新的位置,這有點像在不同資料夾中拖動檔案.

    優點:可帶有資源拖放的功能(內容),而不只是拖放"圖形控制元件"(顯示).

    缺點:在最後放下時控制元件位置不太精確,如果把控制元件拖到視窗外等於把控制元件丟掉再也無法操作.

    (控制元件沒有父級,位置不在遊戲視窗內.但可以透過程式碼新增到父級,並設定位置重新顯示控制元件.)

    過程:當滑鼠在控制元件上按下時,記錄滑鼠在控制元件上的本地座標

    (MyGeometry為我的幾何圖形,也就是控制元件的一些位置和大小資訊.

    透過AbsoluteToLocal獲得滑鼠在控制元件上的位置

    透過LocalToAbsolute獲得控制元件在桌面上的位置

    透過LocalToViewport獲取控制元件在遊戲視口上的位置),

    並設定拖動的觸發條件(DetectDragIfPressed)為用滑鼠左鍵拖動才觸發.

    在"拖動事件"中從父級移除(RemoveFromParent) - 建立拖動操作(CreateDragDropOperation)把返回值傳遞給Operation

    在"畫布面板"控制元件的"放下事件"中會獲得上面傳遞過來的資料,讀取它並用於顯示,再獲取"滑鼠在視口上的位置"-之前"滑鼠在控制元件上的位置"

    就可以把控制元件顯示在滑鼠放下的位置.

    CreateDragDropOperation引數說明

    Class:一個用於拖放操作的類,可顯示圖示和裝載資源. 必選

    Tag:用於傳遞標誌說明,但我用它傳遞"滑鼠在控制元件上的位置". 可選

    Payload:需要裝載的資源引用, 可選

    DefaultDragVisual:拖動時顯示的圖示(控制元件) 可選

    Pivot:樞軸點,如用於旋轉的中心點,但在這裡表示樞軸點跟隨滑鼠 必選

    Offset:偏移 拖動時顯示的圖示 位置,值為控制元件大小的比例如Y=-1.0則控制元件就顯示在滑鼠的上方 一般不用改

  • 中秋節和大豐收的關聯?
  • EDU CODERHive的安裝與配置?