Симппа придумал и реализовал библиотеку, которая предназначена для работы с эффектами. Чтобы понять суть её предназначения рассмотрим пример) Допустим, мне нужно запустить 53 эффекта подряд, сразу бросается в глаза многочисленные таймеры, т.к. время проигрывания каждого эффекта совсем разное + между эффектами может быть задержка + эффекты должны реагировать на высокий бит звука. Вот как раз эту проблему на 5+ решает данная библиотека.

Тут играет роль три основных класса, первых два мы будем писать сами: Modifier, Assets, TinyEngine.

Modificator - класс, наследующийся от AbstractModifier, который предназначен для реализации эффекта.

Assets- класс, наследующийся от AbstractAssets, реализующий Канвас, главную битмапу, в которую всё и рисуется, Так как модификатор имеет свободный доступ к этому классу, тут обычно держат все текстуры, 3д-движки и т.д.

TinyEngine - класс, содержащий звук, массив модификаторов, начала и конца их воспроизведения в секундах, другими словами, мы можем указать время жизни данного эффекта.
Каждый модификатор должен переопределять три метода:
- initializeModifier(data:RenderData) вызывается в начале воспроизведения данного модификатора, подготавливаем все необходимые объекты для реализации эффекта.
- disposeModifier() вызывается в конце воспроизведения данного модификатора, тут мы чистим все объекты, которые создали.
- render(data:RenderData) во время воспроизведения модификатора, мы манипулируем всеми необходимыми объектами(добавляем фильтры, изменяем цвет и т.д. и т.п.), и рисуем результат в Канвас.

Пример:
Создадим свой ассет класс, и нарисуем в Канвас черный квадрат.

Далее создадим модификатор, который скролит канвас.

И в классе Main всё оформляем)

Более красивый и сложным пример. Исходник демки.