[JS html5 Canvas] Эффект волнистые кольца + sources

Поделиться
HTML-код
  • Опубликовано: 11 окт 2024
  • В видео создадим эффект перемещения волн по окружности,
    данная анимация набирает популярность и всё чаще встречается на просторах интернета в разных вариациях.
    При создании кода не будут использованы дополнительные библиотеки, только чистый JS.
    В ролике что-то было не понятно? Пишите в комментарии или отправьте сообщение в группу вконтакте : im?medi...
    Редактор кода: Visual Studio Code + дополнение Live Server для просмотра изменений на странице браузера в реальном времени.
    sources:
    threepi...
    codepen.io/Thr...
    v2: codepen.io/Thr...
    v3: codepen.io/Thr...
    Забыл упомянуть в видео, что переменные centerX и centerY нужно перенести с 28 - 29 строчки наверх и разместить над функцией init() и установить их значения внутри функции - для адаптивности, теперь анимация при изменении размеров области просмотра всегда будет в центре.
    Вот так должно быть начиная с 5 строчки:
    let centerX = 0;
    let centerY = 0;
    function init() {
    cnv.width = innerWidth;
    cnv.height = innerHeight;
    centerX = cnv.width / 2;
    centerY = cnv.height / 2;
    }
    init();
    fixed:
    codepen.io/Thr...

