Увеличьте длину Flash-сцены - PullRequest
0 голосов
/ 10 апреля 2011

Я делаю флэш-игру с боковой прокруткой.Уровень готов, поэтому нет объектов, которые появляются во время выполнения.Сейчас я сделал этот уровень довольно длинным, но в окне редактора он внезапно останавливается.Но в игре он все еще прокручивается.

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

И в игре.enter image description here

Уровень длиннее, чем показано в редакторе.Сначала он просто помещал объект на границе сцены, чтобы увеличить его.Но это больше не будет работать.Как я могу увеличить ширину сцены?Заранее спасибо!:)

1 Ответ

1 голос
/ 10 апреля 2011

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

Для этого есть различные причины, но все сводится к тому, что FlashListList является относительно медленным, поскольку процессы Flash выполняются. Когда вы имеете дело со многими вещами на сцене, Flash должен знать о каждом объекте, и вы получите ужасную производительность, если у вас будет больше, чем нужно.

Но не отчаивайтесь! Есть способы обойти эту проблему.

Первое, что вам нужно знать, - это ограничение для растровых изображений на сцене. Вы можете иметь в своем проекте растровое изображение, которое гораздо больше, если вы не пытаетесь отобразить все сразу.

То, как большинство игровых платформ решают эту проблему, выглядит следующим образом:

1) Вы храните все свои данные изображения за кадром, и вы делаете все свои манипуляции с изображениями и т. Д. Там.

2) В каждом кадре вы используете copyPixels (), чтобы захватить только часть вашего большего изображения, которое появилось бы на сцене. Это означает, что если ваше сценическое представление показывает только, например, 640x480px, то вы просто скопируете часть вашего большего изображения, равную этим размерам.

3) На сцене у вас есть только одно растровое изображение, в которое вы записываете растровые данные из copyPixels () на втором шаге.

Это называется "Блинг", и если это звучит немного сложно, это потому, что это так. Однако, как я уже сказал, многие игровые фреймворки сделают для вас тяжелую работу. Проверьте Flixel или PushButtonEngine, это две самые популярные платформы.

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

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

Удачи!

...