,我需要在任何時候都x和鼠標的y值,相對的JPanel。這意味着每次調用paintComponent方法時都必須刷新值。但是,我已經使用mouseMoved()和mouseDragged(),因爲我正在翻譯圖形本身,所以我需要不斷刷新它。是否有mouselisteners有一個方法來簡單地得到您的鼠標的x和y值,而不必創建一個方法?如何不斷更新鼠標相對於JPanel的x和y位置,而不需要事件?所以在遊戲中,我忙着做
回答
鼠標聽衆得到MouseEvent
,從中可以獲取鼠標的位置。
class MyMouseListener extends MouseMotionAdapter {
@Overrride
public void mouseDragged(MouseEvent e) {
int mouse_x = e.getX();
int mouse_y = e.getY();
// ... use mouse_x & mouse_y
}
}
注意:如果您需要使用#paint(Graphics g)
方法,您應該存儲此鼠標位置。儘管在Windows操作系統上調用#paint(Graphics g)
期間,您可能能夠查詢鼠標位置,但我在Mac OS上遇到了「鎖定」問題。因此,請在鼠標偵聽器中保存鼠標位置,並在繪製方法中使用已保存的位置。
問題出在我的情況下,我需要在沒有任何鼠標的情況下獲取鼠標位置。我正在製作一款使用鼠標指針作爲瞄準敵人的遊戲,並且向左或向右飛行會使整個圖形g以相反的方式翻譯,這意味着如果您按住鼠標但不移動它並瞄準通過向左或向右轉動按鍵,x和y值不會更新。 –
翻譯圖形不會改變鼠標的位置。你需要應用[逆變換(https://docs.oracle.com/javase/7/docs/api/java/awt/geom/AffineTransform.html#inverseTransform%28java.awt.geom.Point2D,%20java .awt.geom.Point2D%29)到鼠標/屏幕座標,將其轉換爲您的模型座標系。 – AJNeufeld
我已經。瞄準系統適用於所有情況,除非玩家在保持光標瞄準一個點的同時進行瞄準(向左和向右移動)。這是因爲雖然鼠標正在相對於屏幕移動,但沒有檢測到實際的動作(或拖動或點擊),因此最初點擊中記錄的x值是最新的更新。我希望在程序過程中不斷更新它,而不僅僅是當它被移動或拖動時。 –
您可以嘗試MouseInfo.getPointerInfo()的getLocation()。 它將返回鼠標指針相對於屏幕的位置。 更多PointerInfo
示例代碼:
PointerInfo relative = MouseInfo.getPointerInfo();
Point coord = relative.getLocation();
int x = (int) coord.getX();
int y = (int) coord.getY();
我知道,你說你找到你自己的方法,這一點,但只是提供一個解決方案作爲一個答案。
有某種形式的Aimer
class
,這與服用屏幕上Point
並將其轉換爲遊戲的座標系統交易,並給予您MouseListener
只要鼠標移動到更新。這將始終保持鼠標當前屏幕上的Point
,但潛在的轉換到您的遊戲內座標在別處處理。
事情是這樣的:
public class AimingMouseListener extends MouseAdapter {
private final Aimer aimer;
public AimingMouseListener(Aimer aimer) {
super();
this.aimer = aimer;
}
@Override
public void mouseMoved(final MouseEvent e) {
aimer.setCurrentMousePoint(e.getPoint());
}
}
- 1. 如何從鼠標點擊獲得相對x和y位置
- 2. 隨着鼠標不斷更新的舍入位置修復
- 3. JPanel在益智遊戲不更新
- 4. 如何在python 3中找到鼠標的x和y位置?
- 5. 如何設置SKCameraNode相對於節點的位置x和y?
- 6. 獲取相對於元素的鼠標指針的x和y位置
- 7. 如何在每一幀得到相對的JPanel鼠標位置
- 8. 在3D遊戲中的目標的X Yž位置C#X Y窗口關係
- 9. 如何使相對於鼠標位置的標籤位置
- 10. 如何獲得座標相對於鼠標位置的位置?
- 11. 根據鼠標的位置對齊框的x,y位置
- 12. 如何使用changelistener監視鼠標位置x y的更改?
- 13. 基於鼠標的X和Y位置旋轉矩形
- 14. 我如何獲得Javascript Canvas以返回x和y鼠標位置?
- 15. 如何在頁面上的任意位置點擊鼠標X和Y位置?
- 16. Photoshop中鼠標位置的x和y座標
- 17. 獲取鼠標座標不斷,而鼠標移動onmousedown事件
- 18. 遊戲場中的鼠標事件(NSTrackingArea)不起作用
- 19. 如何找到鼠標按鈕'點擊'位置x和y?
- 20. 如何隨着時間不斷創建對象? C++遊戲
- 21. Kineticjs - 如何在更改大小後更新x和y位置
- 22. SharpDX如何讓鼠標在遊戲屏幕上的位置
- 23. 如何獲取TWinControl的X,Y位置(相對於屏幕)
- 24. 相對於原點的鼠標位置
- 25. 鼠標不在遊戲窗口之外更新
- 26. 如何處理從遊戲中不斷更新的數據庫
- 27. JavaScript-將鼠標的X和Y位置存儲在變量中,並在鼠標移動時不斷更新它們
- 28. 在遊戲重新居中前獲取遊標在遊戲中的位置
- 29. 即使點擊另一個控件,我怎樣才能獲得鼠標相對於窗體的X,Y位置?
- 30. 如何使相對股利絕對定位div在x溢價而不是y
肯定有這樣做的方法(實現自己的'MouseListener'存儲在'mouseMoved'事件給一個變量的位置,並提供一個訪問);但我希望聽到更多關於爲什麼需要不斷更新的信息,因爲這聽起來不符合您的描述。 – user2478398
@ user2478398將它描繪成一個小精靈遊戲,玩家總是處於中心位置,但當玩家走路時,玩家周圍的一切都會移動。除了可以拍攝外,我的遊戲看起來很相似子彈去鼠標。如果玩家決定將他的光標放在一個地方而不移動它,並使用箭頭鍵拍攝,則目標系統不起作用,因爲x和y座標是初始點擊時的舊座標。 –