Прокрутка огромного фона на холсте - PullRequest
0 голосов
/ 17 октября 2011

Моя проблема в том, что компания, в которой я работаю, начала давать мне искусство для игры, которую я делаю для них, и у нее огромный мир! Это дало мне огромное фоновое изображение, как 12923x5356 огромного!

Теперь я могу заставить его прокручиваться и работать как фон, но на моем старом компьютере, который является старым ThinkCenter, он работает немного медленно (обратите внимание, что он может запускать только crunchbang и едва ли xp). Смотрите, мы хотим иметь возможность поддерживать планшеты для этого. Это также еще больше усложняет то, что у них есть оверлей, такой же большой.

Прямо сейчас у меня есть только рисование фрагмента размером с холст, поэтому он рисует столько, сколько можно увидеть с помощью

ctx.drawImage(img, x, y, width, height, dx, dy, dwidth, dheight); 

с dx / dy, всегда рисующим в одном и том же месте, и прокруткой x / y с главным героем.

Теперь реально, есть ли способ сделать это быстрее? Другой способ, о котором я могу подумать, - это, возможно, разбить изображение на маленькие куски с помощью getImageData и нарисовать так много, что заполняет экран с помощью ctx.putImageData (img, x, y) . По опыту я почти уверен, что маленькая форма drawImage немного быстрее, чем длинная, но будет ли она намного быстрее?

У кого-нибудь еще есть идеи, которые они могут выстрелить в меня?

1 Ответ

1 голос
/ 17 октября 2011

Вы можете превратить его в меньшие плитки, точно так же, как это делает Google Maps.

Я не уверен, что вы обрабатываете какую-то огромную игровую карту, но техника должна быть такой же.Вы можете разбить карту на маленькие плитки, например, 256px * 256px.Тогда вам нужно только несколько 256px * 256px div, чтобы покрыть область просмотра.Если вместо этого вы используете canvas, это то же самое.Просто визуализируйте те плитки, которые в данный момент отображаются пользователю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...