Май
2

Flixel обновился

Только сегодня увидел новый облик сайта flixel.org. Также скачал новую версию движка 2.50. До этого работал с версией 2.35. Много изменений внесено, однако. Первое, что сделал — это отправил игру Mindy in Zombieland на модерацию, чтобы её добавили в список игр на сайте, сделанных на flixel. До этого я отправлял 3 письма на емайл, но ответа не получал.

Сейчас сижу, разбираюсь. Вот что пока заметил:

  • Добавлены плагины. Плагины можно писать самому, расширяя класс FlxBasic (тоже новый класс)
  • Добавлена поддержка нескольких камер
  • Можно записывать игровой процесс, мышь, а потом их воспроизводить
  • Метод «render» переименован в «draw»
  • Свойство объекта «fixed» переименовано в «immovable»
  • Метод «createGraphic» переименован в «makeGraphic»
  • Вместо методов hitTop, hitSide, hitBottom введена новая система. Добавлено свойство touching:uint — в нем устанавливаются биты, соответствующие направлению касания (LEFT, RIGHT, UP, DOWN, ANY, NONE, CEILING = UP, FLOOR = DOWN, WALL = LEFT | RIGHT). Чтобы проверить, что произошло касание, нужно вручную вызвать метод «justTouched» (проверить, что объект только что коснулся) или «isTouching» (объект касается) в update () методе. Например, if (isTouching (LEFT)) ...
  • Объектам добавлено свойство «elasticity» — по-умолчанию равно 0 (нулю). Если отлично от 0, то объект при коллизиях будет отскакивать с силой elasticity
  • Добавлена сортировка членов группы по любому параметру (наконец-то можно делать игры с z-сортировкой, как в FlashPunk'e!)
  • Много методов и классов добавлено для дебаггинга
  • Объекты теперь можно двигать по заданному пути
  • В FlxGroup добавлен метод «recycle», позовляющий повторно использовать «убитые» объекты. Пример использования можно увидеть в классе FlxEmitter
  • В FlxGroup ещё есть новые методы: callAll — вызывает одну функцию для всех членов группы, setAll — устанавливает любое свойство всех членов группы. Например, setAll («scrollFactor», new FlxPoint (0,0));
  • buffer типа BitmapData, в который раньше копировались все объекты при рендеринге, из класса FlxG перенесен в класс FlxCamera. Теперь каждая камера имеет свой буфер и делает рендеринг в него
  • В FlxCamera добавлены способы слежения камеры за объектом: STYLE_PLATFORMER (мертвая зона камеры узкая, но высокая), STYLE_TOPDOWN (мертвая зона — квадрат среднего размера вокруг объекта), STYLE_TOPDOWN_TIGHT (мертвая зона — квадрат маленького размера вокруг объекта), STYLE_LOCKON (у камеры нет мертвой зоны). Мертвая зона — это прямоугольная область вокруг объекта слежения, в рамках которой камера будет следовать за объектом.

Как написано на сайте, FlashPunk сделан под впечатлением от Flixel, и теперь Flixel v2.5 сделан с идеями из FlashPunk :)

Вот нашел описание камер на http://flixel.org/features.html:

Наличие множества камер сделано для одновременного слежения за несколькими объектами. По-умолчанию, создается одна камера с размерами окна Flash плеера. Можно заменить эту камеру или добавить еще камер для создания эффектов «разделения экрана» или «картинка в картинке», или даже мини-карт. Каждая камера — это независимый объект с собственным зумом, цветовой гаммой, вращением. И, наконец, каждый объект в игре имеет собственный список камер, поэтому легко можно заставить показывать некоторые объекты только в некоторых камерах.

P.S. Вот вроде разобрался как делать собственный рендеринг в буфер:

Допустим, было так (на примере v2.35):

1
2
3
4
override public function render():void
{
FlxG.buffer.copyPixels(...);
}

В v2.5 будет так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
override public function draw():void
{
if(cameras == null)
cameras = FlxG.cameras;
var camera:FlxCamera;
var i:uint = 0;
var l:uint = cameras.length;
while(i < l)
{
camera = cameras[i++];
if(!onScreen(camera))
continue;
camera.buffer.copyPixels(...);
}
}



Прокомментировать