Архив

Публикации с меткой ‘SWF’

Что такое Flex?

18 января 2008 Нет комментариев

Этот вопрос задают многим из разработчиков, когда те предлагают Flex в качестве технологии для решения поставленных задач. И не всякий сможет вот так вот, с ходу, объяснить. В качестве примера хочу привести публикацию Теда Патрика " What is Flex?":

Что такое Flex? Flex - это путь к созданию SWF файлов!

Главное во Flex, это его способность создавать SWF файлы для проигрывания Flash-плеером. Действительно, если опустить все остальные его возможности, то в конечном итоге он нужен для компиляции SWF. Это на самом деле так просто, однако часто наши формулировки выглядят намного труднее. И создается впечатление, что только что-то похожее на Flash может создавать SWF, а Flex тоже может что-то подобное, но совсем другое. 🙂 Читать далее...

Внедрение внешних ресурсов в конечный SWF

28 октября 2007 Нет комментариев

Прочитав статью "Font Embedding in AS3" Майка Джонсона (Mike Johnson) я решил рассказать о том, как создавать и использовать аналоги элементов библиотеки без использования Flash IDE... но обнаружил, что Алексей «Vooparker» Аникутин уже "намусорил" в одном из авторитетнейших для меня блоге - Garbage Collector.

Итак, всем читать статью "Включение файлов в SWF в виде байтовой последовательности".

Использование символов из библиотеки

30 сентября 2007 8 комментариев

Некоторые программисты напрочь отвергают использование Flash IDE за неудобный редактор кода, который на самом деле не очень подходит для написания больших приложений с использованием элементов пользовательского интерфейса (GUI).

Тем не менее рано или поздно каждому программисту приходится работать с SWF файлами ( с так называемым "дизайном", который так не любят программисты 🙂 ), которые были созданы именно во Flash CS3 IDE. И очень часто возникают трудности в работе с такими флэшками из-за их несовместимости с "правильным" кодом.

Итак. Постановка задачи: Нужно создать два символа фигур (квадрат и круг) в библиотеке и назначить им одинаковую модель поведения. То есть любой из этих символов, добавленный на сцену, должен при нажатии на них кнопкой мышки переместиться на передний план и "прилипнуть" к курсору. При отпускании мышки - "отлипнуть" от курсора. Короче говоря, когда посмотрите результат - поймете что я имел в виду 😀

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

  1. package {
  2. import flash.display.MovieClip;
  3. import flash.events.Event;
  4. import flash.events.MouseEvent;
  5.  
  6. class Figure extends MovieClip {
  7. public function Figure() {
  8. addEventListener(MouseEvent.MOUSE_DOWN, StartDrag);
  9. addEventListener(MouseEvent.MOUSE_UP, StopDrag);
  10. }
  11. private function StartDrag(e:Event) {
  12. var trgt = e.target
  13. var mc_parent = trgt.parent
  14. mc_parent.removeChild(trgt)
  15. mc_parent.addChild(trgt)
  16. trgt.startDrag();
  17. }
  18. private function StopDrag(e:Event) {
  19. e.target.stopDrag();
  20. }
  21. }
  22. }

Разберемся по порядку

импортируем необходимые библиотеки:

  1. package {
  2. import flash.display.MovieClip;
  3. import flash.events.Event;
  4. import flash.events.MouseEvent;

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

  1. class Figure extends MovieClip {
  2. public function Figure() {
  3. addEventListener(MouseEvent.MOUSE_DOWN, StartDrag);
  4. addEventListener(MouseEvent.MOUSE_UP, StopDrag);
  5. }

При нажатии левой кнопки мыши вызывается функция StartDrag (не путать с методом startDrag) в которой мувик удаляется со сцены, потом снова добавляется на нее (таким образом перемещается наверх) и включается startDrag()
При отпускании левой кнопки мыши вызывается функция StopDrag

  1. private function StartDrag(e:Event) {
  2. var trgt = e.target
  3. var mc_parent = trgt.parent
  4. mc_parent.removeChild(trgt)
  5. mc_parent.addChild(trgt)
  6. trgt.startDrag();
  7. }
  8. private function StopDrag(e:Event) {
  9. e.target.stopDrag();
  10. }
  11. }
  12. }

Теперь нужно создать два символа и присвоить им класс Figure в роли базового. Для этого рисуем на сцене круг, и превращаем его в символ нажатием клавиши [F8]

Теперь подобным же образом создаем квадрат.

Следующий шаг - создаем базовый класс мувика в котором берем символы из библиотеки и помещаем их на сцену:

  1. package {
  2. import flash.display.Sprite;
  3.  
  4. public class Main extends Sprite {
  5. public function Main() {
  6. var a:Square = new Square();
  7. var b:Circle = new Circle();
  8. addChild(a);
  9. addChild(b);
  10. }
  11. }
  12. }