Skip to content

Lexeria/animaster

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

45 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

БСгодня ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ для "АнимастСра". Π­Ρ‚ΠΎ скрипт, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ анимациями.

Π£ΠΆΠ΅ написано нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π΄Π΅Π»Π°ΡŽΡ‰ΠΈΡ… элСмСнтарныС Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ play Π²ΠΎΠ·Π»Π΅ названия Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ запустят Π΅Π΅.

  1. Π‘ΠΎΠ·Π΄Π°ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ animaster

  2. БСйчас Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ (move, fadeIn, scale) Π»Π΅ΠΆΠ°Ρ‚ Π² глобальной области видимости ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ простыС названия β€” ΠΈΡ… Π»Π΅Π³ΠΊΠΎ случайно ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΡΠΏΡ€ΡΡ‡ΡŒ ΠΈΡ… опрСдСлСния Π²Π½ΡƒΡ‚Ρ€ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ animaster. Ѐункция animaster Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ для запуска Ρ€Π°Π·Π½Ρ‹Ρ… Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ. Π‘Π΄Π΅Π»Π°ΠΉ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° страничкС всС Π΅Ρ‰Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

animaster().scale(element, 500, .8)
  1. По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ fadeIn создай Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ fadeOut, ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ элСмСнт.

  2. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Тизнь ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ анимастСра, поэтому напишСм для Π½ΠΈΡ… нСсколько слоТных Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ. Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ состоят ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… простых, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС ΠΈ Π² Π½ΡƒΠΆΠ½ΠΎΠ΅ врСмя. Π”ΠΎΠ±Π°Π²ΡŒ Π² интСрфСйс анимастСра Ρ‚Ρ€ΠΈ Π½ΠΎΠ²Ρ‹Π΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. НС Π·Π°Π±ΡƒΠ΄ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ с html-странички ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡ… Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ анимастСр:

    • moveAndHide β€” Π±Π»ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π½Π° 100 пиксСлСй Π²ΠΏΡ€Π°Π²ΠΎ ΠΈ Π½Π° 20 Π²Π½ΠΈΠ·, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΈΡΡ‡Π΅Π·Π°Ρ‚ΡŒ. ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π° Π²Ρ…ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ этом 2/5 Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±Π»ΠΎΠΊ двигаСтся, 3/5 β€” исчСзаСт.
    • showAndHide β€” Π±Π»ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ, ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΈ ΠΈΡΡ‡Π΅Π·Π½ΡƒΡ‚ΡŒ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ шаг Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ длится 1/3 ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.
    • heartBeating β€” имитация сСрдцСбиСния. Π‘Π½Π°Ρ‡Π°Π»Π° элСмСнт Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒΡΡ Π² 1,4 Ρ€Π°Π·Π°, ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊ 1. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ шаг Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 0,5 сСкунды. Анимация Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ бСсконСчно.
  3. Π‘Π΄Π΅Π»Π°ΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ сСрдцСбиСния:

    • сдСлай, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ heartBeating Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ stop
    • ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° stop анимация Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ (скорСС всСго, Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ‚Ρ‹ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ Π·Π°ΠΏΡƒΡΠΊΠ°Π΅ΡˆΡŒ)
    • добавь Π² Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΊΠ½ΠΎΠΏΠΊΡƒ stop ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ play
    • Π² ΠΊΠΎΠ΄Π΅ добавь ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠ»ΠΈΠΊΠ° ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ это сдСлано для ΠΊΠ½ΠΎΠΏΠΊΠΈ play. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ stop Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ
  4. Π‘Π΄Π΅Π»Π°ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ элСмСнтарной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π‘ΠΎΠ·Π΄Π°ΠΉ слуТСбныС (Π½Π΅ доступныС снаруТи анимастСра) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ resetFadeIn, resetFadeOut ΠΈ resetMoveAndScale. ВсС эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π½Π° Π²Ρ…ΠΎΠ΄ элСмСнт, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π°Π΄ΠΎ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ состояниС.

resetFadeIn ΠΈ resetFadeOut Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ css-классы Π² classList β€” каТдая ΠΈΠ· Π½ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ±ΠΈΡ€Π°Ρ‚ΡŒ всС дописанныС стили, устанавливая ΠΈΡ… Π² null:

element.style.Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉΠΠ½ΠΈΠΌΠ°Ρ†ΠΈΠ΅ΠΉΠ‘Ρ‚ΠΈΠ»ΡŒ = null;
  1. Π‘Π΄Π΅Π»Π°ΠΉ ΠΊΠ½ΠΎΠΏΠΊΡƒ reset для Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ moveAndHide ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ stop ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ². ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ reset ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ stop ΠΈΠ· heartBeating, Π° элСмСнт Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² исходноС состояниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π°.

  2. Π‘Π΄Π΅Π»Π°ΠΉ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ move ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΊ:

animaster().move(element, 500, {x: 20, y: 20});

Но ΠΈ Ρ‚Π°ΠΊ:

animaster().addMove(500, {x: 20, y:20}).play(element);

