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

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

6
задан Bill the Lizard 10 November 2008 в 15:07
поделиться

3 ответа

Я не уверен точно, что Вы пытаетесь сделать, но если Вы хотите использовать CA на других свойствах, который не является проблемой. Просто необходимо зарегистрировать надлежащие меры для ключевого пути. Существует пример выполнения этого в Базовой документации Анимации Apple, с помощью CAAction. Конкретно Вы реализуете actionForLayer:forKey: для конфигурирования поведения анимации по умолчанию того ключа, и если Вы хотите сделать анимацию свойства неявно, Вы реализуете runActionForKey:object:arguments:.

Что касается анимированных объектов кроме CALayers, я действительно не понимаю. Слои являются корневым визуальным объектом в Базовой Анимации. Кроме того, на iPhone каждый UIView поддерживается на слое, я не полагаю, что существует что-либо на экране iPhone, который не находится в слое, таким образом, я не понимаю, почему Вы волнуетесь по поводу использования анимации на чем-то, что не является CALayer.

0
ответ дан 17 December 2019 в 22:15
поделиться

Если можно сделать изменения сами и класс, Вы используете, является пользовательским, Вы могли бы хотеть добавить setProgress: (плавание) f метод к Вашему классу и использованию CA для анимации его затем измените желаемые свойства по мере необходимости как функцию f.

Просто сделайте a

[[someObject animator] setValue:[NSNumber numberWithFloat:1.0] forKeyPath:@"someCustomProperty.progress"];

или если объект не имеет аниматора, создайте корректный CAAnimation сами.

1
ответ дан 17 December 2019 в 22:15
поделиться

Ну, кажется, что я не могу сделать этого. То, что я должен делать, [разделяющий NSAnimation на подклассы] (https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/AnimationGuide/Articles/TimingAnimations.html, разделяющий NSAnimation на подклассы). Это будет работать над MacOS 10.4 + приложение, но не над Касанием Какао, в котором я не могу найти альтернативы кроме использования NSTimer.

0
ответ дан 17 December 2019 в 22:15
поделиться