Лекция 12 CS193P Winter 2015 — Dynamic Animation

Screen Shot 2015-07-20 at 7.53.07 PM

Лекция 12 посвящена другому подходу к анимации, созданию ряда «физических поведений», определяющих как динамические объекты должны взаимодействовать друг с другом и с границами в этой физической среде.

Эта анимация очень интересная и очень простая в использовании. Чтобы изучить все APIs динамического движка Dynamic Animation, основанного на физических принципах, Пол Хэгерти  создает в своем демонстрационном примере игру Dropit. Но вначале перед вами предстают теоретические основы и принципы работы движка Dynamic Animation.

Аниматор

Сначала создается аниматор, действующий в пределах игровой зоны, представляющей собой UIView. В силу определенных причин используется lazy сценарий его инициализации.

«Поведения»

Затем к аниматору добавляется одно или несколько поведений  UIDynamicBehaviors, такие как gravity (гравитация), collisions (столкновения) и динамические элементы, подсоединенные ( attached) друг к другу . В основном, это описание того, как  будут себя вести эти элементы, основываясь на их физических свойствах. И опять используется lazy версия инициализации.

Таким образом, у нас может быть две причины использовать lazy с замыканием. Одна — это когда у меня к чему-то нет доступа во время инициализации, как в случае с animator. Другая — если я хочу инициализировать некоторое состояние, как в случае с collider. Обе причины являются вполне законными для применения lazy и подробно рассматриваются в лекции.

Рассматриваются почти все виды поведения : гравитация (gravity), столкновения (collision), привязывание (attachment), толкание (push), моментальный снимок (snap)  и другие. Изучается механизм композиции сложного поведения из простых элементов.

Очень важное свойство класса UIDynamicBehavior называется action. Этот фрагмент кода будет выполняться каждый раз, когда “поведение” будет воздействовать на свои  динамические объекты. На лекции рассматривается как избежать циклических блокировок памяти в  action.

Динамические объекты

Они добавляются к “поведению”, а «поведение» — к аниматору.
Любые анимирующие объекты должны реализовать UIDynamic протокол. Динамические объекты можно наделить «мета поведением» —  density (плотностью), resistance (сопротивлением), elasticity (упругость), friction (трение) и  rotation (вращение) и другими. Это будет влиять на взаимодействие объектов в физической среде.

Обучение  Dynamic Animation ведется на прекрасном и очень насыщенном демонстрационном примере — игре Dropit, в которой Пол Хэгерти логически обосновывает появление каждой строчки кода.

Лекция и слайды на английском языке находятся на  iTunes название “12. Dynamic Animation.”  Код для Демонстрационного примера «Dropit» для Swift 1.2 доступен на  сайте Stanford, а для Swift 2.0 и Xcode 7 здесь.

Русский неавторизованный конспект лекции , хронометрированный через каждые 5 минут, представлен в PDF — файле .

Начало конспекта находится в PDF-файле

Лекция 12 CS193P Winter 2015 iOS 8 Try.pdf


Остальная часть лекции  в виде PDF-файла доступна на платной основе.