Абсолютные и относительные пути
Путь (target path) ? это указатель на интересующую вас линейку. Список (disply list) линеек во Flash очень похож на иерархию файловой структуры Web-сервера.
![](images/ch04/04westCoast.gif)
Movie Explorer отображает список клипов во время создания исходного FLA-файла (Authoring Mode).
Как и в примере с Web-сервером, каждая линейка во Flash может быть адресована двумя способами: с помощью абсолютного или относительного путей. Абсолютный путь каждого элемента никогда не меняется, независимо от того, какая линейка вызывает текущую команду; например, абсолютный путь к элементу california всегда _level0.westCoast.california. Относительный путь всегда зависит от того, откуда он строится; например, относительный путь к california из sanfrancisco будет _parent, но из portland, он станет _parent._parent.california.
Замечание: Для более подробной информации о Movie Explorer, см. Flash Help.
Абсолютный путь начинается с имени слоя, на который загружен клип. Его продолжение можно проследить с помощью выводимого списка (display list) вплоть до достижения указанного элемента.
Первый открываемый ролик во Flash-плейере загружается на нулевой слой (level 0). Необходимо назначать каждому дополнительно загружаемому ролику номер слоя. Указывающее имя (target name) для слоя: _levelX, где X ? номер слоя, на который загружается клип. Например, первый открываемый во Flash-плейере ролик называется _level0, ролик загруженный на третий слой ? _level3.
В следующем примере два ролика загружены в плейер: TargetPaths.swf на слой 0 и EastCoast.swf на слой 5. Слои указываются в отладчике (Debugger), слой 0 имеет обозначение _root.
![](images/ch04/04targetPaths.gif)
Отладчик показывает абсолютные пути всех линеек в листе в режиме Test-Movie.
Элемент всегда имеет один и тот же абсолютный путь, вызывается ли он командой от элемента того же слоя или командой из другого слоя. Например, элемент bakersfield в слое 0 всегда имеет следующий абсолютный путь в дот-синтаксисе:
_level0.california.bakersfield
С помощью слэшей абсолютный путь будет выглядеть следующим образом (точки заменены на слэши):
_level0/california/bakersfield
Для взаимодействия между роликами на разных слоях нужно указывая путь, использовать имя слоя. Например, элемент portland будет адресовать элемент atlanta следующим образом:
_level5.georgia.atlanta
В точечном синтаксисе можно использовать ключевое слово _root для ссылки на главную линейку текущего уровня. Для главной линейки или _level0, обозначение _root соответствует _level0, если указывается клипом, также расположенном на _level0. Для ролика, загруженного в _level5, _root соответствует _level5 , если указывается клипом, также размещённом в слое 5. Например, команда вызываемая элементом southcarolina может использовать следующий абсолютный путь для указания элемента florida:
_root.eastCoast.florida
В слэш-синтаксисе можете использовать / для ссылки на главную линейку текущего слоя, так, как сделано в этом случае:
/eastCoast/florida
В дот-синтаксисе либо в режиме Absolute либо в Relative можно использовать те же правила формирования пути, чтобы идентифицировать переменную на линейке или свойство объекта. Например, в следующем выражении имени элемента form присваивается значение "Gilbert":
_root.form.name = "Gilbert";
В слэш-синтаксисе либо в режиме Absolute либо в Relative идентификация переменной осуществляется с помощью двоеточия (:) перед её именем:
/form:name = "Gilbert";
Относительный путь зависит от взаимосвязей между управляющей и указываемой линейками. Можете использовать относительный путь для повторного использования команд, потому что одна и та же команда может указывать на разные линейки, в зависимости от расположения команды. Относительные пути могут адресовать объекты только внутри одного определённого уровня во Flash-плейере; они не могут адресовать ролики загруженные в другие уровни. Например, нельзя использовать относительный путь в команде в слое _level0, указывающей на уровень _level5.
В дот-синтаксисе можете использовать ключевое слово this в относительном пути для адресации текущей линейки. Также можно использовать _parent для обозначения родительской линейки по отношению к текущей линейке. _parent может использоваться многократно для того, чтобы подняться на одну ступень вверх в иерархии клипов внутри одного уровня Flash-плейера. Например, _parent._parent управляет клипом, расположенным на две ступени выше в иерархической структуре.
В следующем примере каждый город (charleston, atlanta и staugustine) является дочерним по отношению к элементу "штат" и каждый штат (southcarolina, georgia и florida) ? потомок элемента eastCoast.
![](images/ch04/04eastCoast.gif)
Movie Explorer показывает отношения клипов "родители-дети".
Команда на линейке элемента charleston может использовать следующий путь для указания элемента southcarolina:
_parent
Чтобы указать элемент eastCoast из команды в charleston, возможен следующий относительный путь:
_parent._parent
В слэш-синтаксисе для перехода на одну ступень иерархии вверх, используется две точки (..). Чтобы указать eastCoast из команды в charleston, относительный путь примет вид:
../..
Чтобы указать на элемент atlanta из команды на линейке charleston, в дот-синтаксисе относительный путь будет следующим:
_parent._parent.georgia.atlanta
Относительные пути полезны для многократного использования скриптов. Например, можете подключить к клипу скрипт, увеличивающий до 150% геометрические размеры клипа, расположенного на одну ступень выше текущего:
onClipEvent (load) { _parent._xscale = 150; _parent._yscale = 150; }
Вы можете затем многократно использовать этот скрипт, помещая его на линейку любого клипа.
Для более подробной информации об адресации и точечном синтаксисе см. Главу 2, "Написание скриптов с помощью ActionScript".
Для более подробной информации о дот-синтаксисе (Dot) и слэш-синтаксисе (Slash) см. Использование синтаксиса ActionScript.
Дублирование и удаление клипов
Можно создать или удалить элементы в виде мувиклипов во время воспроизведения вашего Flash-клип, используя duplicateMovieClip или removeMovieClip соответственно. Команда и метод duplicateMovieClip динамически создают новый элемент клипа, присваивая ему новое имя и задавая его глубину (depth) местонахождения. Скопированный таким образом клип всегда стартует с кадра 1, даже если клип-оригинал находился на другом кадре во время дублирования, и всегда расположен поверх всех определённых заранее клипов на текущей линейке. Переменные не копируются в клип-дубликат.
Чтобы удалить клип, созданный посредством duplicateMovieClip, воспользуйтесь removeMovieClip. Все копии будут также уничтожены, если удалить родительский клип.
Иерархические связи линеек
Когда вы размещаете элемент мувиклип на линейке другого клипа, возникает ситуация, в которой один клип, содержит в качестве элемента другой клип ? в том случае первый мувик будет родительским (parent), второй дочерним (child). Главная линейка Flash-клипа является родительской для всех клипов на данном слое.
Взаимосвязи клипов по схеме parent-child образуют иерархическую структуру. Для лучшего её понимания рассмотрим подобную структуру на примере компьютера: жесткий диск имеет корневую директорию (или папку) и поддиректории. Корневая директория аналогична основной Timeline Flash-клипа: она является родительской для всех последующих структур. Поддиректории соответствуют мувиклипам (movie clips). Можно использовать подкаталоги для создания связанного контента (содержимого).
Аналогично можете использовать иерархию клипов во Flash, чтобы организовать взаимосвязь визуальных объектов часто путём использования аналогов их поведения в реальном мире. Все изменения, вносимые в родительский клип, также повлияют на все его дочерние объекты.
Например, можете создать Flash-ролик в виде машины, перемещающейся по сцене. Вы можете использовать символ клипа, представляющий автомобиль, и настроить анимацию движения (motion tween) для его перемещения.
![](images/ch04/04carDrives.gif)
Анимация перемещает клип машины на основной линейке
Перед нами изображение автомобиля сбоку, видны лишь два колеса. Если уж вы заставили автомобиль двигаться, стоит подумать о вращении его колёс. Вы делаете клип для колеса и создаёте два элемента этого клипа, называющиеся соответственно frontWheel и backWheel. Теперь вы помещаете колёса на линейку машины ? не на главную линейку. Как потомки car, frontWheel и backWheel подвержены всем изменениям, вносимым в car. Это означает, что они будут двигаться вместе с автомобилем.
![](images/ch04/04car.gif)
Элементы frontWheel и backWheel размещаются на линейке клипа car.
Чтобы заставить колёса вращаться, вы можете настроить анимацию на вращение символа колеса и, таким образом, заставить крутиться оба элемента (переднее и заднее колёса). Даже если вы измените frontWheel и backWheel, они будут продолжать находиться под влиянием анимации их родительского клипа car, колёса будут вращаться, а также двигаться вместе с родительским клипом car.
![](images/ch04/04wheel.gif)
Символ колеса в режиме редактирования ? Edit Symbol
Иерархия линеек
Любой Flash-клип имеет основную монтажную линейку (Timeline), расположенную на уровне 0 (level 0) во Flash-плейере. Можно использовать команду loadMovie для загрузки других Flash-клипов (SWF-файлов) во Flash-плейер на любой уровень над нулевым (например, уровень 1, уровень 2, уровень 15). Любой такой загружаемый клип имеет свою линейку.
Flash-клипы на любом уровне могут содержать на своей линейке мувиклипы (movie clips). Каждый такой клип, в свою очередь, имеет свою временную шкалу и также может включать в себя другие клипы, также имеющие свою собственную линейку. Все линейки клипов и уровни во Flash-плейере образуют иерархическую структуру, что позволяет легко манипулировать ими и управлять объектами вашего клипа.
![](images/ch04/mc_hierarchy.gif)
Иерархия уровней и клипов во Flash-плейере
Во Flash, такая иерархия называется display list. Этот список можно просматривать в Movie Explorer (проводник) во время создания исходного файла (FLA) во Flash. Он отображается также и в Debugger (отладчик), если вы воспроизводите клип в режиме Test Movie, в автономном Flash-плейере или в Web-браузере.
![](images/ch04/04explorer.gif)
Movie Explorer показывает иерархическую структуру линеек, называемую "display list"
Линейки во Flash-ролике - это объекты, имеющие свойства (properties) и методы (methods) встроенного объекта MovieClip. Все они связаны между собой в зависимости от их местоположения в display list. На вложенные линейки влияют изменения, применяемые к родительским линейкам. Например, если объект portland является дочерним по отношению к объекту oregon и вы измените характеристику _xscale объекта oregon, portland также претерпит изменения в масштабе.
Линейки могут обмениваться данными. Например, команда в последнем кадре одного клипа может вызвать воспроизведение другого клипа.
Использование команд и методов для управления линейками
Вы можете использовать определённые команды и методы объекта MovieClip, чтобы указать (target) клип или загруженный слой, или провести необходимые действия по отношению к ним. Например, команда setProperty присваивает свойству (например, _width) линейки какое-либо значение (например, 100). Некоторые объектные методы MovieClip дублируют функцию всех команд, указывающих ту или иную линейку. Существуют также дополнительные методы, такие как hitTest и swapDepths. В случае использования вами команды или метода, адресуемая линейка должна быть загружена во Flash-плейер, когда эта команда или метод вызываются.
Следующие команды могут адресовать клипы: loadMovie, unloadMovie, setProperty, startDrag, duplicateMovieClip и removeMovieClip. Чтобы использовать эти команды, вы должны ввести путь в параметр Target используемой команды для указания объекта, к которому данная команда применяется. Некоторые из этих команд могут адресовать клипы или слои, остальные же ? только клипы.
Ниже перечисленные объектные методы MovieClip могут управлять клипами или загруженными слоями и не имеют эквивалентных команд: attachMovie, getBounds, getBytesLoaded, getBytesTotal, globalToLocal, localToGlobal, hitTest и swapDepths.
Если команда и метод имеют схожую функциональность, вы вольны выбирать любой из возможных способов для управления клипами. Выбор зависит от того, что вы предпочитаете и насколько знакомы с написанием скриптов ActionScript.
Для более подробной информации о методах объекта MovieClip и информации о каждой команде см. Главу 7 "Словарь ActionScript".
Использование нескольких методов или команд для определённой линейки
Вы можете использовать команду with для однократной адресации того или иного клипа и затем выполнять целые серии команд по отношению к этому клипу. Действие команды with распространяется на все объекты ActionScript (например, Array (массив), Color (цвет) и Sound (звук)) за исключением клипов (movie clips). Команда tellTarget похожа на команду with. Однако tellTarget не работает со всеми объектами ActionScript и несовместима с ECMA-262.
В качестве параметра команды with выступает объект. Заданный вами объект добавляется в конец пути. Все команды внутри тела команды with выполняются только по отношению указанного пути или области (scope). Например, в приведённом ниже скрипте на основной линейке команде with передаётся объект donut.hole , чтобы изменить характеристику hole:
with (donut.hole){ _alpha = 20; _xscale = 150; _yscale = 150; }
Это то же самое, как если бы выражения внутри команды with вызывались непосредственно с линейки элемента hole.
В следующем примере заметьте "экономичность" использования команды with и методов MovieClip для выполнения нескольких инструкций:
with (myMovieClip) { _x -= 10; _y += 10; gotoAndPlay(3); }
Для более подробной информации о команде tellTarget см. Flash Help.
Изменение позиции клипа и его вида
Для изменения свойств клипа во время его воспроизведения можно использовать команду setProperty или написать выражение, присваивающее какое-либо значение требуемому свойству. Если вы загружаете клип в объект (target), загруженный клип наследует свойства указываемого клипа. Как только ролик загружен, вы можете изменить его свойства.
Некоторые свойства, называемые read-only (только чтение), имеют значения, которые можно только считывать, но не устанавливать. Вы можете задавать любые свойства, не входящие в эту группу. Следующее выражение управляет свойством _alpha символа wheel, являющегося потомком элемента car:
car.wheel._alpha = 50;
Кроме этого, можно записывать выражения, получающие значение того или иного свойства. Например, следующая строка получает значение свойства _xmouse на главной линейке и присваивает это значение свойству _x элемента customCursor:
onClipEvent(enterFrame){ customCursor._x = _root._xmouse; }
Можете также использовать функцию getProperty для получения свойств клипов.
Свойства _x, _y, _rotation, _xscale, _yscale, _height, _width, _alpha и _visible изменяются вместе с преобразованиями родительского клипа, также трансформируют клип и любой его дочерний клип. Свойства _focusrect, _highquality, _quality и _soundbuftime являются глобальными, они принадлежат только линейке в слое 0. Все остальные принадлежат каждому клипу или загруженному слою. Таблица, приведённая ниже, содержит все свойства клипа:
_alpha
Методы или команды?
Метод вводится следующим образом. Сначала указывается путь к элементу (его имя), затем после точки применяемый метод и его аргументы:
myMovieClip.play();
parentClip.childClip.gotoAndPlay(3);
В первой строке метод play включает воспроизведение элемента myMovieClip. Во второй строке метод gotoAndPlay переносит "воспроизводящую головку" элемента childClip (дочерний по отношению к элементу parentClip) в третий кадр и продолжает воспроизведение с этого места.
Команды, управляющие линейкой, имеют параметр Target, в котором указывается путь. Например, в следующем скрипте команда startDrag указывает на элемент customCursor и делает возможным его перемещение (draggable):
on(press){ startDrag("customCursor"); }
Если вы используете метод, он вызывается после указания пути к элементу. Например, следующее выражение реализует эту же возможность (startDrag) :
customCursor.startDrag();
Выражения, записанные с помощью методов MovieClip обычно более краткие, потому что не требуют команды tellTarget. Не рекомендуется использовать команду tellTarget по причине её несовместимости со стандартом ECMA-262.
Например, для того чтобы начать воспроизведение клипа myMovieClip посредством объектных методов MovieClip, вы используете следующий код:
myMovieClip.play();
Приведённый ниже код проделывает ту же операцию с помощью команды tellTarget:
tellTarget ("myMovieClip") {
play();
}
Настройка параметров
Вы можете вызывать в смарт-клипе команды, которые используют заданные параметры, чтобы изменить поведение смарт-клипа. Вот простой пример: если вы определили параметр клипа с именем Frame, то можете написать следующий скрипт для смарт-клипа, использующий параметр Frame:
onClipEvent(load){ gotoAndStop(Frame); }
Затем вы можете установить значение параметра Frame в панели Clip Parameters, чтобы изменить воспроизводимый кадр.
![](images/ch04/04clipParameters.gif)
Установка параметров смарт-клипа:
1 | Выберите элемент смарт-клипа на сцене. |
Смарт-клипы ? это мувиклипы. Таким образом, только первый кадр будет отображён в момент создания исходника. | |
2 | Выберите Window > Panels > Clip Parameters, чтобы появилась панель Clip Parameters. |
3 | В этой панели сделайте одно из следующих действий: |
![]() |
Двойной щелчок мыши на поле Value для выбора и введения значений для каждого параметра. |
Если параметр был определён как List, появиться выпадающее меню. | |
![]() |
Если был определён настраиваемый интерфейс, используйте его предусмотренные элементы. |
4 | Выберите Control > Test Movie, чтобы увидеть изменение в поведении смарт-клипа. |
![]() |
Обмен сообщениями между линейками
Вы можете посылать сообщения между линейками. При этом одна линейка содержит команду (action), называемую controller (диспетчер), а вторая ? команду, называемую target (цель). Вы можете назначить эту команду какому-либо кадру или кнопке на линейке, а если линейка является мувиклипом (movie clip), то непосредственно ему.
Для того чтобы указать определённую линейку, вы можете использовать команды из категории Actions или методы объекта MovieClip из категории Objects в панели Actions. Например, вы можете использовать команду duplicateMovieClip для указания и копирования мувиклипа в качестве элемента во время воспроизведения вашего ролика.
![](images/ch04/04actions.gif)
Для указания линейки используйте команды из категории Actions.
![](images/ch04/04methods.gif)
Для указания линейки используйте методы объекта MovieClip.
Для выполнения нескольких команд по отношению к выбранному объекту можете использовать команду with. Подобно состоянию with в JavaScript, команда with позволяет при однократной ссылке на определённую линейку, применить к ней несколько команд, при этом нет необходимости указывать каждый раз (в каждой команде) интересующую вас линейку.
Также можете использовать команду tellTarget для достижения этой цели.
Для того чтобы осуществить взаимодействие между линейками, сделайте следующее:
![]() |
Введите имя элемента для клипа, который вы хотите указать. |
Чтобы присвоить имя клипу-элементу, используйте панель Instance (Window > Panels > Instance). Линейка, загруженная на соответствующий уровень, использует номер этого уровня в качестве имени элемента, например, _level6. | |
![]() |
Введите путь (target path) к выбранному элементу в панели Actions. |
Вы можете сделать это вручную или использовать диалоговое окно Insert Target Path. См. Определение пути. |
Примечание: Во время воспроизведения клипа линейка должна быть доступна (находиться на сцене), для того чтобы на неё можно было указать.
Обнаружение пересечений
Можно использовать hitTest метод объекта MovieClip для обнаружение пересечений в клипе. Метод hitTest определяет пересекается ли объект с другим муви-клипом и возвращает булеановское (Boolean) значение true или false. Можно использовать параметры метода hitTest для определения x и y hit-координат (области нажатия) или использовать target path (путь до цели - прямее ничего не придумалось) другого муви-клипа как hit-область.
Каждый муви-клип во флеш-клипе есть копия (instance - образец) объекта MovieClip. Это позволяет вызывать методы объекта из любого мувика, как указано ниже:
myMovieClip.hitTest(target);
Возможно использование метода hitTest для проверки пересечения муви-клипа с отдельной точкой.
Подвигайте мышом по поверхности клипа. Результат работы hitTest смотрите в текстовом поле.
Также можно использовать метод hitTest для проверки пересечения двух мувиков.
Потаскайте сферу, результат работы hitTest см. в текстовом поле.
Проверка на пересечение муви-клипа и отдельной точки:
1 | Выделить мувик на рабочем поле. |
2 | Выбрать Window > Actions для открытия панели команд. |
3 | Дважды щелкнуть на команде trace расположенной в категории Actions списка команд. |
4 | Поставить галочку в Expression check box и ввести следующее выражение в строку Expression (Выражение): |
trace (this.hitTest(_root._xmouse, _root._ymouse, true); | |
Этот пример использует _xmouse и _ymouse свойства как x и y координаты hit-области и в режиме теста клипа отсылает полученный результат в окно Output. Можно положить в клип текстовое поле и отображать результаты в нем или анализировать их при помощи if оператора. | |
5 | Выбрать Control > Test Movie и подвигать мышом по клипу, чтобы увидеть результат теста. |
![]() |
Проверка на пересечение двух муви-клипов:
1 | Расположить два мувика на рабочем поле и присвоить им имена mcHitArea и mcDrag. |
2 | Создать текстовое поле и в строке Variable (переменная) панели Text Options, присвоить ему имя status. |
3 | Выделить mcHitArea и выбрать Window > Actions. |
4 | Дважды щелкнуть на команде evaluate в списке команд. |
5 | Ввести следующий код в строку Expression (выражение), выбирая нужные составляющие из верхнего списка: 1 |
_root.status=this.hitTest(_root.mcDrag); | |
6 | Выбрать команду onClipEvent и задать ей enterFrame как событие. |
7 | Выделить mcDrag и выбрать Window > Actions. |
8 | Дважды щелкнуть startDrag в списке команд. |
9 | Включить опцию Lock Mouse to Center. |
10 | Выбрать команду onClipEvent и задать ей событие Mouse down. |
11 | Дважды щелкнуть stopDrag в списке команд. |
12 | Выбрать onClipEvent и задать ей событие Mouse up. |
13 | Запустить в режиме теста Control > Test Movie и подвигать мышом, чтобы посмотреть на результат. |
![]() |
Для получения большей информации о методе hitTest, см. соответствующий подраздел ActionScript Словаря.
Oт переводчика:
Можно просто напечатать эту строку на клавиатуре, еще лучше скопировать с этой страницы и вставить через буфер обмена :)
Совет: если вставлять через буфер, то не следует копировать закрывающие выражение точку с запятой (";"). Скриптовый флеш-редактор вставляет их автоматом.
Определение параметров клипа
Параметры клипа ? это часть данных, передаваемых клипу, когда он загружается в ролик. Можно определить параметры клипа в режиме создания исходника. Можно использовать эти параметры в командах, чтобы изменить вид и поведение смарт-клипа во время воспроизведения. Специальный значок в окне библиотеки отображает клипы с заданными параметрами.
![](images/ch04/04clipParamSymbol.gif)
Определение параметров для клипа:
1 | Выберите символ клипа в вашей библиотеке клипов и сделайте одно из следующих действий для появления окна диалога Clip Parameters: | |
![]() |
Щелчок по правой кнопке мыши (Windows) или Control-click (Macintosh), затем выберите Define Clip Parameters из контекстного меню. | |
![]() |
Выберите Define Clip Parameters из меню Options справа вверху окна Library. ![]() | |
2 | Используйте управление в диалоговом окне Clip Parameters следующим образом: | |
![]() |
Нажмите кнопку Плюс (+), чтобы добавить новую пару имя/значение или дополнительные параметры для выбранной пары. | |
![]() |
Нажмите кнопку Минус (-), чтобы удалить пару имя/значение. | |
![]() |
Используйте кнопки со стрелками для изменения порядка следования параметров в списке. | |
![]() |
Выберите поле с помощью двойного щелчка мыши на нём и введите затем значение. | |
3 | В качестве Name (имя) введите уникальный идентификатор для параметра. | |
4 | В качестве Type (тип) выберите из выпадающего меню тип данных, которые будет содержать параметр: | |
![]() |
Выберите Default (по умолчанию), чтобы использовать строковую или численную величину. | |
![]() |
Выберите Array (массив) для динамического списка элементов, которые могут возрастать или уменьшаться. | |
![]() |
Выберите Object (объект), чтобы декларировать несколько связанных элементов с именами и значениями, например, объект Point с элементами x и y. | |
![]() |
Выберите List (список), чтобы ограничить выбор несколькими возможными вариантами, например, true или false, Красный, Серый или Синий. | |
5 | В качестве Value (значение) выберите из выпадающего меню значение параметра по умолчанию. | |
6 | Если вы хотите использовать настраиваемый интерфейс для панели Clip Parameters, сделайте одно из следующих действий: | |
![]() |
Введите относительный путь к SWF-файлу настраиваемого интерфейса в поле Custom UI. | |
![]() |
Нажмите на папку Custom UI и выберите SWF-файл интерфейса. | |
См. Создание настраиваемого интерфейса. | ||
7 | В качестве описания (Description) введите примечания, которые будут появляться в панели Clip Parameters и описывать назначение параметра. | |
Вы можете включить любую информацию, которую считаете нужной, в поле Description. Например, объяснение используемых методов. | ||
8 | Выберите Lock in Instance (закрыть символ) во избежание переименования параметров пользователем в панели Clip Parametersl. | |
Рекомендуется оставлять имена параметров закрытыми. | ||
9 | Нажмите OK. | |
![]() |
Определение позиции мыши
Можно использовать _xmouse и _ymouse свойства для определения местонахождения позиции курсора в клипе. Каждая монтажная линейка (Timeline) имеет _xmouse и _ymouse свойство, возвращающее значение позиции мыши в собственной системе координат.
См. _xmouse и _ymouse свойства в основной линейке (Timeline) и линейке муви-клипа, перемещая курсор по клипу.
Следующее выражение можно поместить в любую линейку (Timeline) в _level0 клипа для получения _xmouse позиции в основной линейке:
x_pos = _root._xmouse;
Для определения позиции курсора внутри муви-клипа, используется его имя (instance name). Например, следующее выражение может быть помещено в любое место _level0 клипа для получения _ymouse позиции в муве-клипе myMovieClip:
y_pos = _root.myMovieClip._ymouse
Можно также определять позицию мыши внутри муви-клипа, используя _xmouse и _ymouse свойства в команде клипа, как это сделано ниже:
onClipEvent(enterFrame){ xmousePosition = _xmouse; ymousePosition = _ymouse; }
Переменные x_pos и y_pos используются в качестве контейнеров для сохранения значения позиций мыши. Вы могли бы использовать эти переменные в любом скрипте вашего клипа. В следующем примере значения x_pos и y_pos обновляются каждый раз при перемещении мыши.
onClipEvent(mouseMove){ x_pos = _root._xmouse; y_pos = _root._ymouse; }
Для большей информации о _xmouse и _ymouse свойствах, см. соответствующие подразделы ActionScript Словаря.
Определение пути
Чтобы управлять клипом или подгруженным роликом, необходимо задать путь к нему. При этом клип, как элемент, должен иметь имя. Указать на объект и задать к ему путь можно несколькими способами:
![]() |
Путь можно ввести посредством кнопки Insert Target Path и окна диалога в панели Actions. |
![]() |
Путь можно указать вручную непосредственно в вашем скрипте. |
![]() |
Ещё одной возможностью является создание определённого выражения, используя ссылку на клип или предопределённые функции targetPath и eval. |
Использование окна диалога Insert Target Path:
1 | Выберите клип, кадр или кнопку, к которым хотите привязать действие или команду. | |
2 | Выберите Window > Actions для отображения панели Actions. | |
3 | В списке доступных возможностей выберите команду из раздела Actions или метод из категории MovieClip в разделе Objects. | |
4 | Введите путь в поле Target или Location данного скрипта. | |
5 | Нажмите на кнопку Insert Target Path (в виде перекрестья) в правом нижнем углу панели Actions, откроется окно диалога Insert Target Path. ![]() | |
6 | В окне диалога Insert Target Path выберите режим синтаксиса: Dots (точки, по умолчанию) или Slashes (слэши). ![]() | |
7 | Выберите Absolute (абсолютный) или Relative (относительный) способ задания пути. | |
См. Абсолютные и относительные пути. | ||
8 | Задайте требуемый путь одним из следующих способов: | |
![]() |
Выберите клип в списке Insert Target Path. | |
![]() |
Введите путь вручную в поле Target, используя абсолютный или относительный способы его указания и дот-синтаксис. | |
9 | Завершите операцию нажатием кнопки OK. | |
![]() |
Ввод пути вручную:
Выполните п.п. 1-4, описанные выше и введите абсолютный или относительный путь непосредственно в панели Actions.
Использование выражения в качестве пути:
1 | Выполните п.п. 1-4, описанные выше. |
2 | Выполните одно из следующих действий: |
![]() |
Введите вручную ссылку в качестве пути. Ссылка обрабатывается для определения необходимого пути. Вы можете использовать ссылку в качестве параметра для команды with. В примере ниже переменная index обрабатывается и умножается на 2. Полученный результат используется как имя клипа внутри элемента Block, вызванного для воспроизведения: |
with (Board.Block[index*2]) { play(); } | |
![]() |
В разделе Functions в списке доступных инструментов, выберите функцию targetPath. |
Функция targetPath преобразует ссылку на клип в строку, которая может использоваться такими командами, как tellTarget. | |
Ниже приведён пример, в котором функция targetPath преобразует ссылку Board.Block[index*2+1] в строку: | |
tellTarget (targetPath (Board.Block[index*2+1])) { play(); } | |
Предыдущий пример эквивалентен следующему с использованием слэш-синтаксиса: | |
tellTarget ("Board/Block:" + index*2+1)) {
play(); } |
|
![]() |
В разделе Functions выберите функцию eval. |
Функция eval преобразует строку в ссылку на клип, которая может быть использована в качестве пути такими командами, как with. | |
Следующий скрипт обрабатывает переменную i, добавляет её к строке "cat" и присваивает полученное значение переменной x. В этом случае x ? ссылка на клип-элемент, которая может вызвать объектные MovieClip: | |
x = eval ("cat" + i); x.play(); | |
Вы также можете использовать функцию eval для непосредственного вызова методов, как здесь: | |
eval ("cat" + i).play();. | |
![]() |
Перехват нажатий клавиш
Можно использовать методы предопределенного объекта Key для определения последней клавиши, которая была нажата пользователем. Чтобы использовать его методы, просто вызывайте объект, как сделано в следующем примере:
Key.getCode();
Можно получать любые десятичные (Dec) 1 коды или ASCII-значения нажатых клавиш:
![]() |
Для получения Dec-кода последней нажатой клавиши, используется getCode метод. |
![]() |
Для получения ASCII-значения последней нажатой клавиши, используется getAscii метод. |
Dec-код имеется у каждой физической клавиши на клавиатуре. Например, клавиша стрелки "влево" имеет Dec# 37. Используя Dec-код, можно гарантировать, что средства управления клипа будут одинаковыми на любой клавиатуре, независимо от языка или платформы.
ASCII (American Standard Code for Information Interchange) значения связаны с первыми 127 символами каждой кодовой таблицы. Они обеспечивают информацию о символе на экране. Например, символ "A" и символ "a" имеют различные значения ASCII.
Общее место для использования Key.getCode в параметрах onClipEvent. При прохождении через keyDown как параметр, скрипт получает команду проверить значение последней нажатой клавиши (фактически, нажатой в данный момент). В этом примере использовано Key.getCode для управления перемещением НЛО. Нажимайте на курсорные клавиши для передвижения НЛО внутри клипа.
Для создания управления клипом с клавиатуры:
1 | Решите какие клавиши использовать и определите их Dec-коды, используя один из следующих подходов: |
![]() |
См. список клавишных кодов на Клавиши клавиатуры и их кодовые значения: Краткий обзор. |
![]() |
Используйте константу объекта Key. (В списке инструментов, выбрать Objects (объекты), затем выбрать Key (клавиша). Константы перечислены заглавными буквами.) |
![]() |
Назначить следующее команды, затем выбрать Control > Test Movie и нажать нужную клавишу: |
onClipEvent(keyDown) { trace(Key.getCode()); } | |
2 | Выделить муви-клип на рабочем поле. |
3 | Выбрать Window > Actions. |
4 | Дважды щелкнуть на onClipEvent команде в Actions категории списка. |
5 | В окне параметров выбрать Key down событие. |
6 | Дважды щелкнуть на if команде в Actions категории списка. |
7 | Щелкнуть внизу окна в строке ввода условия (Condition), выбрать Objects; затем выбрать Key и getCode. |
8 | Дважды щелкнуть на операторе эквивалентности (==) в категории Operators (Операторы) списка. |
9 | Справа от оператора эквивалентности ввести Dec-код клавиши. |
Ваш код будет выглядеть следующим образом: | |
onClipEvent(keyDown) { if (Key.getCode() == 32) { } } | |
10 | Выбрать действие, которое будет выполняться, если нажата нужная клавиша. |
Например, следующая команда при нажатии на клавишу пробела (Dec# 32), заставит сделать переход на следующий кадр основной линейки (Timeline): | |
onClipEvent(keyDown) { if (Key.getCode() == 32) { nextFrame(); } } | |
![]() |
Для получения большей информации о методах объекта Key, см. соответствующий подраздел ActionScript Словаря.
Oт переводчика:
Почему-то в родном доке Макромедия называет эти коды виртуальными, я заменил на более привычные десятичные (Decimal или Dec), чем они по сути и являются
Перемещение клипов
Можно использовать команду или метод startDrag для того, чтобы сделать клип перемещаемым во время воспроизведения. Например, использовать этот эффект для игр, функции drag-and-drop, настраиваемых интерфейсов, полос прокрутки и движков (sliders).
Клип остаётся перемещаемым до тех пор, пока не будет остановлен командой stopDrag или другой клип не будет указан с помощью startDrag. Только один клип может быть перемещаемым в любой момент времени.
Для создания более сложных механизмов drag-and-drop можно обрабатывать у перемещаемого клипа свойство _droptarget. Например, необходимо проверить свойство _droptarget для того, чтобы убедится, что ролик был перемещён в какой-либо другой клип (например, клип "мусорная корзина"), и затем инициировать другую команду. См. Использование оператора "if" и Использование операторов для манипулирования величинами в выражениях.
Присоединение мувиклипа
Можно взять копию мувиклипа из библиотеки и воспроизвести её в качестве части вашего клипа, используя метод attachMovie. Этот метод присоединяет (загружает) мувиклип из библиотеки к вашему и позволяет управлять им в дальнейшем по мере необходимости.
Для использования метода attachMovie присоединяемому клипу следует дать уникальное имя в окне диалога Symbol Linkage Properties.
Идентификация мувиклипа при присоединении:
1 | Выберите клип, который хотите присоединить, в соответствующем разделе библиотеки (movie's Library). |
2 | В окне библиотеки выберите Linkage (связь) из меню Options. |
3 | Далее в появившемся окне установите Linkage в положение Export This Symbol (экспорт символа). |
4 | В окне диалога Symbol Linkage Properties в поле Identifier (идентификатор) введите имя клипа. Оно должно отличаться от имени символа в библиотеке. (IMHO не обязательно, может и совпадать, криминала в этом никакого нет - Прим.редактора) |
5 | Нажмите OK. |
![]() |
Присоединение мувиклипа к другому клипу:
1 | В панели Actions задайте объект, к которому вы хотите присоединить клип. |
2 | В списке доступных возможностей выберите объект MovieClip и затем метод attachMovie. |
3 | Установите следующие аргументы: |
![]() |
В качестве idName укажите имя, введенное вами в поле Identifier диалогового окна Symbol Linkage Properties. |
![]() |
В качестве newName введите новое имя элемента для присоединяемого клипа; таким образом, вы сможете ссылаться на него в дальнейшем. |
![]() |
В качестве depth, введите номер слоя, на котором клип-дубликат будет подключаться к ролику. Каждый такой клип имеет свой порядковый номер загрузки в стек, начиная со слоя 0 как слоя с текущей линейкой. Присоединённые клипы всегда находятся поверх основного. |
Например: | |
myMovieClip.attachMovie("calif", "california", 10 ); | |
![]() |
Привязка команд и методов
Команды и методы могут назначаться кнопке, кадру или клипу.
Чтобы привязать команду или метод к элементу мувиклип, необходимо использовать обработчик событий onClipEvent. Все команды, применённые к элементу, находятся внутри onClipEvent и выполняются после того, как он инициируется (срабатывает). Команда onClipEvent может быть инициирована событием линейки (например, загрузка ролика) либо событиями со стороны пользователя (например, щелчок мыши или нажатие клавиши). Например, onClipEvent(mouseMove) инициирует команду каждый раз при движении мыши.
![](images/ch04/04clipEvent.gif)
Команда onClipEvent назначается элементу на сцене. Её события перечислены в ее вспомогательном окне параметров Event панели Actions.
Работа с мувиклипами. Краткий обзор
Мувиклип - это миниатюрный Flash-фильм: он имеет свои собственные свойства и временную шкалу (Timeline), помещённый в библиотеку (Library) в качестве символа, может многократно использоваться во Flash-клипе, каждая такая вставка называется элементом клипа. Мувиклипы могут вкладываться друг в друга. Чтобы различать такие элементы между собой, вы можете дать каждому своё имя.
Любой объект может быть помещён на временную линейку мувиклипа, включая другие клипы. Ролики, загруженные во Flash-плейер с помощью loadMovie также представляют собой миниатюрные Flash-клипы. Все мувиклипы, загружаемые ролики и основная временная линейка являются объектами Flash-клипа, их свойства и методы могут меняться посредством ActionScript для создания сложной нелинейной анимации и обеспечения мощных интерактивных возможностей.
Вы можете контролировать поведение мувиклипов, используя соответствующие команды (actions) и объектные методы MovieClip. Команды и методы могут относиться к каким-либо кадрам или кнопкам клипа (frame and button actions) или к определённым клипам-элементам (clip actions). Команды в клипе могут управлять любой временной линейкой во всём фильме. Чтобы реализовать эту возможность, следует указать соответствующий путь (target path). Он отражает местоположение интересующей Timeline в ролике.
Вы также можете превратить мувиклип в модуль со встроенным "интеллектом" ("smart" clip). Смарт-клип ? мувиклип с ActionScript, который может быть перепрограммирован без использования панели Actions. Такие мувиклипы упрощают передачу объектов со сложной логикой на основе ActionScript от программиста дизайнеру.
Создание интерактивности на ActionScript: Краткий обзор
Интерактивный клип создает ощущение причастности к действию у вашей аудитории. Используя клавиатуру и мышь ваши клиенты могут переходить к различным частям клипа, перемещать объекты, вводить информацию, нажимать кнопки и выполнять много других интерактивных действий.
Интерактивные клипы создаются путем написания скриптов, которые выполняются, когда происходят определенные события. События, которые могут запускать скрипт, происходят в тот момент, когда клип достигает определенного кадра, когда муви-клип загружаться или выгружается, когда пользователь нажимает на кнопку или клавишу на клавиатуре и т.п. Команды ActionScript, используемые для создания скриптов, сообщают флеш-плееру, что делать, когда данное событие происходит.
Вот следующие основные действия, позволяющие управлять навигацией и взаимодействием пользователя с клипом:
![]() |
Запускать и останавливать клип |
![]() |
Изменять качество вывода клипа на экран |
![]() |
Отключать все звуки |
![]() |
Переходить на другой кадр или сцену |
![]() |
Переходить на другой URL |
![]() |
Проверять загружен ли какой-то кадр |
![]() |
Подгружать и выгружать дополнительные клипы |
Для более детализированной информации об этих действиях, см. Flash Help.
Чтобы создавать более сложное взаимодействие, необходимо освоить следующие приемы:
![]() |
Создание собственного курсора |
![]() |
Определение позиции мыши |
![]() |
Перехват нажатий клавиш |
![]() |
Создание текстового поля со скроллингом |
![]() |
Установка значений цвета муви-клипа |
![]() |
Создание средств управления звуком |
![]() |
Обнаружение пересечений |
Создание настраиваемого интерфейса
Настраиваемый интерфейс ? это Flash-клип, позволяющий вам вводить значения, которые будут передаваться смарт-клипу. Такой интерфейс заменяет панель Clip Parameters.
![](images/ch04/04customClipParam.gif)
Панель Clip Parameters с роликом настраиваемого интерфейса.
![](images/ch04/04noCustomClipParam.gif)
Тот же смарт-клип без настраиваемого интерфейса в панели Clip Parameters
Любые величины, вводимые вами с использованием настраиваемого интерфейса, передаются из панели Clip Parameters смарт-клипу через клип-посредник в таком интерфейсе. Позволяющий совершить такой обмен клип должен иметь имя элемента xch. Если настраиваемый интерфейс выбран в диалоговом окне Define Clip Parameters, элемент смарт-клипа передаёт заданные параметры клипу xch и любые новые величины, введённые с помощью такого интерфейса, копируются в xch и передаются обратно смарт-клипу.
Вам следует разместить клип xch на главной линейке ролика интерфейса и xch должен быт всегда загружен. Клип xch должен содержать только те значения, которые необходимо передать смарт-клипу. Он не может содержать графики, других клипов или выражений ActionScript, xch ? это просто контейнер, через который передаются значения. Через клип xch вы можете предавать объекты верхнего уровня, например, Arrays (массивы) и Objects (объекты), но не вложенные массивы или объекты.
Создание настраиваемого интерфейса для смарт-клипа:
1 | Выберите File > New, чтобы создать новый Flash-ролик. |
2 | Выберите Insert > New Symbol, чтобы создать клип для обмена данными. |
3 | Создайте новый слой и назовите его "Exchange Clip" (клип для обмена данными). |
4 | Выберите слой с "Exchange Clip" и переместите сам клип-посредник из окна библиотеки на сцену в кадр 1. |
5 | Выберите этот клип на сцене, затем Window > Panels > Instance и введите имя xch. |
6 | Создайте элементы интерфейса, которые будет использовать автор для настройки параметров. Например, выпадающее меню, кнопки выбора (radio buttons) или перемещаемые меню. |
7 | Используйте команду set variable, чтобы копировать переменные и объектные значения в элемент xch. |
Например, если кнопка используется в качестве элемента интерфейса, она может вызывать команду, которая устанавливает значение переменной vertical и передаёт его в xch: | |
on (release){ _root.xch.vertical = true; } | |
8 | Экспорт ролика в SWF-файл. |
![]() |
Чтобы использовать настраиваемый интерфейс SWF со смарт-клипом, вам необходимо связать их в диалоговом окне Define Clip Parameters библиотеки, которая содержит смарт-клип. Отличная идея сохранять SWF-файл в той же директории, что и FLA, содержащий смарт-клип. Если вы многократно используете смарт-клип в другом файле или передаёте смарт-клип другому разработчику, он и настраиваемый интерфейс SWF должны оставаться в таком же относительном друг-друга расположении.
Создание скроллинга в текстовом поле
Возможно использование scroll и maxscroll свойств для перемещения (скроллинга) текста в текстовом поле (ТП).
На панели Text Options (опции текста), можно назначать переменную любому текстовому полю и установить режим Вводимый или Динамический Текст. ТП действует как окно, в котором отображается значение этой переменной.
Каждая переменная, связанная с ТП, имеет свойства scroll и maxscroll. Можно использовать эти свойства для скроллинга текста в ТП. Свойство scroll возвращает номер наивысшей видимой в настоящий момент строки ТП, допускается как установка, так и считывание текущего значения свойства. Свойство maxscroll возвращает номер наивысшей видимой строки ТП, когда самая нижняя строка станет видимой. Значение этого свойства можно только считывать, но не задавать.
Допустим имеется текстовое поле, содержащее четыре строки. Оно имеет переменную speech, содержащую девять строк текста, поэтому только часть переменной speech может быть показана одновременно (условно она обозначена прямоугольником):
![](images/ch03/03speech.gif)
Вы можете обращаться к этим свойствам, используя dot (точечный) синтаксис:
textFieldVariable.scroll myMovieClip.textFieldVariable.scroll textFieldVariable.maxscroll myMovieClip.textFieldVariable.maxscroll
Для создания скроллинга в текстовом поле:
1 | Создать ТП на рабочем поле. | |
2 | Выбрать Window > Panels > Text Options. | |
3 | Выбрать Input Text из всплывающего меню. | |
4 | Ввести имя переменной text в поле Variable (переменная). | |
5 | Чтобы изменить размеры ТП, взять его нижнюю часть за правый угол и перетащить на новое место. ![]() | |
6 | Выбрать Window > Actions. | |
7 | Выделить первый кадр на основной линейке (Timeline) и назначить команду set variable, которая установит значение переменной text. | |
Никакой текст не появится в поле, пока не будет задано значение переменной. Поэтому, хотя Вы можете назначать эту команду любому кадру, кнопке или муви-клипу, это хорошая идея дать команду первому кадру на главной линейке, как показано здесь: ![]() | ||
8 | Выбрать Window > Common Libraries > Buttons и перетащить кнопку на рабочее поле. | |
9 | Нажать Alt (Windows) или Option (Macintosh) и протащить эту кнопку, чтобы сделать ее копию. | |
10 | Выделить верхнюю кнопку и выбрать Window > Actions. | |
11 | Перетащить команду set variables из списка команд в окно скрипта на панели команд (Actions panel). | |
12 | Ввести text.scroll в строку Variable (переменная). | |
13 | Ввести text.scroll -1 в строку Value (значение) и включить Expression check box. | |
14 | Выделить нижнюю кнопку и назначить следующую команду set variables: | |
text.scroll = text.scroll+1; | ||
15 | Выбрать Control > Test Movie для тестирования полученного результата. | |
![]() |
Для большей информации о scroll и maxscroll свойствах, см. соответствующие подразделы ActionScript Словаря.
Создание смарт-клипов
"Смарт" (умным) клипом называется клип с определёнными параметрами, которые могут быть изменены. Такие параметры затем передаются командам смарт-клипа, что влечёт изменение его поведения (работы).
Чтобы создать такой клип, вам следует назначить параметры символу клипа в библиотеке. Можно использовать ActionScript в смарт-клипах, обрабатывающий параметры клипа, что похоже на то, когда вы используете аргументы при определении функции. Вы можете выбрать элемент в виде смарт-клипа на сцене и изменить значение параметров в панели Clip Parameters. Во время воспроизведения величины, установленные там, посылаются смарт-клипу до выполнения каких либо команд, присутствующих в ролике.
Смарт-клипы очень полезны для передачи сложных Flash-элементов от программиста дизайнеру. Программист может писать команды в таком клипе с переменными, управляющими клипом и роликом. Дизайнер может затем изменять значения этих переменных в панели Clip Parameters без открытия панели Actions.
Вы можете использовать смарт-клипы для создания элементов интерфейса, таких как кнопок выбора (radio buttons), выпадающих меню (pop-up menus), tooltips, surveys, игр и avatars. Любой клип, который вы хотите использовать повторно, но найти ему другое применение без изменения скриптов, будет хорошим смарт-клипом.
Кроме этого, вы можете создать настраиваемый интерфейс во Flash для панели Clip Parameters, чтобы облегчить труд дизайнера-разработчика, окончательно модифицирующего клип.
Создание собственного курсора
Чтобы скрыть стандартный курсор (указатель мыши), используется hide метод предопределенного объекта Mouse. Для использования муви-клипа как собственного курсора, применяется команда startDrag.
Чтобы видеть анимированную демонстрацию такого курсора подвигайте мышь в клипе.
Создание собственного курсора:
1 | Создать муви-клип для использования его в качестве собственного курсора. |
2 | Выделить его на рабочем поле. |
3 | Выбрать Window > Actions для открытия панели команд (Object Actions panel). |
4 | В открывшемся списке выбрать Objects, затем Mouse и переместить команду hide в окно скрипта (Script window). |
Код будет выглядеть следующим образом: | |
onClipEvent(load){ Mouse.hide(); } | |
5 | В списке выбрать раздел Actions затем перетащить startDrag в окно скрипта (Script window). |
6 | Включить опцию Lock Mouse to Center. |
Код будет выглядеть следующим образом: | |
onClipEvent(load){ Mouse.hide() startDrag("this", true); } | |
7 | Выбрать Control > Test Movie для использования собственного курсора. |
![]() |
При использовании собственного курсора, кнопки, находящиеся в клипе, будут функционировать, как и раньше. Поэтому будет лучше, если собственный курсор поместить в верхний слой линейки, чтобы он перемещался над кнопками и другими объектами.
Для подробной информации о методах объекта Mouse, см. ActionScript словарь.
Создание средств управления звуком
Для управления звуком во флеш-клипе существует предопределенный объект Sound. Чтобы использовать его методы, сначала необходимо создать новый объект Sound, затем при помощи метода attachSound из библиотеки в клип вставляется звук.
Метод setVolume объекта Sound управляет уровнем (громкостью) звука, а метод setPan корректирует баланс правого и левого каналов. Следующий пример использует setVolume и setPan для управления уровнем громкости и балансом.
Изменение громкости и баланса осуществляется перемещением соответствующих ползунков 1.
Создание средств управления звуком:
1 | Выбрать File > Import для импорта звука в проект. |
2 | Выделить звук в библиотеке и в меню библиотеки выбрать Options > Linkage. |
3 | Выбрать опцию Export This Symbol и присвоить ей идентификатор mySound. |
4 | Выделить первый кадр на основной линейке (Timeline) и выбрать Window > Actions. |
5 | Перетащить команду set variable из левого списка в окно скрипта. |
6 | Ввести s в строку Variable (переменная). |
7 | Выбрать в списке Objects, затем Sound и перетащить new Sound в строку Value (значение). |
В результате должен получиться следующий код: | |
s = new Sound(); | |
8 | Дважды щелкнуть на команде evaluate из раздела Action, чтобы перейти на новую строку в окне скрипта. |
9 | Ввести s в строке Expression (выражение). |
10 | Из списка Objects выбрать Sound и перетащить attachSound в строку Expression (выражение). |
11 | Ввести "mySound" в качестве аргумента-идентификатора (ID argument) команды attachSound. |
12 | Опять дважды щелкнуть на команде evaluate для перехода на новую строку в окне скрипта. |
13 | Ввести s в строке Expression (выражение). |
14 | Из списка Objects выбрать Sound и перетащить команду start в строку Expression (выражение). |
В результате должен получиться следующий код: | |
s = new Sound(); s.attachSound("mySound"); s.start(); | |
15 | Выбрать Control > Test Movie для тестирования результата. |
![]() |
Создание ползунка для контроля громкости:
1 | Перетащить кнопку из библиотеки на рабочее поле. |
2 | Выделить ее и выбрать Insert > Convert to Symbol. Создать элемент типа муви-клип. |
Этот вновь созданный муви-клип, в своем первом кадре, будет содержать нашу кнопку. | |
3 | Выделить этот мувик и выбрать Edit > Edit Symbol. |
4 | Выделить кнопку и выбрать Window > Actions. |
5 | Ввести следующие команды: |
on (press) { startDrag ("", false, left, top, right, bottom); dragging = true; } on (release, releaseOutside) { stopDrag (); dragging = false; } | |
В команде startDrag параметры left, top, right и bottom являются переменными. | |
6 | Выбрать Edit > Edit Movie для возврата на основную линейку (Timeline). |
7 | Выделить этот муви-клип в рабочем поле. |
8 | Ввести следующие команды: |
onClipEvent (load) { top=_y; left=_x; right=_x; bottom=_y+100; } onClipEvent(enterFrame){ if (dragging==true){ _root.s.setVolume(100-(_y-top)); } } |
|
9 | Выбрать Control > Test Movie для тестирования результата. |
![]() |
1 | Перетащить из библиотеки в рабочее поле новую кнопку. |
2 | Выделить ее и выбрать Insert > Convert to Symbol. Создать еще один муви-клип. |
3 | Выделить вновь созданный мувик и выбрать Edit > Edit Symbol. |
4 | Выделить кнопку и выбрать Window > Actions. |
5 | Ввести следующие команды: |
on (press) { startDrag ("", false, left, top, right, bottom); dragging = true; } on (release, releaseOutside) { stopDrag (); dragging = false; } | |
Как и в предыдущем случае команда startDrag имеет параметры left, top, right и bottom являющиеся набором переменных клипа. | |
6 | Выбрать Edit > Edit Movie для возврата к основной линейке. |
7 | Выделить этот новый мувик. |
8 | Ввести следующие команды: |
onClipEvent(load){ top=_y; bottom=_y; left=_x-50; right=_x+50; center=_x; } onClipEvent(enterFrame){ if (dragging==true){ _root.s.setPan((_x-center)*2); } } |
|
9 | Выбрать Control > Test Movie и наслаждаться полученным результатом. |
![]() |
Oт переводчика:
В исходном доке не оказалось примера, пришлось сделать свой :)
Установка значений цвета муви-клипа
Можно использовать методы предопределенного объекта Color для корректировки цвета муви-клипа. Метод setRGB задает шестнадцатеричное RGB (red, green, blue) значение цвета объекта, а метод setTransform устанавливает процент и значения смещений для красного, зеленого, синего и степень прозрачности альфа канала. В этом примере, setRGB изменяет цвет объекта на введенный пользователем.
Для изменения цвета футболки, введите шестнадцатеричное значение нового цвета (например, cc66ff, или 0033cc) в текстовом поле внизу и нажмите на кнопку.
Для использования объекта Color создайте объект муви-клип.
Устанавить значение цвета муви-клипа:
1 | Выделить муви-клип на рабочем поле, и выбрать Window > Panels > Instance. |
2 | Ввести имя colorTarget в строке Name. |
3 | Создать текстовое поле. |
4 | Выбрать Window > Panels > Text Options и присвоить ему имя переменной input. |
5 | Расположить кнопку на рабочем поле и выделить ее. |
6 | Выбрать Window > Actions. |
7 | Перетянуть команду set variable из левого списка в окно скрипта (Script window). |
8 | В строке Variable (переменная), ввести c. |
9 | В списке выбрать Objects, затем Color и перетянуть new Color в строку Value (значение). |
10 | Включить Expression check box. |
11 | Нажать на кнопку Target Path (находится в правом нижнем углу панели в виде перекрестия) и выбрать colorTarget. Нажать OK. |
Код в окне скрипа будет выглядеть так: | |
on(release) { c = new Color(colorTarget); } | |
12 | Перетянуть команду evaluate из списка в окно скрипта. |
13 | Ввести c в строку Expression (выражение). |
14 | В Objects категории списка выбрать Color; затем перетащить setRGB в строку Expression. |
15 | Выбрать Functions и перетащить parseInt в строку Expression. |
Код будет выглядеть так: | |
on(release) { c = new Color(colorTarget); c.setRGB(parseInt(string, radix)); } | |
16 | Для string аргумента команды parseInt, введите input. |
Строка, которую нужно анализировать - значение переменной, введенное в доступное для редактирования текстовое поле. | |
17 | Для radix аргумента команды parseInt, введите 16. |
radix - основание системы счисления, анализируемого аргумента string. В нашем случае - шестнадцатеричная (значения RGD для объекта Color). Код скрипта будет таким: | |
on(release) { c = new Color(colorTarget); c.setRGB(parseInt(input, 16)); } | |
18 | Выбрать Control > Test Movie для тестирования результата. |
![]() |
Для большей информации о методах объекта Color, см. соответствующие подразделы ActionScript Словаря.
Загрузка и выгрузка дополнительных клипов
Вы можете использовать команду или метод loadMovie для воспроизведения дополнительных роликов, не закрывая Flash-плейер или для переключения клипов без загрузки нового HTML-документа. Можно использовать loadMovie и для посылки переменных CGI-скрипту, который генерирует SWF-файл в результате своего выполнения. Если фильм загружен, вы можете указать уровень или клип, в которые будет загружаться дополнительный ролик.
Команда и метод unloadMovie удаляют ролик, предварительно загруженный с помощью loadMovie. Выгрузка ролика посредством unloadMovie обеспечивает плавный переход между роликами и может освободить память, требуемую для Flash-плейера. Используйте команду loadMovie для решения следующих задач:
![]() |
Воспроизведение последовательности рекламных баннеров в виде SWF-файлов с помощью вызова команды loadMovie в конце каждого из них для загрузки следующего |
![]() |
Разработка разветвлённого интерфейса, позволяющего пользователю выбирать среди нескольких различных SWF-файлов |
![]() |
Построение навигационного интерфейса с элементами управления в слое 0, загружающие другие слои. Загрузка слоёв позволяет осуществить более плавные переходы, чем тот же механизм, реализованный на основе смены HTML-страниц. |