Для этого:

  • добавь ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ addMove ΠΈ play Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ animaster
  • Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΌ ΠΈΠ· анимастСра, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅ _steps β€” массив шагов Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ (Π² Π½Π°Ρ‡Π°Π»Π΅ пустой). ПолС _steps β€” ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠ΅. ΠŸΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ поля ΠΏΠΎ договорСнности ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с Π½ΠΈΠΆΠ½Π΅Π³ΠΎ подчСркивания.
  • ΠΌΠ΅Ρ‚ΠΎΠ΄ addMove Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ this (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ анимастСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вСрнулся ΠΈΠ· Π²Ρ‹Π·ΠΎΠ²Π° animaster)
  • ΠΌΠ΅Ρ‚ΠΎΠ΄ addMove Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΏΠΎΠ»Π΅ this._steps Π½ΠΎΠ²Ρ‹ΠΉ шаг Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅ΡˆΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ шаг, ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°ΠΉ сам. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ шаг Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ:

  • Π½Π°Π·Π²Π°Π½ΠΈΠ΅ элСмСнтарной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (move, fadeIn)
  • ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ шага Π² миллисСкундах
  • Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (смСщСниС для move, ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ для scale)
  • ΠΌΠ΅Ρ‚ΠΎΠ΄ play Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅ΠΌ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°
  • ΠΌΠ΅Ρ‚ΠΎΠ΄ play Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ всС шаги Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅ΠΆΠ°Ρ‚ Π² массивС this._steps, примСняя ΠΈΡ… ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΌΡƒ Π΅ΠΌΡƒ элСмСнту.
  1. Π‘Π΄Π΅Π»Π°ΠΉ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ move Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π° написанных Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ шагС ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ….

  2. Π‘Π΄Π΅Π»Π°ΠΉ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ addMove ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ addScale, addFadeIn ΠΈ addFadeOut. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π»ΠΈ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

  3. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ тСбя Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Ρ‚Π°ΠΊΠΎΠ΅ использованиС:

const customAnimation = animaster()
    .addMove(200, {x: 40, y: 40})
    .addScale(800, 1.3)
    .addMove(200, {x: 80, y: 0})
    .addScale(800, 1)
    .addMove(200, {x: 40, y: -40})
    .addScale(800, 0.7)
    .addMove(200, {x: 0, y: 0})
    .addScale(800, 1);
customAnimation.play(element);

Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ анимация запускаСтся, элСмСнт пСрСмСщаСтся ΠΏΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ ΠΈ мСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹. Π’ ΠΊΠΎΠ½Ρ†Π΅ элСмСнт возвращаСтся Π² ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ. Если customAnimation.play(element) Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ нСсколько Ρ€Π°Π· с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ элСмСнтами, Ρ‚ΠΎ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

  1. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈ слоТныС Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ moveAndHide, showAndHide ΠΈ heartBeating Π½Π° использованиС Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² add... ΠΈ play. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ showAndHide, добавь ΠΌΠ΅Ρ‚ΠΎΠ΄ addDelay, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ шаг, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ происходит Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ heartBeating, добавь Π² play Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„Π»Π°Π³ cycled, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ шаги Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π½Π°Π΄ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ бСсконСчно.

  2. ΠœΠ΅Ρ‚ΠΎΠ΄ play Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ stop (примСняСтся для heartBeating) ΠΈ reset. ΠœΠ΅Ρ‚ΠΎΠ΄ reset Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ элСмСнт Π² исходноС состояниС (Ρ‚ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ Π΄ΠΎ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ):

  • Ссли элСмСнт Π±Ρ‹Π» скрыт, Ρ‚ΠΎ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ
  • Ссли Π±Ρ‹Π» ΠΏΠΎΠΊΠ°Π·Π°Π½, Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ
  • Ссли элСмСнт Π±Ρ‹Π» сдвинут ΠΈΠ»ΠΈ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, Ρ‚ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² исходноС состояниС

Для этого Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡΡ функциями ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ элСмСнтарных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

  1. Π”ΠΎΠ±Π°Π²ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ buildHandler, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ сразу ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² addEventListener:
const worryAnimationHandler = animaster()
    .addMove(200, {x: 80, y: 0})
    .addMove(200, {x: 0, y: 0})
    .addMove(200, {x: 80, y: 0})
    .addMove(200, {x: 0, y: 0})
    .buildHandler();

document
    .getElementById('worryAnimationBlock')
    .addEventListener('click', worryAnimationHandler);

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ addEventListener Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли Π΅ΠΌΡƒ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½Π΅ ΡΡ‚Ρ€Π΅Π»ΠΎΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‚ΠΎ Π² качСствС контСкста Π²Ρ‹Π·ΠΎΠ²Π° this ΠΎΠ½ пСрСдаст Π΅ΠΉ DOM-элСмСнт с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ происходит событиС.

  1. * Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉ ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΅Ρ‰Π΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠΊΠ° Π½Π΅Ρ‚. Π’ качСствС ΠΈΠ΄Π΅ΠΉ, моТСшь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот сайт: http://leaverou.github.io/animatable/ Если Π½Π° этой страницС Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ "Animate All", становится вСсСло =)

  2. * БСйчас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Ρ‡Ρ‚ΠΎ Ссли Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

const a = animaster().addMove(111, {x: 10, y: -10})
const b = a.addFadeOut(400);

Π’ΠΎ ΠΏΡ€ΠΈ запускС a.play(el), выполнится ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΈ исчСзновСниС, хотя это ΠΈ Π½Π΅ оТидаСтся.

Π‘Π΄Π΅Π»Π°ΠΉ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Ρ‚Π°ΠΊΠΎΠΉ записи a ΠΈ b прСдставляли собой Ρ€Π°Π·Π½Ρ‹Π΅ Π½Π°Π±ΠΎΡ€Ρ‹ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π° любом шагС Π² Ρ†Π΅ΠΏΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Сю.

About

animaster task

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 58.6%
  • HTML 23.3%
  • CSS 18.1%