Maison > Questions et réponses > le corps du texte
我想开发一款iPhone上的*游戏,怎样可以让这个*转起来呢?
原问题:how can I use animation in cocos2d?
PHP中文网2017-04-22 09:01:23
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.