Шукати в цьому блозі

покадрова Анимація

-- создаем масив изображений для анимации
local kadr = {}
kadr[1] = Bitmap.new(Texture.new("image1.png"))
kadr[2] = Bitmap.new(Texture.new("image2.png"))

--создадим анимацию из 2 кадров  длительностью  в 20фреймов
local anim1 = MovieClip.new{
-- с 1 по 10 фрейм показываем кадр 1
{1, 10, kadr[1]},
---- с 10 по 20 фрейм показываем кадр 2
{10, 20, kadr[2]},
}
-- укажем расположение анимации и  добавим в игровой уровень
anim1:setPosition(150,150)
stage:addChild(anim1)

--чтобы зациклить анимацию по кругу  создаем событие при достижении  20 фрейма переходим  в 1й фрейм
anim1:setGotoAction(20, 1)

-- Запускаем проигрывание анимации
anim1:gotoAndPlay(1)


------------------------------------------------
Для економії кадри можна використовувати кілька разів - наприклад нам потрібно програти анімацію вперед і назад - і замість 5ти кадрів анімації ми використовуємо кадри повторно і використовуємо тільки 3 картинки замість 5ти.
----------------------------------------------------
local kadr = {}
kadr[1] = Bitmap.new(Texture.new("image1.png"))
kadr[2] = Bitmap.new(Texture.new("image2.png"))
kadr[3] = Bitmap.new(Texture.new("image3.png"))

-- создаем анимацию 5 кадров длительностью 30 фреймов (1 кадр = 5 фреймов)
local anim1 = MovieClip.new{
{1, 5, kadr[1]},
{5, 10, kadr[2]},
{10, 15, kadr[3]},
--тут используем старые кадры ток в обратном порядке 
{15, 20, kadr[2]},
{25, 30, kadr[1]},
}
-- устанавливаем позицию на екране и добавляем анимацию в уровень
anim1:setPosition(250,250)
stage:addChild(anim1)
-- запускаем анимацию / поскоку мы не создали событие   anim1:setGotoAction(20, 1)  то анимация проиграется ток 1 раз  (зациклить надо с 20 фрейма  а не 30 чтобы  кадр1 не проигрывался  дважды).
anim1:gotoAndPlay(1)
-------------------------------------------------
Як зробити Кілька варіантів анімацій
--------------------------------------------------
local eliAnim = MovieClip.new{
{1, 7, self.anim[1]},
{8, 15, self.anim[2]},
{16, 18, self.anim[1]},
{19, 21, self.anim[2]},
}
eliAnim:setGotoAction(15, 1)    --> frames 1-15: slow animation  зацикливаем  1й и 15 кадры
eliAnim:setGotoAction(21, 16)   --> frames 16-21: fast animation

eliAnim:gotoAndPlay(1) --> проиграть 1анимацию
eliAnim:gotoAndPlay(16) --> проиграть 2 анимацию
----------------------------------------------------
Анімація руху
Властивості які доступні для анімації:
X, y, rotation, scale, scaleX, scaleY, alpha

Типи анімації руху:
---------------------------------------------------
"inBack"
* "outBack"
* "inOutBack"
* "inBounce"
* "outBounce"
* "inOutBounce"
* "inCircular"
* "outCircular"
* "inOutCircular"
* "inCubic"
* "outCubic"
* "inOutCubic"
* "inElastic"
* "outElastic"
* "inOutElastic"
* "inExponential"
* "outExponential"
* "inOutExponential"
* "linear"
* "inQuadratic"
* "outQuadratic"
* "inOutQuadratic"
* "inQuartic"
* "outQuartic"
* "inOutQuartic"
* "inQuintic"
* "outQuintic"
* "inOutQuintic"
* "inSine"
* "outSine"
* "inOutSine"
----------------------------------------------------------
Приклад X-руху анімації 'лінійний' (лінійний)

- побудувати анімацію на 100 кадрів, де х координата шрифтів спрайта від 0 до 200 лінійно
---------------------------------------------------------
local mc = MovieClip.new{
        {1, 100, sprite, {= {0, 200, "linear"}}}  -- проиграть с 1 до 100кадра с движением по оси  Х от 0 до 200
       --mc:setGotoAction(100, 1)  - зациклить анимацию  после 100 фрейма переходить на 1й
}
----------------------------------------------
Ще приклад:
--------------------------------------------------
local mc = MovieClip.new{
        {1, 100, sprite1, {= {0, 200, "linear"}}},
        {50, 150, sprite1, {= {0, 100, "linear"}}, {alpha = {0, 1, "easeOut"}}},
        {100, 200, sprite2, {= {0, 200, "linear"}}},
}

Немає коментарів:

Дописати коментар