2013-12-17 2 views
0

포인트 앤 클릭 게임을하고 있으며 일부 버튼으로 장면 사이를 전환하고 싶습니다. 버튼 클래스뿐만 아니라 별도의 클래스에있는 모든 장면을 이미 만들었습니다. 단추 클래스에는 단추를 설정하는 단추와 단추를 가져 오는 단추가 있습니다. 각 장면에는 두 가지 방법이 있습니다. 하나는 배경 이미지를로드하는 방법이고 다른 하나는 버튼, 명소 및 표지와 같은 장면의 모든 기능을로드하는 방법입니다.버튼으로 장면 전환하기

class Button { 
    Button() { } 
     void setButton(float plX, float pmX, float plY, float pmY, float iX, float iY) { 
      this.poslX= plX; 
      this.posmX = pmX; 
      this.poslY = plY; 
      this.posmY = pmY; 
      this.imgX = iX; 
      this.imgY = iY; 
      } 


     boolean getButton() { 
      if(mouseX > plX && mouseX < pmX && mouseY > plY && mouseY < pmY) { 
      image(img, pX, pY); 
      if(mousePressed) { 
       click = true; 
      } 
      } 
      else { 
      image(imgH, pX, pY); 
      clicked = false; 
      } 
      return clicked; 
     } 
} 

mainScene()이라는 메서드에서 모든 단추를 호출합니다.

class SceneOne { 
     SceneOne() { // some images go here } 

void mainScene() { 
     button.setClickableArea(1125, 1125 + 164, 60, 60 + 165, 1125, 60); 
     button.getClickableArea(); 

     button.setClickableArea(1125, 1125 + 164, 500, 500 + 165, 1125, 500); 
     button.getClickableArea(); 
     } 
} 

또한 모든 장면과 스위칭 로직을 포함해야하는 Stages 클래스가 있습니다. 나는 gameStart()라는 draw()에 하나의 메소드를 넣을 계획이었습니다. 질문은 버튼을 특정 장면으로 전환시키는 방법입니다.

감사

+0

그들 사이에 당신이 draw() 또는 gameStart() 기능 스위치를 (scene 글로벌 부울 변수이어야 함). 버튼을 그리는 구성 요소의 MouseMotionListener와 결합하면 마우스가하는 일에 대해 필요한 모든 정보를 얻을 수 있습니다. –

+0

예, ActionListener를 만들고 단추에 첨부합니다. 여기에 문서가 있습니다. http://docs.oracle.com/javase/7/docs/api/java/awt/event/ActionListener.html – Corjava

+0

작동 방식을 볼 수 있도록 일부 코드를 게시 할 수 있습니까? 이것은 실제로 java가 아니지만 처리는 java를 기반으로합니다. 단추 클래스가 있지만 메서드를 전달하는 방법을 모르므로 단추를 클릭하면 해당 장면/메서드가 트리거됩니다. 또한 mousePressed는 정확히 말합니다. –

답변

0

처리 언어가 마우스 청취자에 대한 기능을 내장하고있다, 그래서 당신은 당신의 코드에 이런 식으로 뭔가를 추가해야합니다.

void mousePressed() { 
    if(button.getButton()) { 
    //here you somehow store information which scene you want to draw ... e.g. 
    scene = !scene; 
    } 
} 

와의 MouseListener를 사용

draw() { 
    if(scene){ 
    //draw first scene 
    }else{ 
    //draw second scene 
    } 
}