Nano Hash - криптовалюты, майнинг, программирование

Отображение нескольких CALayers один за другим непрерывно в течение 60 секунд?

У меня тут ситуация.

Я использую AVFoundation для захвата кадра камеры. Теперь то, что я хочу сделать, это то, что для определенных кадров мне нужно отобразить изображение, которое вращается шаг за шагом.

Что я пытаюсь сделать, так это то, что я беру 4 CALayers, состоящие из переднего заднего левого и правого изображений объекта, и использую свойство времени CALayer и свойство групповой анимации, я хочу отображать все изображения одно за другим после определенного миллисекундного интервала время, так что непрерывные изображения кажутся анимацией.

Как это сделать? Пожалуйста, помогите мне с некоторым кодированием здесь.


  • Можете подробнее описать, что вы имеете в виду? Вы хотите отображать видео в виде слоя, но пошагово, кадр за кадром, или вы хотите показывать разные кадры как неподвижные изображения в разных слоях? Если вы имеете в виду показ видео кадр за кадром, вы смотрели на AVSynchronizedLayer? 27.06.2012
  • у меня есть 3 CALayers и у каждого есть одно изображение. Мне нужно отобразить эти 3 калайера один за другим так, как если бы они были анимированы. 27.06.2012
  • То есть вы почти говорите об одном слое, который меняет свое изображение для каждого кадра фильма? Если это так, вам следует прочитать о AVPlayer и AVSynchronizedLayer в документация. Синхронизированный слой может отображать содержимое вашего фильма, вы даже можете иметь несколько слоев, отображающих одно и то же AVPlayerItem 27.06.2012

Ответы:


1

Ответьте на основе ссылки на печенье Мохита Гупты:

Установите CALayer, на котором вы хотите анимировать последовательность изображений

CALayer *animationLayer = [CALayer layer];
[animationLayer setFrame:CGRectMake(125, 0, 240, 300)];
[self.baseLayer addSublayer:animationLayer];

Определить массив изображений, которые должны отображаться в последовательности анимации

NSArray *animationFrames = [NSArray arrayWithObjects:(id)[UIImageimageNamed:@"1.png"].CGImage, (id)[UIImage imageNamed:@"2.png"].CGImage, (id)[UIImage imageNamed:@"3.png"].CGImage, nil];

Использование CAKeyframeAnimation для последовательного отображения массива изображений

CAKeyframeAnimation *frameAnimation = [[CAKeyframeAnimation alloc] init];
[frameAnimation setKeyPath:@"contents"];
frameAnimation.calculationMode = kCAAnimationDiscrete; //mode of transformation of images
[animationLayer setContents:[animationFrames lastObject]]; //set the array objects as encounterd
frameAnimation.autoreverses = NO; //If set Yes, transition would be in fade in fade out manner
frameAnimation.duration = ((float)[animationFrames count])/4.5; //set image duration , it can be predefined float value
frameAnimation.repeatCount = HUGE_VAL; //this is for inifinite, can be set to any integer value as well
[frameAnimation setValues:animationFrames];
[frameAnimation setRemovedOnCompletion:YES];
[frameAnimation setDelegate:self];
[animationLayer addAnimation:frameAnimation forKey:@"contents"]; //add animation to your CALayer
[frameAnimation release];

Надеюсь это поможет

27.06.2012

2
  • Вы даже не удосужились вставить код в ответ? Все еще хороший трюк для анимации contents слоя, но я думаю, что код выиграет от некоторого объяснения того, как его использовать и какие значения должны входить в массив animationFrames и т. д. 27.06.2012
  • @DavidRönnqvist код легко изучать. Это может быть потому, что я сам пробовал CAKeyFrameAnimation, но не смог понять структуру в идеальной работоспособной манере. 27.06.2012
  • Пожалуйста, отправьте код в ответ. Этот сайт может выйти из строя, или ссылка может исчезнуть. 27.06.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..