Конвейеры!
Скорее всего вы уже убедились в полезности и мощи использования конвейера. Трудно не убедится.
Но это еще не все. Мы работаем с одним общим конвейером для всех элементов приложения. А почему бы нам не использовать локальные конвейеры в своих компонентах? Мы можем значительно расширить их функциональность за счет конвейеров. И не всегда хорошо, что все действия идут друг за другом. Независимые процессы можно запускать параллельно в нескольких компонентах. При этом они могут синхронизироваться через главный конвейер.
Трудно отказаться от удобства конвейера при решении локальных задач в каждом компоненте. Там есть и анимация, и действия, которые не должны пересекаться.
Значит, необходимы конвейеры!
И нет ничего проще. При инициализации компонентов создадим локальный конвейер:
import com.potapenko.managers.Conv;
this.Сonv = Conv.create();
|
И теперь компонент сможет работать со своим локальным конвейером и иметь доступ ко всем его методам: put, include, stop, play, anim.
Хотим сделать «мерцание» (blink) нашего компонента?
Нет ничего легче:
var a = [80, 50, 20, 50, 80, 100];
for (var i=0;ii<a.length;i++)
{
this.Conv.put(this, "_alpha", "1", a[i]);
}
|
Очевидно, что так, куда проще, чем через onEnterFrame.
А теперь сделаем blink , но чтобы головной конвейер нас «подождал».
Conv.stop();
var a = [80, 50, 20, 50, 80, 100];
for (var i=0;ii<a.length;i++)
{
this.Conv.put(this, "_alpha", "1", a[i]);
}
this.Conv.put(Conv, "play", 0); |
Почти многопоточность.
Класс конвейера
На сегодняшний момент существует две версии конвейера: для AS 1.0 и AS 2.0. Вторая версия – обладает всем функционалом, описанным в данной статье. В первой версии отсутствуют некоторые анимационные возможности: длительность анимации и анимация по дуге, однако основной функционал присутствует.
Конвейер всех версий может работать во Flash-плеере, начиная с шестой версии. Использование конвейера для АS2 :
import com.potapenko.managers.Conv;
class TestConveyor
{
// ссылка на "главный" конвейер
private var gConv = Conv.getInstace();
// ссылка на "локальный конвейер
private var lConv = Conv.create();
public function testMethod()
{
// используем главный конвейер
gConv.put(trace, "hello, world!", 100);
// используем локальный конвейер
lConv.put(trace, "hello, world!", 100);
}
} |
В AS 2 версии, конвейер использует шаблон «Singleton», и доступ к главному конвейеру возможет только через ссылку, получаемую с помощью метода getInstance. Создание нового, локального конвейера, как описывалось выше, происходит с помощью метода create.
Использование конвейера в AS 1:
#include "com/potapenko/Conveyor/Conveyor.as"
Conv.put(trace, "hello, world!", 100); |
Заключение Желаю вам удачи на поприще конвейеризации своих приложений. Ну и под конец сформулируем еще раз, что дает технология конвейера:
- Создаются последовательности действий со своей продолжительностью во времени. И следующее действие может начаться только тогда, когда закончится предыдущее.
- Создание иерархических, вложенных списков. Один элемент может содержать (создать) еще список, элемент которого так же может создать еще список и т. д.
- Распределение вычислений во времени и, как следствие, уменьшение нагрузки на плеер. Приложение работает быстро и легко.
- Универсальная, гибкая и мощная технология анимации мувиклипов из точки в точку. По прямой и по дуге.
- Кроме общего (глобального) конвейера, создание собственных (локальных) конвейеров для каждого компонента. Конвейеры независимы друг от друга.
- Управление и синхронизация работы компонентов и их конвейеров через глобальный конвейер.
- Мы получили универсальную и мощную систему описания любой программной анимации во Flash. Мы будем «писать код во времени».
Вы можете загрузить механизм конвейера в разделе «framework» данного сайта.
В следующей статье, мы подробнее остановимся на тонкостях применения конвейера для создания анимации и описанию логики приложений
(статься готовится).
Предыдущая часть
[1] [2] [3] [4] [5] [6] [7] |