16 сентября 2010

Добро пожаловать на DelphiFlash.com за новыми статьями

Дорогие читатели! Статьи о Delphi + Flash теперь вы также сможете найти на сайте delphiflash.com. В разделе статей на delphiflash.com вы найдёте как новые статьи, так и другую полезную информацию о технологиях Delphi + Flash. Ваши комментарии к статьям на сайте приветствуются!

05 декабря 2008

Визуальные объекты

Flash технология поддерживает ряд встроенных визуальных объектов, но количество разновидностей ограничено, поэтому в большинстве случаев нужные элементы, например Graphics User Interface, создаются путем комбинирования нескольких "стандартный" объектов. Все стандартные объекты определяются в DefineXXX. К основным визуальным объектам можно отнести: Фигура (Shape), Морфируемая фигура (MorphShape), Статический Текст (Static Text), Динамический текст (Dynamic Text), Кнопка (Button), Видео (Video) и Спрайт (Sprite).


Обратите внимание, что нет объекта Изображение (Image). Чтобы отобразить изображение его необходимо использовать в качестве заливки для прямоугольной фигуры.


Уникальный идентификатор CharacterID


Каждый визуальный объект имеет свой уникальный CharacterID – число типа word , т.е. значение в диапазоне 0..$FFFF. Если вы самостоятельно создаете объекты, то должны позаботится о его уникальности. Уникальность необходима для того, чтобы плеер однозначно понимал какой объект использовать при обработке tagPlaceObject.


Когда необходимо «склеить» несколько SWF, то первая задача состоит в том, что необходимо обеспечить уникальность этих CharacterID, в противном случае некоторые объекты просто не будут отображаться. Для этого необходимо переопределить все значения в одной из SWF путем изменения значений на заведомо незанятое значение.


Имена объектов


Как я отмечал ранее, имя назначается экземпляру объекта в tagPlaceObject при этом указание CharacterID обязательно. Можно создать несколько экземпляров одного объекта с разными именами. Опять таки, при склеивании двух SWF необходимо обеспечить уникальность имен. Имена как правило используются в ActionScript для управления этими экземплярами, поэтому в случае переименования объектов необходимо сделать соответствующие корректировки в ActionScript.

16 ноября 2008

Кадр, сцена или список отображения

Как я отмечал ранее, отображение происходит когда в SWF встречается тэг ShowFrame. Для того, чтобы отобразить какой либо визуальный объект его сперва нужно описать (тэги с названиями DefineXXX), а затем поместить на нужную глубину при помощи тэгов PlaceObject. Размещать объект можно многократно, таким образом получается эффект клонирования. В зависимости от параметров тэга PlaceObject экземпляры (instance) визуального объекта могут выглядеть совершенно по разному. Отображаются экземпляры, до тех пор, пока не будут принудительно удалены тэгом RemoveObject. Это позволяет определять, размещать и удалять экземпляры объектов в разных кадрах.



Глядя на эту схему можно ответить на вопрос, какие объекты отображаются в определенном кадре - нужно составить список из всех PlaceObject, которые были до текущего кадра и убрать из этого списка те, какие были удалены тэгом RemoveObject. Нужно также учесть, что PlaceObject может иметь флаг PlaceFlagMove который указывает что занятую глубину нужно очистить, т.е. это аналог RemoveObject в одном тэге.


Обзор PlaceObject

Основной тэг, который используется при указании какой объект, где и как должен отображаться. По мере развития SWF формата в этот тэг добавлялись дополнительные параметры и сейчас существует три "редакции": tagPlaceObject, tagPlaceObject2 и tagPlaceObject3.


Основные параметры:


  • Depth - глубина, на которую помещается объект. Чем больше значение, тем «выше» изображение. Поскольку для этого параметра отводится 2 байта, то максимальное значение 65535. Для корректного отображение на глубине не должно быть других объектов, в противном случае нужно установить флаг PlaceFlagMove в true.
  • CharacterId - Идентификатор существующего объекта.
  • Name - имя экземпляра объекта. Имя может использоваться в ActionScript для программирования анимации и интерактивности.
  • Matrix - группа параметров для геометрической трансформации. Сюда входят TranslateX и TranslateY для указания положения (ноль в левом верхнем углу), ScaleX и ScaleY для уменьшения или увеличения, SkewX и SkewY для скоса и поворотов.
  • ColorTransform - группа параметров для цветовой трансформации. Сюда входят addR, addG, addB и addA для изменения цветовых составляющих путем добавления заданных величин, multR, multG, multB и multA для изменения цветовых составляющих путем умножения на заданные величины.

Устанавливая разные параметры в разных кадрах мы получаем анимацию. Например, изменяя значения Translate создается движение. Изменяя addA или multA создается эффект появления или исчезновения.