2010-04-18 3 views
4

Я только начал играть с холстом HTML5-объекта. Для тестов производительности я сделал немного ping pong game.HTML 5 Производительность холста

Есть ли улучшения в производительности, которые я мог бы использовать?

Мяч кажется голубым с оттенком красного, но моя декларация должна быть желтой. Как я могу это исправить?

+4

Не могли бы вы заявить, что в качестве вопроса, пожалуйста? Какую проблему вы конкретно пытаетесь решить? – Robusto

+0

+1 для скрипта – yassin

+0

Я пытаюсь заполнить свой шар желтым цветом, но он как-то становится синим - точно так же, как весло ... – Vilius

ответ

4

Это должно помочь вам с цветом шарика;

function drawBall (x, y, r) { 
    ctx.beginPath(); 
    ctx.fillStyle = "yellow"; 
    ctx.arc(x, y, r, 0, Math.PI*2, false); 
    ctx.closePath(); 
    ctx.fill(); //added 
    fps++; 
} 

function drawP1 (h) { 
    ctx.fillStyle = '#FF0000'; 
    ctx.fillRect(0, h, 20, 100); 
    //ctx.fill(); // remove in P2 also 
    fps++; 
    return true; 
}; 

заполнения() не применяется к FillRect(), последний рисунок, заполненный rectagle и заполнить(), чтобы заполнить трактов.

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

  • FillStyle/StrokeStyle звонки стоят дорого, избегать переключения цветов.
  • рисунок сложных форм тоже дорог. Вы можете сделать то и использовать пиксельный API, чтобы сделать их
  • попытаться сохранить рендеринг и обработки разделены, это даст вам пространство для улучшений
  • попробовать использовать чистые JS для высоких FPS игр/анимации

Как сказано, очень общие советы и, возможно, не подходят для каждого случая.

+0

Просто попробовал - но никакой разницы. И, как сказано на главной странице mozilla: «Примечание: при вызове метода заполнения любые открытые формы будут автоматически закрыты, и нет необходимости использовать метод closePath». - Я просто не понимаю, почему он не работает – Vilius

+0

--- Редактировать: спасибо за полезные подсказки – Vilius

+0

Хмм, попробовал сам и не работает для меня. Невозможно найти проблему. – elias