Интерфейс Macromedia Flash




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

Рис.1. Вид окна Macromedia Flash

При открытии окна приложения Flash на экране появляются следующие элементы интерфейса:

o Stage (рабочий стол) — область для компоновки отдельных кадров, создания композиции из графических элементов или импортированных точечных изображений и просмотра результатов анимации;

o Timeline (ось времени) — окно, содержащее список отдельных слоев с расположенными на них графическими объектами и их распределением во времени (на оси времени отмечен каждый кадр фильма);

o Symbols (символы) — основные элементы фильма, как правило, многократно в нем используемые;

o Library (библиотека) — окно со списком символов и импортированных файлов, позволяющее выполнять их организацию и сортировку;

o Floating, dockable panels (пристыковываемые панели) — окна с набором вкладок, служащие для настройки приложения и изменения параметров элементов фильма;

o Movie Explorer (обозреватель фильма) — дополнительно вызываемое окно для просмотра структуры фильма.

На рабочем столе отображается композиция того кадра, который отмечен Указателем текущего кадра (Playhead) в окне Timeline(Ось времени). Представленные в окне Timeline (Ось времени) слои (Layers) можно рассматривать как стопку прозрачных пленок, содержащих графические элементы. Комбинируя эти пленки между собой, можно создать общую композицию кадра. Переходя от кадра к кадру, можно изменять композицию, отдельно управляя каждым элементом в слое и редактируя его.

Рис.2. Ось времени с набором слоев

На рис. 2 цифрами отмечены следующие элементы управления окна Timeline (Ось времени):

7. Указатель текущего кадра (Playhead).

8. Линейка времени (Timeline header).

9. Кнопка раскрывающегося меню Frame View.

10. Кнопка Center Frame.

11. Кнопки режима Onion Skin.

12. Указатель номера выделенного кадра.

13. Значение частоты кадров (Frame rate).

14. Слой направляющей Guide Layer.

15. Пустой ключевой кадр (Empty keyframe).

16. Покадровая анимация (Frame by frame Animation).

17. Анимация с расчетом кадров (Tweened Animation).

Symbols (символы) — это многократно используемые элементы фильма. Ими могут быть кнопки, графика, шрифты, звуки, видеоклипы и т. п. Помещая символ на рабочий стол, создают экземпляр этого символа. Для любого элемента, появляющегося в фильме более одного раза, символы позволяют получить более компактный результирующий файл. Изменение символа влияет на все его экземпляры, но редактирование экземпляра не отражается на свойствах породившего его символа. Символы можно редактировать как непосредственно в области Stage (на рабочем столе), так и в отдельном окне. При редактировании одного символа на рабочем столе все остальные элементы остаются видимыми, но недоступными для редактирования. На оси времени остается при этом только слой, соответствующий редактируемому символу. Символы играют важную роль в создании интерактивных фильмов Flash. Так, символ кнопки может менять свой вид при наведении на него указателя мыши либо в зависимости от того, в каком месте рабочего стола будет помещен его экземпляр.

Рис. 3. Окно библиотеки

Library (библиотека) — это место хранения и организации в группы символов, а также импортированных файлов, включая звуковые и видеофайлы. Кроме того, в ней указываются характеристики символа, например сколько раз данный символ использован в фильме. Требуемый символ можно просто перетащить из окна библиотеки на рабочий стол, при этом будет создан экземпляр символа, наследующий все его свойства.

Рис. 4. Панель Info с характеристиками фигуры

Dockable panels (панели) позволяют не только просматривать, организовывать и модифицировать элементы фильма, но и задавать параметры или применять команды к каждому типу элементов. Панели можно показывать или скрывать, создавая пользовательский вариант интерфейса.

Начало работы над фильмом

Каждый раз при открытии приложения Flash создается новый файл с расширением FLA. При этом для задания таких свойств фильма, как размер, частота кадров, цвет фона и т. п. используется диалоговое окно Movie Properties (Свойства фильма).

