![](/img/trans.png)
[英]I want to use Robot class in java applet for web browser to move and click mouse
[英]Java Robot class mouse move to position of a specific pixel (Mouse click a color)
如何找到正在更改坐標的顏色的位置,並且在確定后需要單擊該顏色。
該程序的目的是完成游戲中的任務,要求單擊不同的顏色,而這些顏色並不總是在同一位置。
執行程序5秒鍾后,代碼當前獲得鼠標坐標的顏色
public class RobotColorClick
{
public RobotColorClick () throws AWTException, IOException, InterruptedException
{
Robot robot = new Robot();
//Delay 5 seconds
robot.delay(5000);
//Gets color (value of red,green,blue) from the mouse position after 5 seconds
Color color = robot.getPixelColor( MouseInfo.getPointerInfo().getLocation().x
, MouseInfo.getPointerInfo().getLocation().y);
//Delay 3 seconds
robot.delay(3000);
//Mouse moves to X and Y then right click
//Problem! How to set X and Y to position color coordinates, position will change
robot.mouseMove(x, y);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
}
public static void main(String[] args) throws AWTException, IOException,
InterruptedException
{
new RobotColorClick ();
}
}
您很可能需要拍攝屏幕快照圖像,然后從原始位置螺旋出(假設“顏色”沿一條連續路徑而不是跳來跳去),然后將該像素的顏色與所需的顏色進行比較。 確定后,執行mouseMove(newX, newY)
,然后執行mousePress()
/ mouseRelease()
方法。
如果顏色正在繼續,而不是跳來跳去,請閱讀Kevin Mangold的答案,否則,如果只是一種顏色出現在您認為的任何地方,我認為您有2個選擇(如果背景為恆定顏色):
第一個:您可以對屏幕快照進行迭代,獲取任何出現的顏色(或特定顏色)的坐標,然后使用Robot lib將其按下, 這可能會有所幫助, 並且 可以 用來截取屏幕截圖
第二個:如果您不想截屏,可以使用robot lib遍歷屏幕,並使用2個嵌套的for循環遍歷所有屏幕像素, 這可能會有所幫助
如果背景圖像不是恆定的,您可以截取屏幕截圖並將其與上一個屏幕截圖進行比較,使用robot lib壓下差異。
另外 ,在使用robot lib按下按鈕之前,我已經讀過某處內容,最好這樣做robot.mousePress(InputEvent.BUTTON1_MASK); robot.delay(1); robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.mousePress(InputEvent.BUTTON1_MASK); robot.delay(1); robot.mouseRelease(InputEvent.BUTTON1_MASK);
代替這個
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
您可以從軟件中讀取游戲記憶並獲得所需的顏色坐標,這是多余的事情
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.