2017-10-16 1 views
0

저는 비디오 게임 제작에 착수했습니다. 버튼을 클릭하고 다음 화면으로 이동하면 사라지 길 원합니다. html과 js 파일을 통해 버튼의 기능을 설정할 수 있지만 클릭 한 번 사라지게하는 방법을 모르겠습니다.자바 스크립트를 통해 클릭하면 HTML 버튼이 사라집니다.

내 HTML 코드 :

여기
<html> 
<head> 
<title> Pong </title> 
<link type = "text/css" href = "main.css" rel = "stylesheet"> 
</head> 
<canvas id="gameCanvas" width="1350" height="600"></canvas> 
<body> 
<button id = 'easy_click' onclick="EasyChange()"> Easy </button> 
<button id = 'int_change' onclick="intChange()"> Intermediate </button> 
<button id = "hard_change" onclick="hardChange()"> Hard </button> 
</body> 
<script src = "functions.js"></script> 

</html> 

내 JS 코드 :

var canvas; 
var canvasContext; 
var ballX = 50; 
var ballY = 50; 
var ballSpeedX = 20; 
var ballSpeedY = 10 
var menuScreen = false; 
var name = "Developed by Jonah Johnson"; 
var player1Score = 0; 
var player2Score = 0; 
const WINNING_SCORE = 10; 
var easybutton = "Easy"; 
var hardButton = "Hard"; 
var intButton = "Intermediate"; 
var diffLevelEasy = false; 
var diffLevelMedium = true; 
var diffLevelHard = false; 
var showingWinScreen = true; 

var paddle1Y = 250; 
var paddle2Y = 250; 
const PADDLE_THICKNESS = 10; 
const PADDLE_HEIGHT = 100; 

function calculateMousePos(evt) { 
    var rect = canvas.getBoundingClientRect(); 
    var root = document.documentElement; 
    var mouseX = evt.clientX - rect.left - root.scrollLeft; 
    var mouseY = evt.clientY - rect.top - root.scrollTop; 
    return { 
     x:mouseX, 
     y:mouseY 
    }; 
} 

//changing of difficulty 
//easy changing 
function EasyChange() { 
    diffLevelEasy = true; 
    diffLevelMedium = false; 
    diffLevelHard = false; 
    showingWinScreen = false; 
} 

function intChange() { 
    diffLevelEasy = false; 
    diffLevelMedium = true; 
    diffLevelHard = false; 
    showingWinScreen = false; 

} 

function hardChange() { 
    diffLevelEasy = false; 
    diffLevelMedium = false; 
    diffLevelHard = true; 
    showingWinScreen = false; 
} 

function handleMouseClick(evt) { 
    if(showingWinScreen) { 
     player1Score = 0; 
     player2Score = 0; 
     showingWinScreen = false; 
    } 
} 
// getting an easy medium 
function handleMouseClick(evt) { 
    if(easybutton) { 
     diffLevelEasy = true; 
     diffLevelMedium = false; 
     diffLevelHard = false; 
     showingWinScreen = false; 
    } 
} 
//getting medium 
function handleMouseClick(evt) { 
    if(intButton) { 
     diffLevelEasy = false; 
     diffLevelMedium = true; 
     diffLevelHard = false; 
     showingWinScreen = false; 

    } 
} 
//getting hard 
function handleMouseClick(evt) { 
    if(hardButton) { 
     diffLevelEasy = false; 
     diffLevelMedium = false; 
     diffLevelHard = true; 
     showingWinScreen = false; 
    } 
} 


window.onload = function() { 
    canvas = document.getElementById('gameCanvas'); 
    canvasContext = canvas.getContext('2d'); 

    var framesPerSecond = 30; 
    setInterval(function() { 
      moveEverything(); 
      drawEverything(); 
     }, 1000/framesPerSecond); 

    canvas.addEventListener('mousedown', handleMouseClick); 

    canvas.addEventListener('mousemove', 
     function(evt) { 
      var mousePos = calculateMousePos(evt); 
      paddle1Y = mousePos.y - (PADDLE_HEIGHT/2); 
     }); 
} 

