2
라인을 작성하는 방법이 있나요자바 로봇 클래스의 KeyEvent
r.keyPress(KeyEvent.VK_SPACE);
사파리에서 실행되는 HTML 5 게임은 게임 내에서 발생 한 같은 스페이스 바를 눌러 등록 할 수
? (게임 내부에서 "공간"이 물리적으로 눌려진 것처럼 게임이 반응하게됩니다.)
예를 들어, 일부 KeyEvents는 특정 요소의 맨 위에있을 때만 등록되는 것으로 인식합니다. 동일한 코드가 솟다 브라우저에서 실행되는 HTML 5 게임을 실행할 때
import java.awt.Robot;
import java.awt.AWTException;
import java.awt.event.KeyEvent;
public class SpaceBarPress {
SpaceBarPress(){
}
public static void main (String[] args) {
try{
Robot r = new Robot(); //create instance of robot class
r.mouseMove(600,323); //move cursor over top URL bar
r.mousePress(InputEvent.BUTTON1_MASK); //bring URL bar into focus
r.mouseRelease(InputEvent.BUTTON1_MASK);
r.keyPress(KeyEvent.VK_SPACE); //fire spacebar event
r.keyRelease(KeyEvent.VK_SPACE);
}
catch(AWTException e){
e.printStackTrace();
}
}
}
그러나,하는 스페이스 바를 이벤트가 내부 등록되지 않습니다 : 아래의 코드는 성공적으로 사파리의 URL 표시 줄에 스페이스 바를 프레스 이벤트를 등록합니다 게임. 반면에 실제 스페이스 바를 누르면 게임에 영향을 미칩니다.
브라우저 창을 클릭하는 데 왜 URL 막대를 클릭해야합니까? 실제 브라우저의 캔버스를 클릭하지 않는 이유는 무엇입니까? – Skyler
@Skyler 브라우저에 초점을 맞추는 데 어떤 문제도 없습니다. 문제는 스페이스 바 이벤트를 시작하려고 할 때 발생합니다. 스페이스 바 이벤트는 URL 표시 줄에 포커스가있을 때 작동하지만 브라우저에서 실행중인 html 5 게임 창에 집중할 때 작동하지 않습니다. –