Отправляет email-рассылки с помощью сервиса Sendsay

Flash MX от А до Я

  Все выпуски  

Make your game with Flash MX


Информационный Канал Subscribe.Ru


mitemail@mail.ru Made by }}v{{!+е


Введение в ActionScript (продолжение).

Простите, что нет рисунков... Вернее они есть, но в целях экономии нервов я решил не переводить их в jpeg... Скачать данную статью в doc формате с рисунками в bmp можно отсюда http://mite.by.ru/asp2.rar

Надеюсь, первая часть “Введения в ActionScript” вас не сильно утомила или разочаровала. Надеюсь, также, что вы научились чему-то, хотя бы основам написания скриптов. Сегодня я постараюсь рассказать об очень важных вещах в ActionScript - объектах.
Итак, объекты. Как вы наверное знаете, ActionScript является объектно-ориентированным языком написания скриптов. На самом деле, объекты используются во Флеше практически везде. Без объектов трудно было бы, например, спрятать курсор мыши, вычислить синус какого-нибудь угла, определить, нажат ли пробел на клавиатуре, да и вообще, использование объектов сильно облегчает жизнь флешеру. Так вот, без объектов и ни туда и ни сюда…
В ActionScript существует такое понятие, как predefined objects. Это предопределённые объекты, дающие доступ к конкретным видам информации. Большинство таких объектов имеют методы (функции, назначенные объекту), которые вы можете вызвать, чтобы возвратить значение или выполнить действие. Например, объект Date (дата) возвращает информацию с системных часов, а объект Sound (звук) позволяет управлять звуками в вашем фильме.
У некоторых объектов есть свойства (переменные, назначенные объекту), значения которых вы можете считывать. Например, объект Key (клавиша) содержит постоянные значения, которые обозначают клавиши на клавиатуре. Каждый объект обладает своими уникальными характеристиками, которые вы можете использовать в своем флеше.
Вот список предопределённых объектов во Flash:
Array
Boolean
Color
Date
Key
Math
MovieClip
Number
Object
Selection
Sound
String
XML
XMLSocket

Кстати, клипы тоже представлены в ActionScript как объекты. Вы можете вызывать методы клипа так же, как и методы любого объекта.
Более подробно мы рассмотрим некоторые объекты чуть ниже.
А теперь разберёмся, что такое объекты и с чем их едят…
Есть два способа создания объектов: команда-оператор new и оператор инициализации объектов ({}). Чтобы создать предопределённый объект или объект, определённый пользователем, можете использовать оператор new. Оператор инициализации объектов ({}) создаёт объект родового типа Object.
Чтобы использовать оператор new для создания объектов, придется использовать его с функцией-конструктором (а constructor function) (функция-конструктор представляет собой просто функцию, которая создаёт объект определённого типа). Предопределённые объекты являются по существу заранее написанными функциями конструктора. Новый объект представляет собой копию конкретного объекта, которому назначаются все свойства и методы, характерные для данного типа объектов. Например, следующая строка инициализирует объект currentDate типа Date:
currentDate = new Date();
Методы некоторых предопределённых объектов могут быть доступны без их инициализации. Например, следующая строка кода вызывает метод random объекта Math:
Math.random();
Каждый объект, требующий функции-конструктора, имеет соответствующий элемент в панели инструментов; например, new Color, new Date, new String и так далее.
Чтобы создать объект с заданными пользователем свойствами, нужно написать такой код:
myCircle = {radius: 5, area: (pi*radius*radius)};
Выражение в круглых скобках будет вычислено, и результат будет доступен как свойство area. Кроме чисел и выражений, свойства могут быть строкой, массивом чего-либо, или другим объектом. Короче, простор для творчества…
Получить доступ к свойствам объекта очень просто. Пишите имя объекта, потом точка, потом свойство, например:
myObject.name
Чтобы присвоить или изменить значение свойства объекта, пишите так же, как для обычной переменной:
myObject.name = “SmilyJ”;
Чтобы вызвать какой-нибудь метод объекта, используют всё те же точки… Следующий пример вызывает метод setVolume объекта Sound:
s = new Sound(this);
s.setVolume(50);
Сначала создаем новый объект Sound. Потом устанавливаем громкость звука на 50%. В примере рассматривается данный объект, так что читайте…
Как я уже говорил, клипы во флеше тоже объекты. Вы можете вызывать методы предопределённого объекта MovieClip, чтобы управлять клипом. Этот объект создаётся автоматически, как только вы создаете во флеше новый символ (Simbol) типа Movie Clip. Например, у вас есть клип myClip (то есть в Instance клипа написано “myClip” без кавычек, конечно:). Чтобы заставить клип проигрываться, пишем:
myClip.play();
Чтобы остановить проигрывание клипа, пишем:
myClip.stop();
Всё просто.
Вводный курс закончился.
Рассмотрим поподробнее самые простые объекты…
Объект Mouse самый простой. Работает без инициализации. Он имеет всего два метода: hide() и show(). Эти методы прячут и показывают курсор мыши в окне флеша соответственно. В основном, эти методы используют для того, чтобы сделать свой собственный курсор или же чтобы курсор не мешал (в основном, в играх).
Объект Date предназначен для вывода различного рода “временной” информации: года, месяца, времени, как локальной (то есть той системы, где запущен флеш), так и универсальной ( по Гринвичу). Чтобы использовать объект, нужна функция-конструктор.
Объект Math работает без использования конструктора. В основном объект используют для вычислений различных значений. Например, Math.PI возвращает значение пи, Math.SIN(.7854) вычисляет синус угла 45 градусов (в скобках должно стоять значение угла в радианах) и т.д. Объект Math используется всегда и везде…
Объект Sound предназначен для различных издевательств над звуком. Например, если вы инициализировали объект mySound как Sound, метод mySound.setVolume() определяет громкость звука в прцентах, а mySound.setPan() управляет балансом…
Объект Key используют для взаимодействия с клавиатурой. В свойствах этого объекта записаны самые часто используемые клавиши: Key.RIGHT обозначает стрелку вправо на клавиатуре. Очень удобно использовать данный объект для определения нажатия клавиш: метод Key.isDown(код клавиши) имеет значение True, если нажата клавиша, код которой стоит в скобках, и False, если не нажата…
И последний объект, который мы рассмотрим, Color, методы которого работают примерно так же, как стандартный эффект Tint. Отличие состоит в том, что эффектом можно управлять!
Исчерпывающую информацию по всем объектам можно получить из встроенной справки, а конкретно из Help->ActionScript Dictionary (словарь ActionScript). Там все расписано по полной программе.
Ну, хватит болтовни. Переходим от слов к делу. В примере я постарался объединить некоторые объекты, которые рассмотрел выше. Кроме того будет одна фича… Короче, поехали!
Создаем новый флеш. В свойствах фильма (Ctrl+M) во Frame Rate впишите 20.
Рис.1.
От Frame Rate во флеше зависит обновление экрана, поэтому, чем выше оно будет, тем меньше будут дёргаться ваши клипы при изменении цвета, размера или положения на экране. На сцене 1 (Scene 1) делаем два слоя. На первом будет располагаться простейший проигрыватель (простейший – потому что умеет проигрывать только один звук:), на втором – будет бэкграунд. Фон нужен, чтобы проследить изменения, происходящие с проигрывателем. Какие именно, увидите сами. Второй слой расположите под первым, вставьте фон.
Рис.2.
Делаем проигрыватель. Рисуем вот такую симпатичную панельку. Выделяем, нажимаем F8 (конвертируем в символ), в Behavior выбираем Button, имя любое. В Actions (выделите кнопку и нажмите Ctrl+Alt+A) для получившейся кнопки впишите (переход в Expert Mode (Экспертный режим) осуществляется клавишами Ctrl+E, обратно в Normal Mode – Ctrl+N):

on (press) {
startDrag ("");
}
on (release) {
stopDrag ();
}

Выделяем кнопку, конвертируем еще раз. Теперь уже в символ с Behavior Movie Clip.
Работает скрипт так: когда кнопка мыши нажата на панельке, то клип начинает передвигаться вслед за курсором мыши; как только кнопку отпустили, то панелька остается на месте. То есть условие on() проверяет состояние кнопок мыши относительно только данной кнопки, для которой написаны Actions.
F12 – теперь вы можете перетаскивать панельку в любое место флеш-окна.
Рис.4.
Теперь сделает ползунки для управления звуком: громкостью и балансом.
Рисуем наш ползунок. Выделяем, конвертируем в кнопку. В Actions кнопки пишем:

on (press) {
startDrag ("", false, left, top, right, bottom);
dragging = true;
}
on (release, releaseOutside) {
stopDrag ();
dragging = false;
}

Выделяем кнопку снова, конвертируем в Movie Clip. В Actions получившегося клипа пишем:

onClipEvent (load) {
top = _y;
bottom = _y;
left = _x-100
right = _x;
}
onClipEvent (enterFrame) {
if (dragging == true) {
_root.s.setVolume(Math.floor(_x-left));
}
}

Если вы запустите флеш и попробуете перетащить ползунок, то он уже не будет перемещаться в любую сторону, а строго горизонтально в пределах 100 пикселей влево.
Этот скрипт похож на предыдущий, для панельки. Небольшие отличия состоят в том, что при загрузке клипа (команда onClipEvent (load)) инициализируются некоторые переменные, которые используются в команде startDrag. Например, для этой кнопки top = _y, bottom = _y, left = _x-100, right = _x. Эти переменные очерчивают прямоугольную область, в которой сможет перемещаться клип. Так как верхняя и нижняя границы имеют одинаковые значения, а левая граница дальше правой на 100, то клип будет передвигаться только горизонтально. Переменная dragging используется для определения перетаскивания ползунка. Команда _root.s.setVolume(Math.floor(_x-left)); устанавливает значение громкости для объекта _root.s в зависимости от положения ползунка. Метод floor о бъекта Math округляет значение в скобках до целого цисла. Можно было и не использовать данный метод, но раз статья написана про объекты…
Делаем ещё один ползунок, теперь для баланса. Все действия остались теми же. Точно так же создайте кнопку. Actions для кнопки остались теми же. Конвертируйте кнопку в клип, в Actions для клипа впишите:

onClipEvent (load) {
top = _y;
bottom = _y;
left = _x-50;
right = _x+50;
center = _x;
}
onClipEvent (enterFrame) {
if (dragging == true) {
_root.s.setPan(Math.floor ((_x-center)*2));
}
}

Вроде бы всё то же самое, но появилась переменная center, и ползунок уже передвигается с начального положения в обе стороны на 50 пикселей. Команда _root.s.setPan(Math.floor ((_x-center)*2)); регулирует баланс в зависимости от положения ползунка.
Ползунки готовы, но объект то мы ещё не создали!
Сделайте две кнопки. Одну для проигрывания, другую для остановки звука. В Actions первой напишите:

on (release) {
_root.s = new Sound();
_root.s.attachSound("sound1");
_root.s.start(0,100);
}
В Actions второй:
on (release) {
_root.s.stop();
}

При нажатии первой кнопки, создается новый объект типа Sound. Для того, чтобы указать, над каким именно звуком будем издеваться, используется команда _root.s.attachSound("sound1"), которая загружает звук с идентификатором sound1. Команда _root.s.start(0,100); поигрывает звук 100 раз.
Команда _root.s.stop() в Actions второй кнопки просто останавливает проигрывание звука.
Для того, чтобы работал метод attachSound(), необходимо произвести некоторые действия. Во-первых, импортируйте звук. Во-вторых, читайте дальше:) В библиотеке (Ctrl+L) щелкните правой кнопкой мыши по звуку. В меню выберите Linkage… В Linkage выбираете Export this symbol (тем самым вы разрешаете экспортировать звук). В поле идентификации введите “sound1” без кавычек.
Для того, чтобы все кнопки и ползунки перемещались вместе с панелькой, а не отдельно, нужно переместить их внутрь клипа панельки, то есть на один уровень с кнопкой панельки. Для этого, например, вырежьте любую кнопку. Перейдите на Scene 1. Выделите панельку, нажмите Ctrl+E для редактирования. Вставьте кнопку по месту.
Если вы всё сделали верно, должен получиться вот такой проигрыватель.
Рис.5.
Теперь займемся настройкой вида проигрывателя.
Перейдите на Scene 1. В Actions теперь уже проигрывателя напишите:

onClipEvent (enterFrame) {
colorOBJ = new Color("/player");
n_OBJ = new Object();
n_OBJ.rb = _root.red;
n_OBJ.gb = _root.green;
n_OBJ.bb = _root.blue;
n_OBJ.ab = _root.alfa;
colorOBJ.setTransform(n_OBJ);
}

Этот код создаёт новый объект типа Color и динамически изменяет цвет и прозрачность в зависимости от переменных red, green, blue и alfa. Для переменных мы также сдлаем ползунки.
Объект Color создается для конкретного клипа, иначе от него не будет пользы. Как видите, я создал объект для клипа “player”. Чтобы назвать клип, в нашем случае это проигрыватель, нужно выделить его, нажать Ctrl+I и в поле Name ввести имя, например, “player” без кавычек.
Создаем ползунки для изменения переменных red, green, blue и alfa. Сразу оговорюсь – код практически одинаков, различие состоит только в переменных, значения которых изменяются.
Создаём кнопку-ползунок. В Actions для кнопки пишем:

on (press) {
startDrag ("", false, left, top, right, bottom);
dragging = true;
}
on (release, releaseOutside) {
stopDrag ();
dragging = false;
}

Конвертируем кнопку в клип. В Actions клипа пишем:

onClipEvent (load) {
top = _y-25;
bottom = _y+25;
left = _x;
right = _x;
center = _y;
}
onClipEvent (enterFrame) {
if (dragging == true) {
_root.red = Math.floor((_y-center)*10);
}
}

Как видите, код для создания ползунков один и тот же. Меняются только переменные и формулы, по которым выщитываются значения этих переменных.
Создайте ещё три ползунка для переменных green, blue и alfa. Все то же самое. Замените только _root.red на _root.green, _root.blue или _root.alfa. Просто копировать ползунки нельзя!
Надеюсь, вам не надоело ещё… Теперь можно протестировать наш проигрыватель.
Рис.6.
Рис.7.
Для наибольшей привлекательности изменим курсор мыши. В Actions первого фрейма первого слоя сцены1 (выделите первый фрейм и нажмите Ctrl+Alt+A) напечатайте следующий код:

function changeCursor (movieclip) {
Mouse.hide();
_root.attachMovie(movieclip, "customCursor", 9999);
_root.customCursor.startDrag(true);
}
changeCursor("cursor");

Разберём код подробно. Строка function changeCursor (movieclip) объявляет функцию changeCursor. В качестве входного параметра используется переменная movieclip. Всё, что стоит в фигурных скобках, будет выполнятся в месте вызова функции. Удобство в использовании функции заключается в том, что вызвать её можно практически в любом месте. Mouse.hide(); - метод объекта Mouse, который делает курсор невидимым во флеше. Следующая строка импортирует клип movieclip на сцену под именем "customCursor" на 9999 уровень. 9999 уровень гарантирует, что курсор не будет перекрываться другими клипами. Команда _root.customCursor.startDrag(true); “приклеивает” клип к невидимому курсору, перемещаясь вместе с ним. И заканчивается код вызовом функции изменения курсора. В качестве курсора используется клип cursor.
Если вы запустите флеш сейчас (Ctrl+Enter или F12), то ничего не произойдет. Во-первых, нужно создать клип, который станет курсором, во-вторых, нужно указать в Linkage…имя экспортируемого символа. Создайте новый клип (Ctrl+F8), который будет курсором. Имя не имеет значеня. Теперь откроите библиотеку (Ctrl+L), выберите созданный клип, щелкните по нему правой кнопкой мыши. В появившемся меню выберите Linkage.…Появиться вот такое окошко:
Рис.3.
Выберите Export this symbol(Экспортировать символ), в Identifier впишите cursor. Теперь можно запускать. Все работает.
Только вот какая штука. Если вы попробуете перетащить этим курсором проигрыватель, то курсор останется на месте. Это происходит потому, что команда startDrag работает только с одним клипом. Как исправить эту ситуацию, подумайте сами, это будет вашим “домашним” заданием.
Очень подробную информацию по объектам можно получить из встроенной справки.
Сегодняшняя статья кому-то может показаться скучной. Но, научиться работать с объектами - очень важно, если вы хотите “быть на ты” с Flash. Короче, дерзайте, и воздастся вам…

Сайты, которые стоит посмотреть:

www.flashkit.com - лучший архив Flash исходников и ресурсов.

Скачать данную статью в doc формате можно отсюда http://mite.by.ru/asp2.rar
Мой сайт - http://mite.by.ru/


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное