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

Я нашел решение (примененное к Index.HTML), которое работало на основе ЭТОГО .

function buildOptionsList(array2) {
  var table = document.createElement('table');
  var tableBody = document.createElement('tbody');

  array2.forEach(function(rowData) {
    var row = document.createElement('tr');

    rowData.forEach(function(cellData) {
      var cell = document.createElement('td');
      var cLass = td.setAttribute('class','ui-state-default');
      cell.appendChild(document.createTextNode(cellData));
      row.appendChild(cell);
    });

    tableBody.appendChild(row);
  });

  table.appendChild(tableBody);
  document.body.appendChild(table);
}

buildOptionsList(array2);

16
задан LearnCocos2D 13 October 2011 в 21:32
поделиться

4 ответа

Я понятия не имею, как сделать это в cocos2d (или даже что это), но можно сделать эту использующую Базовую Анимацию или с 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 раз с каждым вращением, занимающим 0,5 секунды. Вращения разделяются в половине, потому что Базовая Анимация перейдет к следующему ближайшему состоянию, таким образом, большинство, можно повернуть что-то, будет половиной вращения, прежде чем анимация захочет вращаться в другом направлении. Таким образом, радиан пи (180 градусов), вращение здесь идет полукруг, но если бы Вы использовали (1.5f * пи) для Вашего угла вращения, оно только пошло бы четверть круга. Аналогично, если бы Вы использовали (0.999f * пи), то круг вращался бы в по часовой стрелке способ.

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

17
ответ дан 30 November 2019 в 16:05
поделиться

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

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

Иначе, смотрите на RotateBy Sprite: метод.

3
ответ дан 30 November 2019 в 16:05
поделиться

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

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

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

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

и

[sprite stopAction:action];

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

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

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

19
ответ дан 30 November 2019 в 16:05
поделиться

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

- (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"];
}
5
ответ дан 30 November 2019 в 16:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: