На этом уроке мы добавим таймер и реализуем полёт снаряда через функцию его события. Для этого в функцию таймера нужно будет разместить внутренности цикла, а также добавить проверки на начало и окончание полёта снаряда. Потом мы оформим полёт снаряда в ту клетку моря, по которой был щелчёк мышки.
Дата отправки отчёта:
9 сентября 2015 г.
Задание выполнено: за
45 мин.
Чему научился:
переделал анимацию с задержкой перерисовки с помощью таймера вместо thread.sleep, настроил полёт от угла в выбранную ячейку
Что было сложным:
--
Комментарии:
я немного подредактил "распределение" картинок в момент полёта таким образом, чтобы анимация взрыва происходила строго в ячейке - т.е. все фреймы, кроме последних 5, распределяются по пути от x1,y1 до x2,y2, а последние 5 рисуются в финишной ячейке (см код на рис.) хотя это тоже всё условно, в идеале надо будет перерисовывать и перерассчитывать всё заново.
Научился: Использование Math.sqrt, динамический расчет времени анимации в зависимости от скорости снаряда и расстояния полета. Трудности: Сложностей не было. В моем случае нет таймера, анимация встроена в сам язык QML и мне достаточно задать начальное, конечное значение переменной и время анимации; удобный подход. Меня не устраивало то, что снаряд двигается с разными скоростями в зависимости от требуемого расстояния, то есть время анимации жестко задано и период срабатывания "таймера" управляет скоростью снаряда. Кроме того, предложенный в уроке способ подбора значений для сокращения чисел в формулах это конечно круто, магия и все дела, но в данном случае движение снаряда описывается обычными физическими законами - кинематикой. Как известно, координаты объекта в случае равномерного движения вычисляются по простой формуле, s = s0 + vt. Необходимо выразить t и установить в качестве времени анимации, остальные переменные известны.
Научился: Узнал как поставить таймер для анимации. Повторил определения координат клика мыши. Тяжело пока с формулами... ) Трудности: формулы... сам бы не допёр. без