簡體   English   中英

用鼠標移動物體?

[英]Moving object with mouse?

我目前正在嘗試在SharpDX中移動2D紋理。 我可以成功移動它,但是每隔幾幀它會跳很多。 例如,如果我從底部,從右到頂部,向左拖動,我會偶爾跳一下,圖像的原點位於底部的75%處,然后向右,然后又回到幾幀之后。 我認為這很奇怪,我認為這可能是由於事件或鼠標位置引起的。

我通過窗體上的MouseMove事件更新紋理的位置:

private void MouseMove(object sender, MouseEventArgs e) {
    if (e.Button == MouseButtons.Left) {
        testSprite.Position = new Vector2(e.X - testSprite.Position.X,
                                          e.Y - testSprite.Position.Y);
    }
}

我認為這主要是由於我設置XY值的方式。 我是在這里正確計算數學嗎,還是造成我問題的原因? 選擇這種方式是因為我不希望紋理的原點(0、0:頂部,左側)跳到鼠標位置,而是希望鼠標從其當前位置平穩地移動。


明晰

  • 我分配XY數學方法正確嗎?
    • 是的:還有什么可能導致這種跳躍
    • 否:正確的數學是什么?

在調試和嘗試不同的方法時,我了解到:

  • Position設置為eX,Y使運動平穩。
    • 但是,這跳到不需要的鼠標位置。

拖動過程階段:

從MouseDown開始:
-檢查物體是否被觸摸
-記住ObjectPos0MousePos0
-設置isDragging標志(表示MouseDown在對象上)

在MouseMove上(如果isDragging ):
ObjectPos = ObjectPos0 + (MousePos - MousePos0)
-重畫

在MouseUp上(如果isDragging ):
-確定最終位置
-進行必要的工作
-清除isDragging標志

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM