2017-11-11 1 views
-1

저는이 프로젝트에서 일하고 있는데, 마우스 오른쪽 버튼에 연결된 부울을 가지고 있습니다. 그래서 RMB을 누르면 불리언 값이 참으로 바뀌지 만, 다시 누를 때까지는 거짓으로 바뀌지 않습니다. 부울을 즉시 켜고 끌 수있는 방법이 있습니까? 1 tick 동안 계속 켜져 있고, 다시 돌아 간다. 마우스를 클릭했을 때 즉시 부울을 켜고 끕니까?

VVV 코드는 부울 부울이 켜져되고

VVV에 해당하는 경우 발생하는 즉

if(Component.isMouseRightClicked) { 
    if(block[x][y].id == Tile.underDirt || block[x][y].id == Tile.underDirtRight || block[x][y].id == Tile.underDirtLeft || block[x][y].id == Tile.underDirtTop || block[x][y].id == Tile.underDirtRight || block[x][y].id == Tile.underDirtBottom || block[x][y].id == Tile.underDirtBR || block[x][y].id == Tile.underDirtTR || block[x][y].id == Tile.underDirtTL || block[x][y].id == Tile.underDirtBL) { 
     if(sid != Tile.air) { 
      block[x][y].id = sid; 
     } 
    } 

    if(block[x][y].id == Tile.dirt || block[x][y].id == Tile.sand || block[x][y].id == Tile.stone) { 
     if(sid == Tile.dirt) { 
      block[x][y].id = Tile.dirtWall; 
     } 
     if(sid == Tile.stone) { 
      block[x][y].id = Tile.stoneWall; 
     } 
     if(sid == Tile.sand) { 
      block[x][y].id = Tile.sandWall; 
     } 
    } 
} 

을 VVV (당신이 이해 하듯이 나는 자바 코딩 꽤 신선 해요) (의 mouseClicked) VVV에 의해

여기
public void mouseClicked(MouseEvent e) { 
    if(e.getButton() == MouseEvent.BUTTON3) { 
     Component.isMouseRightClicked = true; 
    } 
} 

그리고()에서 나는 (비참) .. 즉시

을을 해제하려고 시도하는 방법이다
public void mouseReleased(MouseEvent e) { 
    if(e.getButton() == MouseEvent.BUTTON1) { 
     Component.isMouseLeft = false; 
     Level.blockBreakTimer = 0; 
    } else if(e.getButton() == MouseEvent.BUTTON3) { 
     Component.isMouseRight = false; 
     Component.isMouseRightClicked = false; 
     Level.buildTimer = 0; 
    } 
} 

는 (나뿐만 아니라 다른 물건을위한 버튼이,하지만 난 당신이 단지 isMouseRightClicked 볼 필요가 있다고 생각) 정말 감사의 도움을

감사합니다.

+0

스윙 타이머 – MadProgrammer

+0

을 사용하십시오. 마우스 클릭을 '눌렀다 놓을 때'호출되므로 가능한 실수는 마우스 기능을 사용할 수 있습니다. 당신은 mouseclicked 대신에 mousepressed를 시도해야합니다. –

답변

0

아, 죄송합니다. 나는 처음에 당신의 질문에 대해 오해했습니다.

else 문을 중첩하면 끝에서 MouseClicked를 false로 설정하십시오.

if(mouseRclick) { 
    if(block[x][y].isUnder()) { 
     if(sid != Tile.air) { 
      block[x][y].id = sid; 
     } 
    // added "else" 
    } else if(block[x][y].isGround()) { 
     block[x][y].id = toWall(sid); 
    } 
    // Makes sure that it only runs once. 
    mouseRclick = false; 
} 

(지금은 모바일, 그래서 나는 그것을 단축. 당신이 원하는 경우에, 나는 집에 갈 때 나는 그것을 다시 입력 할 수 있지만, 추가 30 + 분을 기다려야 할 것입니다.)

관련 문제