그래서 Blob 모양이있어서 MoveableShape를 구현합니다.두 도형이 만진 사건을 알리는 방법은 무엇입니까? Java
public interface MoveableShape
{
void draw(Graphics2D g2);
void translate(int dx, int dy);
}
Blob의 인스턴스 인 b1이 다른 Blob 인 b2에 도달한다고 가정 해 보겠습니다. 일단 그것이 다른 얼룩을 치면, 나는 그것의 방향을 반대로하고 싶다. 이 신호를 Java에서 어떻게 나타낼까요? 지금까지, 이것이 내가 일반적으로 이동하기 위해 뭘했는지 있습니다 :
Timer t = new Timer(DELAY, new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
b1.translate(1, 0);
label.repaint();
}
});
t.start();
을 그리고 나는 진심으로 오히려이와 그 여섯 번째와 일곱 번째 라인을 교체하는 것보다이 작업을 수행 할 수있는보다 효율적인 방법이 생각 :
b1.translate(speed, 0);
label.repaint();
if(b1.getX()==b2.getX()) { speed = -speed }
모든 세부 사항을 문서화하지 못해 사과드립니다. 그러나 그 내용에 대한 일반적인 요지를 찾아야합니다. 방향을 바꾸기 위해 b1에 사용자 지정 이벤트를 추가 할 수 있습니까? 게다가 ActionListener로이 작업을 수행 할 수 있습니까? 감사.
2D 모양의 실제 충돌 감지가 필요합니까, 아니면 예제에서와 같이 X 좌표를 비교할만큼 충분합니까? 좌표 비교는 분명 훨씬 간단하지만, 방향을 바꾸기 전에 모양이 눈에 띄게 겹칠 수 있습니다. – eaj
@eaj 후자는 괜찮습니다. 내 유일한 문제는 actionPerformed에서 반복적으로 실행되는 상수 if 문입니다. 또한이 클래스에는 .getWidth() 옵션이 있으므로 끝에 겹치지 않을 것입니다. (필자는 그 점을 비교에 포함시키는 것을 잊었습니다). – user977036