Изменение цвета пути с помощью анимации - iPhone Dev - PullRequest
0 голосов
/ 29 сентября 2011

Я работаю над приложением «соединить точки» и хотел бы, чтобы линия, проведенная от одной точки к другой, кратковременно вспыхнула, чтобы указать пользователю, что они успешно завершили правильную линию.Сначала я думал, что лучший способ сделать это - чередовать цвет обводки между черным и белым.У меня нет опыта в анимации, и все, что я прочитал о базовых типах анимации, показывает, что анимировать могут только свойства вида.Я подумал о создании собственного вида, который будет таким же длинным и тонким, как и линия, которую он будет представлять, а затем изменил цвет фона.Однако это кажется крайне неэффективным, учитывая количество строк, необходимое для завершения объекта в стандартном изображении «соединить точки».

Я переопределил методы touchesBegan / touchesMoved / touchesEnd, в то же время включив методы CGContext для создания и обводкипути к определенным местам на экране.

Есть ли какая-то основная концепция, которая мне не хватает, которая позволила бы мне оживить цвет пути?Или мой подход с использованием UITouch / CGContext является проблемой при рассмотрении анимации?Спасибо за ваше время заранее.

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

Если вы используете анимационные способности CALayer, для анимации доступно гораздо больше опций. Однако это связано со сложностью.

Я не уверен, что вам вообще нужно что-то оживлять. Анимация подразумевает промежуточные значения. Вы можете просто задержать 0,25 с или что-то еще, а затем перерисовать путь другим цветом.

Если вы действительно хотите анимацию, нарисуйте путь в двух видах и анимируйте альфа от одного до двух в диапазоне от 0,0 до 1,0. Это дало бы плавный эффект исчезновения при мигании. Вы также можете использовать эту технику, чтобы мигать без анимации, если перерисовка пути каждый раз неэффективна (но если вы не перерисовываете 1000 путей, я думаю, у вас будет достаточно циклов, чтобы перерисовывать путь каждые 0,25 с).

0 голосов
/ 06 октября 2011

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

Я создал два метода рисования. Один, который будет рисовать черную линию, а другой - более светлую. Затем я использовал метод executeSelector и вызывал каждый метод рисования, чередуя каждые 0,05 секунды, в течение 1 секунды. Это перерисовывает линию черным, затем белым быстро и многократно, придавая искрометный эффект, который я искал. Имея ограниченный опыт работы с этим языком, обнаружение метода PerforSelector чрезвычайно ценно, и в будущем я, скорее всего, буду использовать его совсем немного!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...