Комментарии • 66

  • @doyouwannatea3295
    @doyouwannatea3295 4 года назад +21

    Видео - топ
    канал - шикарный
    дикция - высший уровень
    Я - тупой(

  • @dantegarses7932
    @dantegarses7932 4 года назад +14

    Теперь я знаю у кого я буду тыр.... кхм, кхм, учиться делать анимацию на JS. Спасибо!

  • @ThreePixDroid_RU
    @ThreePixDroid_RU  4 года назад +7

    Забыл упомянуть в видео, переменные centerX и centerY нужно перенести с 28 - 29 строчки наверх и разместить над функцией init() и установить их значения внутри функции - для адаптивности, теперь анимация при изменении размеров области просмотра всегда будет в центре.
    Вот так должно быть начиная с 5 строчки:
    let centerX = 0;
    let centerY = 0;
    function init() {
    cnv.width = innerWidth;
    cnv.height = innerHeight;
    centerX = cnv.width / 2;
    centerY = cnv.height / 2;
    }
    init();

  • @mihalt1
    @mihalt1 Год назад

    Дуже гарно! Дякую за пояснення!

  • @xu2593
    @xu2593 2 года назад

    какое обнадеживающее вступление! приступаю )

  • @pavelarseyev452
    @pavelarseyev452 4 года назад +1

    воткнул лайк просто потому что еще с прошлого видоса до сих пор осталось приятное впечатление. Теперь можно и посмотреть :)

  • @fantaizer4199
    @fantaizer4199 3 года назад +1

    Прикольно, спасибо, ты отличный фантастик для новичков

  • @foxice4585
    @foxice4585 4 года назад +1

    Как всегда прекрасное видео! Побольше бы таких как ты, вот только я недавно ушёл из Front-End на Back-End и теперь не пописать мне такую красоту, хотя я и нодой доволен)

  • @Ривизор-Розивир
    @Ривизор-Розивир 4 года назад +1

    Просто очишуеть.Залипал минут двадцать.Спасибо за видео.

  • @alekseytrump1586
    @alekseytrump1586 4 года назад +1

    Друг спасибо тебе. Я просто в шоке с твоих работ. СПАСИБО!!! ВИДИШЬ КОД СТАВИШЬ ТУТ ЖЕ ЛАЙК!!!!

  • @SirexXom
    @SirexXom 4 года назад +1

    Очень круто объясняешь!!! Спасибо за видео!!!

  • @taras577
    @taras577 4 года назад +1

    очередное огромное спасибо за урок)

  • @dvladyko8258
    @dvladyko8258 3 года назад +1

    asmr для разрабов 😍

  • @montenote
    @montenote 4 года назад +1

    Отличный урок. Спасибо.

  • @pavelarseyev452
    @pavelarseyev452 4 года назад +1

    Вчера наконец-то воспользовался знаниями из этого видоса и из видоса про кривые безье для набросков для будущего проекта. pavelarseyev.github.io/uniq-menu-hover/ Спасибо большое еще раз!

  • @Wraith2401
    @Wraith2401 3 года назад

    какава красота. ну кака, все-таки, ва!

  • @DenisSvistoplasov
    @DenisSvistoplasov 2 года назад

    Этим голосом должны зачитываться вопросы для Евгения Понасенкова.

  • @hallowf
    @hallowf 4 года назад +1

    Не бросай дело, одно видео переубедило на тебя подписаться.

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 года назад

      хорошо) спасибо)не собираюсь бросать)

  • @alexanderhnatuk7399
    @alexanderhnatuk7399 4 года назад

    Привет! Очень здорово получается! Спасибо большое! Было бы интересно сделать анимацию чего-нибудь сыпучего. Например песка или сахара. Что б сверху постоянно сыпалась тонкая струйка, а внизу насыпалась горка. При этом что б частички скатывались с горки)

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 года назад

      Не за что)
      В планах есть урок с шариками которые упираются друг на друга, думаю это будет похоже на то что ты хочешь. Но без понятия когда запишу видео на эту тему....

  • @H336-p1v
    @H336-p1v 4 года назад

    21:04 А ещё лучше записать startAngle %= 360 после инкремента)
    И #771122 вообще можно записать как #712 (а ещё лучше вовсе сделать ctx.fillStyle = `hsl(0, 100%, ЯРКОСТЬ%)`, чтоб можно было много колец создать и чтоб не вводить их цвета вручную).
    К слову, вместо cnv.width |= 0 можно просто использовать cnv.width += 0 или вообще cnv.width = cnv.width :D (прост этот оператор может немного сбить с толку новичков).
    P.s. но из-за изменения размера канваса сбрасывается состояние контекста, к примеру ctx.font :(
    А так эффект супер, я б не догадался.. :D Спасибо)
    Напомнило ещё эффект "вжимания" круга в agar.io: i.ibb.co/ygYqG97/0.png

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 года назад

      Спасибо за отзыв) Да в оригинале подбирал цвета в ручную, чтоб глазу приятно было) но в примерах к уроку есть и другие варианты, если правильно помню)

  • @pavelbero1443
    @pavelbero1443 4 года назад +1

    Круто. Я раньше только слышал за канвас, но твое видео очень замотивировало разобраться. Не подскажешь, как начать изучение? А то я сам нашел только старые туториалы (с англом дела не очень).

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 года назад +1

      Привет) Сам в основном изучал по этой документации developer.mozilla.org/ru/docs/Web/JavaScript и подобным ей . А ещё по онлайн книжке Nature of code - natureofcode.com/book/introduction/

    • @pavelbero1443
      @pavelbero1443 4 года назад

      @@ThreePixDroid_RU, Спасибо

  • @Mr_Enotkin_q
    @Mr_Enotkin_q 4 года назад +1

    как говорится - нихрена не понял, но было очень интересно !

  • @pavelarseyev452
    @pavelarseyev452 4 года назад

    Насчет смещения угла для волн...разве не логичней было бы добавить это смещение в том месте где объявляется переменная с этим углом? А вообще, спасибо, конечно за видео, и особенно за такую подробную демонстрацию пошаговой реализации задумки. Очень круто 🙂

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 года назад +1

      Спасибо, возможно было бы и логичнее;) Уверен, там ещё есть что исправлять и даже более, если хорошо покопаться в коде, то думаю получится сократить его ещё на строк 10, а может и 30.

  • @sunny_mn_
    @sunny_mn_ 3 года назад

    Аа, как найти эту математическую формулу? Видео очень классное и залипательное!

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  3 года назад

      Это полностью мой код - любые математические вычисления в нём это мои решения и я не думаю что в интернете есть о них информация кроме этого видео ) Но очень вероятно, что если поискать, то можно найти аналогичные решения с куда более изящным решением.

  • @johnd1431
    @johnd1431 4 года назад +1

    Не могу сказать что не понравилось , но к стилистике и архитектуре кода есть вопросы. И есть сомнения в правильности такого подхода...

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 года назад

      Привет;) Вся архитектура основана на советах оставленных к предыдущим видео в комментариях и сообщениях вк.
      Конечно, вряд ли когда нибудь будет код способный угодить всем.
      Просто скажи что бы ты изменил в коде и возможно это повлияет на следующие видео.

    • @OXAYAZA
      @OXAYAZA 4 года назад

      Было бы неплохо предусмотреть ресайз страницы (особенно критично при поворотах планшета или телефона). А то я окно подергал а отрисовка не подстраивается и кольца за пределами вьюпорта.

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 года назад

      @@OXAYAZA Да, это правда) Во время записи постоянно забываю о таких мелочах;) Это можно исправить если переменные centerX & centerY поместить в функцию init.

  • @pavelarseyev452
    @pavelarseyev452 4 года назад +1

    Чтоо?! |= 0 для ширины...что-то новенькое...а об этом можно где-то почитать?

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 года назад

      По ссылке ниже возможно будет чуть более понятно -
      github.com/lionleaf/dwitter/wiki/Canvas-specific-Golfing-Tricks
      На этом сайте постоянно пользуются таким способом очистки - www.dwitter.net/

    • @pavelarseyev452
      @pavelarseyev452 4 года назад

      @@ThreePixDroid_RU спасибо

  • @exalted7710
    @exalted7710 4 года назад +1

    жду новых видосов как посылку с али

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 года назад +1

      спасибо) оригинальный комментарий, ценю такие!)

  • @_BOEGOLOVKA_
    @_BOEGOLOVKA_ 4 года назад +1

    Вроде такие классные вещи делает, а код на гитхаб заливать не научился.
    P.S. Ты классный

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 года назад

      спасибо) в гитхабе пока нет смысла , когда канал станет более популярным, то да) начну заливать на гитхаб, а сейчас специально ссылка на вк группу, для трафика .

    • @Wraith2401
      @Wraith2401 3 года назад

      @@ThreePixDroid_RU а не надо. пусть пишут ручками. полезно

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  3 года назад

      очень точно подмечено!)

  • @ЕвгенийШут-о7н
    @ЕвгенийШут-о7н 4 года назад +1

    Обещаний по поводу канала как у призидента по поводу страны

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 года назад +3

      Ни разу не произнес слово "обещаю".
      Лишь сообщаю о планах на будущее, не более.

  • @pavelarseyev452
    @pavelarseyev452 4 года назад

    Да, и последний вопрос. Где можно наверстать упущенное и освоить все эти геометрическо-математические штуки с синусами, косинусами и т.д. Понимаю, что это элементарные школьные вещи, но не хочется снова вычитывать их в школьных учебниках...

    • @johnd1431
      @johnd1431 4 года назад +1

      Павел Арсеев в школьном учебнике 6-7 класса по геометрии

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 года назад +1

      Прямо тут, на RUclips, полно хороших обучающих видео, точно найдешь про синус и косинус, что бы освежить память.

    • @pavelarseyev452
      @pavelarseyev452 4 года назад +1

      @@johnd1431 прикольно отвечать на вопрос, в котором уже описано то, что ваш ответ не подходит?

  • @Алексей-ю8я7т
    @Алексей-ю8я7т 4 года назад

    Я бы не использовал такие трюки с очисткой канваса. Однажды это поведение может измениться и код сломается.

    • @ThreePixDroid_RU
      @ThreePixDroid_RU  4 года назад

      Но разве плохо знать о такой возможности?

  • @askerkotsev363
    @askerkotsev363 2 года назад

    Господи какой же я тупой (

  • @BoffkaBoffka
    @BoffkaBoffka 4 года назад +1

    Спасибо!
    ШИКАРНО!

  • @fifamobilemaster5039
    @fifamobilemaster5039 4 года назад +2

    Спасибо большое за гарный контент:)