Лекция 14 CS193P Spring 2016 — Анимация и Core Motion.

Screen Shot 2016-09-02 at 5.12.03 PM

Лекция 14 посвящена двум темам.
Одна тема- продолжение анимации Dynamic Animation, теоретическая часть которой была представлена в виде слайдов на прошлой лекции. На Лекции 14 показывается большой демонстрационный пример Dropit, в котором  вы увидите движок Dynamic Animation в действии при проектировании игры, похожей на Tetris. Ваше Домашнее Задание № 6 полностью посвящено Dynamic Animation, так что Лекция 14 является своего рода подготовкой к Заданию 6.

В демонстрационном примере показан целый спектр «поведений»: “присоединения” UIAttachmentBehavior, столкновения UICollisionBehavior, гравитации UIGravityBehavior и мета-поведения UIDynamicItemBehavior, а также как объединить все эти «поведения» в составное сложное «поведение», которое является subclass UIDynamicBehavior. Демонстрируется обнаружение состояния статического равновесия в системе динамической анимации с помощью делегата. По ходу дела, как всегда, Пол Хэгерти демонстрирует синтаксические конструкции Swift в действии:  lazy vars, пара Наблюдателей свойств willSet{} и didSet{}, инициализация с помощью выполняемых замыканий, разрыв циклических ссылок в памяти с помощью списка захвата [ unowned self ]  в замыканиях и когда такой способ разрыва является безопасным.

Вторая тема — CoreMotion. Это объектно-ориентированное API для доступа к первичным датчикам движения на вашем устройстве. Core Motion  поставляет в приложение данные первичных датчиков Apple приборов:  акселерометра (accelerometer), гироскопа (gyro) и магнитометра (magnetometer).


Класс, с помощью которого вы можете получить всю информацию как с самих датчиков, так и о наличии датчиков в приборе, называется CMMotionManager. В лекции подробно рассматриваются различные режимы получения информации как с физических датчиков, так и с абстрактного комбинированного датчика CMDeviceMotion.

Датчики движения в iOS — удивительный механизм. И надо отдать должное инженерам Apple — подключение датчиков к приложению является предельно простым, а их дальнейшее использование не ограничивает вас ни в чём. Как и все приложения, дополненные реальностью, они захватывают в первую очередь тем, что дают вам в руки инструмент для преобразования информации об окружающем вас мире в виртуальный мир вашего телефона.

В заключение Лекции 14 демонстрационное приложение DropIt дополняется такой реальностью и показания датчиков движения прибора «подцепляются» к Dynamic Animator. В результате мы можем движением и вращением  реального прибора управлять движением разноцветных блоков на экране в игре, похожей на Tetris.
Лекция и слайды на английском языке представлены в iTunes название “14. Animation and Core Motion”.   Код демонстрационного примера «DropIt L14» для Swift 3.0  и Xcode 8 код находится на Github, а для Swift 3 .2  и Xcode 9 — также на Github..

Русскоязычный неавторизованный конспект Лекции 14, хронометрированный через каждые 5 минут, и представленный в виде PDF-файла, который можно скачать и использовать offline, а также Google Doc доступны на платной основе.

Один комментарий к “Лекция 14 CS193P Spring 2016 — Анимация и Core Motion.

  1. Забавно, что в конце этой лекции профессор по ошибке установил положительный вектор гравитации (dy вместо -dy) и поэтому кубики не начали падать вниз, но он изящно вышел из ситуации дополнительно прописав разные положения устройства в пространстве.

Обсуждение закрыто.