Рисование дуги в сценарии Java, но оно не отображается - PullRequest
0 голосов
/ 20 марта 2012

Я работаю над простым проектом html / js, чтобы заставить коробку двигаться на холсте, которая может стрелять мячом. Я получил движение коробки, но я не могу заставить мяч появиться. Программа делает это с функциями drawBall () и moveBall () (протестировано с использованием предупреждений), но они ничего не делают. Я работал над этим в последний час и так, и я просто не могу заставить его работать. Вот мой код JavaScript, который перемещает прямоугольник и должен рисовать шарик всякий раз, когда пробел отпущен.

function init() {
//canvas = document.getElementById('canvas');
context = $('#canvas')[0].getContext('2d');
WIDTH = $('#canvas').width();
HEIGHT = $('#canvas').height();
block_x = WIDTH / 2;
block_y = HEIGHT / 2;
setInterval('draw()', 25);
}

function clearCanvas() {
  context.clearRect(0,0,WIDTH,HEIGHT);
}

function draw() {
  clearCanvas();
  if(shotBall)
  {
        drawBall();
        moveBall();
  }
  if (rightKey) block_x += 5;
  else if (leftKey) block_x -= 5;
  if (upKey) block_y -= 5;
  else if (downKey) block_y += 5;
  if (block_x <= 0) block_x = 0;
  if ((block_x + block_w) >= WIDTH) block_x = WIDTH - block_w;
  if (block_y <= 0) block_y = 0;
  if ((block_y + block_h) >= HEIGHT) block_y = HEIGHT - block_h;
  context.fillRect(block_x, block_y, block_w, block_h);
 }

function drawBall() {
         context.beginPath();
     context.arc(ball_x, ball_y, ball_radius, 0, Math.PI * 2, false);
}

function moveBall() {
    ball_y += 1;
    ball_x -= 1;
}

function onKeyDown(evt) {
  if (evt.keyCode == 68) rightKey = true;
  else if (evt.keyCode == 65) leftKey = true;
  if (evt.keyCode == 87) upKey = true;
  else if (evt.keyCode == 83) downKey = true;
}

function onKeyUp(evt) {
  if (evt.keyCode == 68) rightKey = false;
  else if (evt.keyCode == 65) leftKey = false;
  if (evt.keyCode == 87) upKey = false;
  else if (evt.keyCode == 83) downKey = false;
  if(evt.keyCode == 32) createBall();
}

function createBall() 
{
        ball_x = block_x + (block_w / 2); 
        ball_y = block_y + (block_y / 2);
    radius = 20;
    shotBall = true;
}
$(document).keydown(onKeyDown);
$(document).keyup(onKeyUp);

1 Ответ

1 голос
/ 21 марта 2012

Когда я попробовал ваш код, проблема, которую я вижу, заключается в том, что вы не инициализировали переменные block_w , block_h и ball_radius , посколькуэти значения кажутся неопределенными, как я вижу в инструменте firebug.

Поэтому вы должны убедиться, что вы определили и инициализировали каждую переменную, которую вы используете.Также вы должны убедиться, что вы вызываете каждую функцию, которую вы определили.

Когда я помещаю значения вручную в context.arc (23, 34, 45, 0, Math.PI * 2, false);функция, то это работает нормально для меня.Поэтому убедитесь, что вы определили и инициализировали каждую переменную.

...