2016-07-30 3 views
1

Я пытаюсь создать объекты в своем обновлении и переместить их. Это мой банан объект:Как создавать объекты во время выполнения и перемещать их?

function Banana() { 
    this.height = 1.96; 
    this.width = 3.955; 
    this.pos_x = CENTER - this.width/2; 
    this.pos_y = -475; 
    this.banana_image = banana_image; 
}; 

И это метод Move:

Banana.prototype.move = function(){ 
    if (this.pos_y > 500) { 
     //this.banana_image.parentElement.removeChild(this.banana_image); 
    } 
    this.height += ZOOM_RATE; 
    this.width += ZOOM_RATE; 
    this.pos_y += 3; 
    this.pos_x -= SIDES_RATE; 
}; 

Это игра Обновление части:

Game.update = function() { 

     this.player.move(); 

     //creating bananas 
     if (objs.lenght <= 0) { 
      this.banana = new Banana(); 
     } else { 
      for (i = 0; i < 10; i++) { 
       objs.push(new Banana()); 
      } 
     } 

     //moving bananas 
     for (i = 0; i < objs.lenght; i++) { 
      this.objs[0].move(); 
     } 


}; 

игры Draw:

function Game.draw = function() { 
    this.context.drawImage(road, 0,0, rw, rh); 
    this.context.drawImage(
     this.player.player_image, 
     this.player.pos_x, this.player.pos_y, 
     this.player.width, this.player.height); 
    this.context.drawImage(
     this.banana.banana_image, 
     this.banana.pos_x, this.banana.pos_y, 
     this.banana.width, this.banana.height); 
}; 

Я попытался спросить об этом несколько человек, но я не может найти ответа на него.

+0

У вас есть опечатки в 'update' - должно быть' length'. Где ваш цикл анимации? – markE

+0

У меня есть функция ничьей 'Game.draw = function() { \t this.context.drawImage (дорога, 0,0, rw, rh); this.context.drawImage (this.player.player_image, \t \t \t \t \t \t this.player.pos_x, \t \t \t \t \t \t this.player.pos_y, \t \t \t \t \t \t this.player .width, \t \t \t \t \t \t этот.player.height); этот.контекст.drawImage (это.banana.banana_image, \t \t \t \t \t \t this.banana.pos_x, \t \t \t \t \t \t this.banana.pos_y, \t \t \t \t \t \t this.banana.width, \t \t \t \t \t \t это. banana.height); }; ' –

+0

У вас должен быть цикл анимации, чтобы« переместить »ваши игровые элементы. Вот несколько [Документация] (http://stackoverflow.com/documentation/html5-canvas/1892/introduction-to-html5-canvas/11659/detecting-mouse-position-on-the-canvas), показывающая, как использовать цикл анимации. – markE

ответ

1

Предположим, вы хотите переместить объекты 10 раз, а затем остановиться.

Прежде всего, необходимо добавить строку в начало Game.draw, так что она очищает холст делает вас всегда начать рисовать с нуля:

this.context.clearRect(0,0,500,500); // clear canvas, adjust box size if needed 

Затем сделать функцию для вызова как update и draw, и очереди, что функция будет вызвана снова:

var count = 10; 

function updateAndDraw() { 
    Game.update(); 
    Game.draw(); 
    count--; 
    if (count) requestAnimationFrame(updateAndDraw); 
} 

// start moving: 
requestAnimationFrame(updateAndDraw); 

движение может идти слишком быстро по своему вкусу, поэтому затем настроить метод move сделать небольшие изменения, или использовать setTimeout вместо requestAnimationFrame (но это сделает анимацию менее свободной).

Обратите внимание, что у вас есть несколько ошибок в коде, который вам нужно будет исправить первое:

  • lenght должен быть length
  • function Game.draw = function() {: удалить function перед тем Game.draw.
  • ... проверьте сообщения об ошибках, которые вы получаете в консоли.
Смежные вопросы