Если окно приложения Flash уже открыто, то, чтобы начать новый фильм, следует выбрать команду File > New (Файл > Создать). Выбирая затем команду Modify > Movie (Изменить > Фильм), открываем окно Movie Properties (Свойства фильма). В поле Frame Rate (Частота кадров) этого окна задается число кадров в секунду (для Web-страниц обычно выбирают значения от 8 до 12). В полях Width (Ширина) и Height (Высота) — размер в пикселах по горизонтали и вертикали (минимально возможный равен 18 х 18, а максимальный — 2880 х 2880). Кнопки Contents (Содержание) и Printer(Принтер) служат для согласования размера рабочего стола с его содержимым или областью печати на заданном формате бумаги

 

2. Форматы звука, поддерживаемые Flash.

Формат MP3

Формат MP3 был создан для распространения музыкальных файлов, сжатых кодеком MPEG 1 level 3. В настоящее время — самый популярный формат распространения музыки через Интернет, и не только. Поддерживается абсолютно всеми программами записи и обработки звука, за исключением некоторых узкоспециализированных.

Файл этого формата имеет "говорящее" расширение mp3. Звуковые данные всегда сжимаются с помощью кодека MPEG 1 level 3; использование других кодеков не допускается. Файл MP3 также может хранить дополнительные данные, называемые тегами MP3. В частности, с помощью тегов сохраняются имя исполнителя, название композиции, название альбома, год записи альбома, стиль музыки и пр.

Этому формату, похоже, уготована долгая жизнь. Несмотря на то, что многие фирмы — распространители музыкальной продукции настроены против него, MP3 полностью завоевал Интернет и сдавать завоеванные позиции не собирается. Больше того, этот формат не собирается уступать и потенциальным конкурентам (OGG Vorbis, MS WMA и др.), хотя последние, пожалуй, ему не уступят.

Формат WAV

Формат WAV (от английского wave — волна) был создан фирмой Microsoft еще в начале 90-х годов прошлого века в качестве стандартного формата хранения звуковых данных в операционной системе Windows. Сейчас используется также для записи звука, предназначенного для последующей обработки, для хранения сэмплов, помещения звуковых данных в различные программы, на Web-сайты и т. п. Для распространения музыки применяется очень редко. Поддерживается абсолютно всеми программами записи и обработки звука.

Файл формата WAV имеет "говорящее" расширение wav. Звуковые данные могут быть сжаты с использованием практически любого кодека; иногда, если аудиоклип невелик по размерам, их вообще не сжимают.

Судя по всему, формат WAV будет применяться и в дальнейшем. Пока что никаких причин от него отказаться нет.

 

3. Создание методов и своиств.

Когда-нибудь каждый JavaScript-программист осознаёт, что JS — объектно-ориентированный язык. И здесь его подстерегают некоторые опасности, происходящие от непонимания того факта, что JS — язык не классов (как Паскаль или Цэ-два-креста), а прототипов.
Так, уже многое написано о проблеме наследования (котого в JS нет). Я же постараюсь рассказать о менее освещённом, но едва ли не более важном подводном камне: грамотной реализации методов.
Программисты пытаются объявлять классы в привычной для них форме, из-за чего возникают утечки памяти и прочие неприятные вещи. На самом деле нужно всего лишь научиться использовать прототипы.
Эта статья предназначена прежде всего для начинающих JS-программистов.

Ниже я буду использовать понятие «класс» в том смысле, в каком оно понимается в Паскале или Цэ-двух-крестах; хоть в JS таких классов, вообще говоря, нет, однако кое-что весьма сходно по форме и смыслу.
С самого начала всем становятся известны две базовые вещи:

 

1. класс описывается функцией-конструктором;

2. методы являются свойствами-функциями.


Поэтому программисты начинают писать весьма естественно:

 

function Test(){

// объявляем и инициализируем свойства

this.x=5;

this.y=3;

// объявляем методы

this.sum=function(){

return this.x+this.y;

}

// выполняем иные конструктивные действия

alert("Constructor: x="+this.x+", y="+this.y+", sum="+this.sum());

}


После этого вроде бы получается то, что мы и хотели: получается класс Test с двумя свойствами x (изначально 5) и y (изначально 3) и методом sum, вычисляющим сумму x и y. При конструировании выводится элёт с иксом, игреком и суммой.
Но что происходит на самом деле? При конструировании объекта Test каждый раз вызывается функция Test. И каждый раз она создаёт новую анонимную функцию и присваивает её свойству sum! В результате в каждом объекте создаётся свой, отдельный метод sum. Если мы создадим сто объектов Test — получим где-то в памяти сто функций sum.
Очевидно, так делать нельзя. И важно это осознать как можно скорее.
После понимания этого факта начинающие программисты часто поступают следующим образом: создают отдельно функцию sum, а в конструкторе её присваивают свойству:

 

