Skip to content

components.MovieClip

vasili.kostin edited this page Aug 21, 2021 · 24 revisions

Наследуется от DSprite, и включает в себя все его свойства.

MovieClip - самый главный и мощный компонент Thing-Editor, который позволяет визуально задать анимацию для всех его свойств. Сложные анимации создаются путем вложения множества MovieClip компонентов друг в друга. MovieClip имеет на таймлайне "метки перехода", позволяющие программно переключать анимацию в любой момент. Переключение анимации происходит бесшовно, из любого состояния. Ключевые кадры поддерживают вызовы методов (callback) которые можно использовать для запуска других анимаций, воспроизведения звуков, передачи событий в javascript код. подробнее про редактор анимаций (Timeline)

Редактируемые свойства:

isPlaying

Тип: Boolean

Свойство, определяющее воспроизводится ли анимация в данный момент.


delay

Тип: Number

Это поле позволяет приостановить воспроизведение анимации, на заданное количество кадров. До тех пор пока значение этого поля больше нуля, оно уменьшается на единицу каждый кадр, при этом, анимация стоит на месте. В том случае, когда поле isPlaying находится в состоянии выключено (false), delay свойство не уменьшается.


timeline

Это поле хранит данные об анимации. В javascript обращение к этому полю не имеет смысла. В редакторе свойств оно представляет из себя кнопку, открывающую Редактор анимаций с горячей клавишей (Ctrl + L). Все подробности о работе с анимацией вы найдете в описании Редактора анимаций


__logLevel

Это поле включает логирование событий происходящих в данном экземпляре MovieClip во время выполнения игры. Поддерживается три уровня логирования: level 1 - отображает информацию о переходах на метки анимации, level 2 - отображает информацию о вызовах callback из ключевых кадров анимации, break on callbacks - вызывает остановку выполнения javascript перед вызовом каждого callback из ключевых кадров анимации, что позволяет пошагово отладить вызов.


__previewFrame

Данное поле определяет кадр таймлайна, который будет взят в качестве состояния по умолчанию для данного MovieClip объекта. Например, если анимация некоторого объекта начинается с полной прозрачности (alpha = 0), то в режиме редактирования сцены, такой объект будет полностью прозрачным и невидимым, пока его не выделить в дереве сцены. Если необходимо, чтобы такой объект был постоянно видим в окне сцены - нужно установить его __previewFrame на кадр, в котором его alpha больше нуля. Быстро задать __previewFrame можно кликом по шкале времени таймлайна с зажатой клавишей Ctrl.

Поле __previewFrame не включается в релизный билд игры, так как его название начинается с двойного знака подчеркивания. Подробнее о именовании редактируемых полей


Методы:

gotoLabel (labelName : String)

Метод, позволяющий сделать переход MovieClip`а к определенной точке на временной шкале, заданной в редакторе анимаций (Timeline).


gotoRandomLabel(labelName1 : String, labelName2 : String, ...)

Метод, позволяющий сделать переход MovieClip`а к случайной метке. Каждая метка передается в виде отдельного параметра. Данный метод позволяет делать случайные переходы по анимации, без написания дополнительного кода, через назначения данного метода ключевому кадру в качестве значения для action свойства. Указание одного и того-же имени метки более одного раза, увеличивает шанс перехода на данную метку. Если одна или несколько меток указаны пустыми, то выпадение такой пустой метки для перехода будет проигнорировано, что позволяет с некоторой вероятностью продолжить анимацию без перехода куда либо.


gotoLabelIf(labelName : String, variablePath : String, invert: Boolean)

Переход MovieClip'а на указанную метку, в случае если значение переменной, указанной по пути variablePath, является истинным. Формат указания пути к переменной совпадает с форматом Data-Path редактора. Параметр invert позволяет инвертировать условие перехода. Данный метод введен для возможности условных переходов в редакторе анимаций (Timeline), без написания дополнительного кода. см. Пример


gotoLabelRecursive (labelName : String)

Метод вызывает переход MovieClip'а и всех вложенных в него MovieClip'ов к метке на временной шкале. Если какой-либо из MovieClip'ов не имеет метки с заданным именем, действие метода для него игнорируется.

Важно заметить, что не смотря на то, что описание метода gotoLabelRecursive() находится в данном разделе, физически это метод находится в компоненте Container от которого наследуются все остальные компоненты, по этому, данный метод может быть вызван для любого компонента Thing-Editor.

Благодаря своему рекурсивному действию, метод gotoLabelRecursive может использоваться для гибкого управления происходящими на игровом экране событиями. Например если в игре имеется некоторое событие game-over, то в javascript при наступлении окончания игры, можно добавить строку game.currentScene.gotoLabelRecursive('game-over');, которая заденет все до единого MovieClip'ы, присутствующие на сцене. Теперь, к примеру, чтобы некоторый игровой персонаж, начинал злостно смеяться в тот момент, когда игрок проиграл, достаточно добавить на timeline такого персонажа метку с именем game-over которая будет указывать на анимацию смеха.

При этом game-over метку может содержать только голова персонажа, а остальные MovieClip'ы из которых он состоит - нет. В этом случае персонаж может начать смеяться, продолжив свое предыдущее действие остальными частями тела.

В дальнейшем вам может прийти идея другого персонажа, который может начать плакать при наступлении события 'game-over', для того чтобы эта новая идея заработал вам достаточно создать этому персонажу метку game-over и соответствующую анимацию на таймлайне.

Такой подход дает большую гибкость, и избавляет от необходимости синхронизировать javascript код с добавляемыми/удаляемыми MovieClip'ами, оставляя javascript код очень компактным, даже для персонажей/объектов с очень сложной иерархией.

Подробнее об анимации в Thing-Editor


hasLabel (labelName : String)

Возвращаемое значение: String

Метод, проверяющий имеется ли у MovieClip метка с заданным именем.


play ()

Метод, запускающий анимацию. Действие этого метода равносильно присвоению isPlaying = true. Данный метод добавлен для возможности управление анимацией в callbacks редакторе


stop ()

Метод, останавливающий анимацию. Действие этого метода равносильно присвоению isPlaying = false. Данный метод добавлен для возможности управление анимацией в callbacks редакторе


playRecursive ()

Этот метод устанавливает this.isPlaying = true как для самого MovieClip, так и для всех вложенных в него MovieClip'ов.


stopRecursive ()

Этот метод устанавливает this.isPlaying = false как для самого MovieClip, так и для всех вложенных в него MovieClip'ов.


__EDITOR_getKeyframeIcon (action)

Данный метод позволяет добавить собственные иконки для ключевых кадров, компонентам, унаследованным от MovieClip. Объявление данного метода должно быть обернуто в теги условной компиляции /// #if EDITOR, /// #endif

<- Предыдущая страница Следующая страница ->

Связанные темы:

Редактор анимаций (Timeline)

Свойства, унаследованные от DSprite

Компоненты

Callback редактор

Редактируемые поля

Clone this wiki locally