function ballReset() { 
    if(player1Score >= WINNING_SCORE || 
     player2Score >= WINNING_SCORE) { 

     showingWinScreen = true; 

    } 

    ballSpeedX = -ballSpeedX; 
    ballX = canvas.width/2; 
    ballY = canvas.height/2; 
} 

function computerMovement() { 
    /// ai movement 
    //easy 
    if(diffLevelEasy === true) { 
    var paddle2YCenter = paddle2Y + (PADDLE_HEIGHT/2); 
    if(paddle2YCenter < ballY - 35) { 
     paddle2Y = paddle2Y + 2; 
    } else if(paddle2YCenter > ballY + 35) { 
     paddle2Y = paddle2Y - 2; 
    } 
} 
    //medium 
    else if(diffLevelMedium === true) { 
    var paddle2YCenter = paddle2Y + (PADDLE_HEIGHT/2); 
    if(paddle2YCenter < ballY - 35) { 
     paddle2Y = paddle2Y + 12; 
    } else if(paddle2YCenter > ballY + 35) { 
     paddle2Y = paddle2Y - 12; 
    } 
} 
    //hard 
    else if(diffLevelHard === true) { 
    var paddle2YCenter = paddle2Y + (PADDLE_HEIGHT/2); 
    if(paddle2YCenter < ballY - 35) { 
     paddle2Y = paddle2Y + 18; 
    } else if(paddle2YCenter > ballY + 35) { 
     paddle2Y = paddle2Y - 18; 
    } 
    } 
} 


function moveEverything() { 
    if(showingWinScreen) {       //showing win screen 
     return; 
    } 

    computerMovement(); 

    ballX = ballX + ballSpeedX; 
    ballY = ballY + ballSpeedY; 

    if(ballX < 0) { 
     if(ballY > paddle1Y && 
      ballY < paddle1Y+PADDLE_HEIGHT) { 
      ballSpeedX = -ballSpeedX; 

      var deltaY = ballY 
        -(paddle1Y+PADDLE_HEIGHT/2); 
      ballSpeedY = deltaY * 0.35; 
     } else { 
      player2Score++; // must be BEFORE ballReset() 
      ballReset(); 
     } 
    } 
    if(ballX > canvas.width) { 
     if(ballY > paddle2Y && 
      ballY < paddle2Y+PADDLE_HEIGHT) { 
      ballSpeedX = -ballSpeedX; 

      var deltaY = ballY 
        -(paddle2Y+PADDLE_HEIGHT/2); 
      ballSpeedY = deltaY * 0.35; 
     } else { 
      player1Score++; // must be BEFORE ballReset() 
      ballReset();  
     } 
    } 
    if(ballY < 0) { 
     ballSpeedY = -ballSpeedY; 
    } 
    if(ballY > canvas.height) { 
     ballSpeedY = -ballSpeedY; 
    } 
} 

function drawNet() { 
    for(var i=0;i<canvas.height;i+=40) { 
     colorRect(canvas.width/2-1,i,2,20,'white'); 
    } 
} 

function drawEverything() { 
    // next line blanks out the screen with black 
    colorRect(0,0,canvas.width,canvas.height,'black'); 


    if(showingWinScreen) { 
     canvasContext.fillStyle = 'white'; 

     if(player1Score >= WINNING_SCORE) { 
      canvasContext.fillText("Left Player Won", 350, 200); 
     } else if(player2Score >= WINNING_SCORE) { 
      canvasContext.fillText("Right Player Won", 350, 200); 
     } 

     canvasContext.fillText("click to continue", 350, 500); 
     canvasContext.fillText("Difficulty:", 50, 50); 
     canvasContext.fillText(easybutton, 50, 100); 
     canvasContext.fillText(intButton, 50, 200); 
     canvasContext.fillText(hardButton, 50, 300); 
     return; 
    } 

    drawNet(); 

    // this is left player paddle 
    colorRect(0,paddle1Y,PADDLE_THICKNESS,PADDLE_HEIGHT,'white'); 

    // this is right computer paddle 
    colorRect(canvas.width-PADDLE_THICKNESS,paddle2Y,PADDLE_THICKNESS,PADDLE_HEIGHT,'white'); 

    // next line draws the ball 
    colorCircle(ballX, ballY, 10, 'white'); 

    canvasContext.fillText(player1Score, 100, 100); 
    canvasContext.fillText(player2Score, canvas.width-100, 100); 
    canvasContext.fillText(name, 100, 590); 
} 