function Test(){

// объявляем и инициализируем свойства

this.x=5;

this.y=3;

// прикручиваем методы

this.sum=Test_sum;

// выполняем иные конструктивные действия

alert("Constructor: x="+this.x+", y="+this.y+", sum="+this.sum());

}

 

// реализуем методы

function Test_sum(){

return this.x+this.y;

}


В результате, действительно, функция Test_sum создаётся только один раз, а при каждом конструировании нового объекта Test создаётся только ссылка sum.
В то же время это малограмотный вариант. Всё можно сделать гораздо красивее и правильнее, используя самую основу JavaScript: прототипы:

 

function Test(){

// объявляем и инициализируем свойства

this.x=5;

this.y=3;

// выполняем иные конструктивные действия

alert("Constructor: x="+this.x+", y="+this.y+", sum="+this.sum());

}

 

// объявляем методы

Test.prototype.sum=function(){

return this.x+this.y;

}


Мы создаём свойство sum не класса Test, а его прототипа. Поэтому у каждого объекта Test будет функция sum. Собственно, на то он и прототип, чтобы описывать вещи, которые есть у каждого объекта. Более того, обычные, не функциональные, свойства тоже было бы логично загнать в прототип:

 

function Test(){

// выполняем иные конструктивные действия

alert("Constructor: x="+this.x+", y="+this.y+", sum="+this.sum());

}

 

// объявляем, инициализируем, реализуем свойства и методы

Test.prototype.x=5;

Test.prototype.y=3;

Test.prototype.sum=function(){

return this.x+this.y;

}


Плохо здесь то, что объявления свойств и методов идут после их использования в конструкторе. Но с этим придётся смириться…
Ещё здесь неприятно многократное повторение Test.prototype. С какой-то точки зрения, было бы неплохо вспомнить, что JS — это не Цэ-два-креста, и у нас есть предложение with. С другой стороны, многие авторитетные люди не рекомендуют использовать with вообще. Поэтому нижеследующие варианты использовать не следует.
Буквально сразу же нас подстерегает неприятный сюрприз: этот код не работает.

 

function Test(){

// выполняем иные конструктивные действия

alert("Constructor: x="+this.x+", y="+this.y+", sum="+this.sum());

}

 

// объявляем, инициализируем, реализуем свойства и методы

with(Test.prototype){

x=5;

y=3;

sum=function(){

return this.x+this.y;

}

}


Почему не работает — в некотором роде загадка. Как ни крути, а слово prototype придётся повторять:

 

function Test(){

// выполняем иные конструктивные действия

alert("Constructor: x="+this.x+", y="+this.y+", sum="+this.sum());

}

 

// объявляем, инициализируем, реализуем свойства и методы

with(Test){

prototype.x=5;

prototype.y=3;

prototype.sum=function(){

return this.x+this.y;

}

}


Преимущество здесь в группировании объявлений всей начинки класса Test в один блок — за исключением остающегося осторонь конструктора. Но и с этим можно справиться, если вспомнить, что функцию можно объявить через минимум три синтаксиса:

 

with(Test=function(){

// выполняем иные конструктивные действия

alert("Constructor: x="+this.x+", y="+this.y+", sum="+this.sum());

}){

// объявляем и инициализируем свойства

prototype.x=5;

prototype.y=3;

// объявляем методы

prototype.sum=function(){

return this.x+this.y;

}

}


В результате получается почти та естественная запись, с которой мы начали, разве что слово this заменили на prototype; ну и переместили в начало «иные конструктивные действия» — как я уже сказал, с этим, к сожалению, придётся смириться.
Впрочем, если от конструктора ничего, кроме создания свойств и методов, не требуется, получается и вовсе красота:

 

with(Test=new Function){

// объявляем и инициализируем свойства

prototype.x=5;

prototype.y=3;

// объявляем методы

prototype.sum=function(){

return this.x+this.y;

}

}


Однако не будем забывать, что предложение with использовать не рекомендуется. Поэтому в итоге остановимся на третьем варианте объявления.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: