Показать сообщение отдельно
Старый 26.07.2013, 01:49   #1876
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Кто какую игру делает? Скрины

вот так выглядит основной цикл (в начале программы вызывается функция _step):
var _step = function() {
        
setTimeout(function() {
                if(
_run) {
                    
requestAnimFrame(_step);
                    
_this.step();
                }
            }, 
1000/_fps);
    } 
_fps - это фпс, в данном случае 60
requestAnimFrame - это requestAnimationFrame, только с префиксами:

window.requestAnimFrame = (function(){
  return  
window.requestAnimationFrame       ||
          
window.webkitRequestAnimationFrame ||
          
window.mozRequestAnimationFrame    ||
          
window.oRequestAnimationFrame      ||
          
window.msRequestAnimationFrame;
})(); 

_this.step - функция где всё и происходит (в том числе и рендер)


Сам рендеринг использую крайне просто:
есть несколько тайлсетов (карта, декорации, человек), и рендерю отдельный спрайт из тайлсета с помощью функции ctx.drawImage с 9 параметрами, где ctx - контекст канвы. 1 параметр - тайсет, 2-5 - положение спрайта и размер спрайта на тайлсете, 6-9 - положение и размер спрайта на канвасе. Больше никакие методы из ctx не вызываю (ну кроме отчистки). Мне показалось это наиболее производительным решением. Это так и есть?

Буквально всё разбито по классам, есть несколько слоев абстракций, я написал только саму суть.

есть ли элементы пверх канвы (их ререндер, может вызывать рефлой, и ререндер всей канвы).
не очень понял, но на страничке кроме канваса ничего нет.

Если по ноду и socket.io что нада - говори, я тоже юзаю их и юзал в нескольких проектах.
ок) но пока идет всё гладко, и то и то весьма очень простое, но при этом очень мощное
(Offline)
 
Ответить с цитированием