function colorCircle(centerX, centerY, radius, drawColor) { 
    canvasContext.fillStyle = drawColor; 
    canvasContext.beginPath(); 
    canvasContext.arc(centerX, centerY, radius, 0,Math.PI*2,true); 
    canvasContext.fill(); 
} 

function colorRect(leftX,topY, width,height, drawColor) { 
    canvasContext.fillStyle = drawColor; 
    canvasContext.fillRect(leftX,topY, width,height); 
} 
//sets how hard the game is 
if(diffLevel = diffLevelEasy) { 
var paddle2YCenter = paddle2Y + (PADDLE_HEIGHT/2); 
    if(paddle2YCenter < ballY - 35) { 
     paddle2Y = paddle2Y + 2; 
    } else if(paddle2YCenter > ballY + 35) { 
     paddle2Y = paddle2Y - 2; 
    } 
} 

난 그냥 클릭하면 버튼을 삭제하기 위해 노력하고, 내가 그걸 어떻게해야합니까 그래서?

+0

CSS를 숨기도록 설정 했습니까? – epascarello

답변

0

evt.target.remove()으로 전화하면 DOM에서 제거됩니다. 웹에서이 찾을 수

1

내가 이벤트 핸들러에 인수로 버튼을 보내는 것, 그것은

<input type="button" id="toggler" value="Toggler" onClick="action();" /> 
 
<input type="button" id="togglee" value="Togglee" /> 
 

 
<script> 
 
    var hidden = false; 
 
    function action() { 
 
     hidden = !hidden; 
 
     if(hidden) { 
 
      document.getElementById('togglee').style.visibility = 'hidden'; 
 
     } else { 
 
      document.getElementById('togglee').style.visibility = 'visible'; 
 
     } 
 
    } 
 
</script>

0

향후 확장 성 및 아마, 유지 보수 및 최소 코드 변경을 시도 :

<button id = 'easy_click' onclick="EasyChange(this)"> Easy </button> 
<button id = 'int_change' onclick="intChange(this)"> Intermediate </button> 
<button id = "hard_change" onclick="hardChange(this)"> Hard </button> 

그런 다음 핸들러 함수에 스타일을 설정합니다

DOM을 사용에 대해 점프 중지, 또는

btn.style.display='none'; 

:

function EasyChange(btn) { 
    diffLevelEasy = true; 
    diffLevelMedium = false; 
    diffLevelHard = false; 
    showingWinScreen = false; 
    btn.style.display='none'; 

} 

function intChange(btn) { 
    diffLevelEasy = false; 
    diffLevelMedium = true; 
    diffLevelHard = false; 
    showingWinScreen = false; 
btn.style.display='none'; 
} 

function hardChange(btn) { 
    diffLevelEasy = false; 
    diffLevelMedium = false; 
    diffLevelHard = true; 
    showingWinScreen = false; 
    btn.style.display='none'; 
} 

버튼 사용을 복원하려면

btn.style.visibility='hidden'; 

하고 또한

btn.style.visibility='visible'; 

이 알려 때 웹 폰이 굉장한 소리를 내기 때문에 출판 된 곳입니다.

+0

http://newpong.000webhostapp.com/ –

+0

소리처럼 굉장합니다. 내 아침에 간다. – sanepete

관련 문제