objective-c - 如何让*转起来?
伊谢尔伦
伊谢尔伦 2017-04-22 08:59:23
0
1
549

我想开发一款iPhone上的*游戏,怎样可以让这个*转起来呢?

原问题:how can I use animation in cocos2d?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

répondre à tous(1)
洪涛

Réponse : Brad Larson
(Meilleure réponse)
Je ne sais pas comment insérer des animations sur cocos2d, mais vous pouvez créer des animations de base avec CALayers ou UIViews. Le moyen le plus simple est peut-être de créer un UIImageView contenant des modèles *, puis de l'animer.
Tout d'abord, créez un nouveau UIImageView et définissez le motif * sur sa valeur initiale. Si vous souhaitez que le * pivote, utilisez le code suivant :

.
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"];

Supposons que RotatingImage soit le UIImageView dont vous avez besoin.
Dans cet exemple, le plateau tournant tournera 5 fois, en prenant à chaque fois 0,5 seconde. La rotation s'arrêtera à un demi-cercle, car Core Animation change de direction à un demi-cercle, donc avant que la rotation ne change de direction, laissez au plus le plateau tournant tourner à moitié. un tour. En d’autres termes, si vous définissez l’angle de rotation sur (1,5f * pi), il ne peut pivoter que de quatre-vingt-dix degrés. Si vous définissez la valeur en radian sur (0,999f * pi), le plateau tournant tournera dans le sens des aiguilles d'une montre.
Si vous souhaitez obtenir des effets d'accélération ou de décélération, il est préférable de ne pas utiliser CABasicAnimation, CAKeyframeAnimation aura de meilleurs effets.


Réponse : Stanislav
Dans cocos2d, un moyen simple est : set

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

Terminez l'action de rotation. Si vous avez besoin d'une rotation continue, vous pouvez la définir

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

et

[sprite stopAction:action];

Avant cela, assurez-vous de définir le sprite transformAnchor de manière à ce que l'image soit centrée.


Réponse : mahboudz
Vous pouvez définir différents paramètres d'arc pour effectuer une rotation complète, sans avoir à vous demander s'il peut effectuer une rotation complète, et il n'est pas nécessaire de diviser l'ensemble du processus de rotation en plusieurs parties à concevoir. Par exemple, le code suivant peut compléter l'effet de rotation, en tournant une fois par seconde :

- (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"];
}

Réponse : Quatre-vingt-huit
Il existe de nombreuses façons d'obtenir des effets d'animation. Si vous souhaitez définir un effet d'animation image par image pour le plateau tournant, vous pouvez utiliser AtlasDemo pour atteindre cet objectif.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal