Динамическая подгрузка графики (не http)

govnoproger.ru > as3 > Динамическая подгрузка графики (не http)

схема

схема

Легенда:
Предположим вашей целью стоит написание игрушки с горизонтальной в нашем примере или вертикальной прокруткой (или обе типа платформер).

Ну то-есть уровень длинный, все не влезет на экране и тп.
Дело в том что если делать решение в лоб, а это — у всех объектов сделан addchild и они просто за пределами видимости. В таком случае рано или поздно будут тормоза, хотя их меньше заметит тот, у кого мощный процессор.

Возможно вы часто сталкивались с тем, что один человек пишет что дико тормозит — а у другого более менее нормально.

Предел видимости в нашем случае это красная рамка.
Для танкистов — предел видимости это размер нашей stage. То-есть ширина и высота.

В примере мы рассматриваем именно горизонтальную прокрутку, так как остальные делаются аналогично.

Как я уже писал выше нет смысла всем объектам делать addchild, мы все-равно их не видим!
Дак почему бы не отобразить именно те объекты, которые видны игроку?

Для этого делается массив, в котором находятся наши классы, все видимые на данный момент объекты в игре.
Важно что наши классы не наследуются от мувиклипа или от спрайта. Это просто не имеет смысла.

Вот упрощённый пример класса танк:

import bla-bla-bla
class tank
{
	public var posX:Number;
	public var posY:Number;
	
	public var graph:что-то; // ссылка на графику
}

Дальше схема понятна сама по себе. Когда объект (круг) начинает попадать (зелёная рамка) в область видимости, мы делаем ему addChild (розовый круг).
Когда покидает — удаляем его (removeChild, кружочек чёрного цвета).

Тут есть подводные камни — дело в том что у объектов размер графики разный. Это нужно предусмотреть.

Посмотреть как пашет можно здесь. Скачайте и запустите, но не в браузере.
Дело в том что тут используется кэш и флешку нельзя растягивать.
Я специально сделал 40026 танков, также тут сделано так, чтобы вы заметили глазом подгрузку графики.

Пример будет отлично работать даже на старых селеронах 478,775 сокетов на 1,2 гигагерца, ну или 1,7 если такого нету.

Как вы заметили я не выкладываю код. Думаю что читатель данного раздела выше этого.
Если вы не понимаете -то вам это просто не нужно.

Рекомендую:

21.11.2011 | последняя редакция: 21.11.2011 |