как я могу использовать анимацию в cocos2d?

Я пытаюсь разработать игру в рулетку для iPhone. Как я могу анимацию (rotation) платы Roulette?

Я не знаю, как это сделать в cocos2d (или даже что это такое), но вы можете сделать это с помощью Core Animation либо с CALayers или UIViews. Вероятно, самым простым способом было бы создать UIImageView, содержащий изображение вашего колеса рулетки и оживить его.

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

CATransform3D rotationTransform = CATransform3DMakeRotation(1.0f * M_PI, 0, 0, 1.0); CABasicAnimation* rotationAnimation; rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform"]; rotationAnimation.toValue = [NSValue valueWithCATransform3D:rotationTransform]; rotationAnimation.duration = 0.25f; rotationAnimation.cumulative = YES; rotationAnimation.repeatCount = 10; [rotatingImage.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"]; 

предполагая, что rotatingImage является вашим UIImageView.

В этом примере колесо будет вращаться 5 раз, причем каждое rotation занимает 0,5 секунды. Вращения разделены пополам, потому что Core Animation перейдет в следующее ближайшее состояние, так что больше всего вы можете вращать что-то наполовину, пока анимация не захочет вращаться в другом направлении. То есть, поворот pi радиан (180 gradleусов) идет по полукругу, но если вы используете (1.5f * pi) для вашего угла поворота, он будет только четверть круга. Аналогично, если вы использовали (0.999f * pi), кружок вращался по часовой стрелке.

Вы захотите реализовать ускорение и замедление вашего колеса, а для тех, кто в этом примере заменит CAKeyframeAnimation, заменит CABasicAnimation.

В Cocos2D довольно просто:

 [sprite runAction:[RotateBy actionWithDuration:dur angle:360]]; 

сделать один оборот или

 id action = [RepeatForever actionWithAction: [RotateBy actionWithDuration:dur angle:360]]; [sprite runAction:action]; 

а также

 [sprite stopAction:action]; 

если вам нужно постоянно вращаться.

Не забудьте удостовериться, что преобразование спрайта Anchor установлено в центр изображения. И я предполагаю, что следующий вопрос должен возникнуть – как заставить его останавливаться плавно;)

Подробнее о действиях: http://lethain.com/entry/2008/oct/03/notes-on-cocos2d-iphone-development (это для более старой версии, поэтому вместо «runAction» используется устаревшее «do»)

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

 - (void) runSpinAnimationWithDuration:(CGFloat) duration; { CABasicAnimation* rotationAnimation; rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 /* full rotation*/ * rotations * duration ]; rotationAnimation.duration = duration; rotationAnimation.cumulative = YES; rotationAnimation.repeatCount = 1.0; rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; [myView.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"]; } 

Есть несколько способов, которыми вы можете это сделать.

Если у вас есть покадровая анимация для колеса, посмотрите AtlasDemo (часть дистрибутива cocos2d).

В противном случае взгляните на метод RotateBy:

  • Удалить HTML-tags из NSString на iPhone
  • Как использовать NSTimer?
  • UITextView внутри UIScrollView с AutoLayout
  • Проблема UITableView при использовании отдельного делегата / источника данных
  • как увеличить размер шрифта в UIWebView
  • Как правильно представить popover из UITableViewCell с помощью UIPopoverArrowDirectionRight или UIPopoverArrowDirectionLeft
  • Ширина пикселя текста в UILabel
  • Какова максимальная длина объекта NSString?
  • Есть ли iPhone SDK API для твиттера?
  • Как реализовать представление аккордеона для iPhone SDK-приложения?
  • Что мне нужно сделать, чтобы заставить Core Data автоматически переносить модели?
  • Interesting Posts

    Как разблокировать файлы chm – кнопка разблокирования отсутствует

    Почему понимание списка намного быстрее, чем добавление списка?

    Зебра разбивает таблицу со скрытыми строками с помощью CSS3?

    Как вызвать bash, запустить команды внутри новой оболочки и затем вернуть управление пользователю?

    Java: статический class?

    Как определить примитивный тип примитивной переменной?

    Зачем нам нужно новое ключевое слово и почему поведение по умолчанию скрывается и не отменяется?

    Использование ‘use utf8;’ дает мне «Широкий характер в печати»,

    Java multithreading и безопасная публикация

    Совместные запросы NSURLSession с Alamofire

    как кумулятивно добавить значения в один вектор из R

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

    Установка модема D-Link в режиме «Мост»

    Можем ли мы изменить размер изображения JPEG без декодирования и перекодировать его?

    Как получить один файл из определенной версии в Git

    Давайте будем гением компьютера.