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

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

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

伊谢尔伦
伊谢尔伦

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

membalas semua(1)
洪涛

Jawapan: Brad Larson
(Jawapan terbaik)
Saya tidak tahu cara memasukkan animasi pada cocos2d, tetapi anda boleh mencipta animasi teras dengan CALayers atau UIViews. Mungkin cara paling mudah ialah mencipta UIImageView yang mengandungi corak * dan kemudian menghidupkannya.
Mula-mula, buat UIImageView baharu dan tetapkan corak * kepada nilai awalnya Jika anda mahu * berputar, gunakan kod berikut:

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

Anggapkan rotatingImage ialah UIImageView yang anda perlukan.
Dalam contoh ini, meja putar akan berputar 5 kali, setiap kali mengambil masa 0.5 saat Putaran akan berhenti pada separuh bulatan, kerana Animasi Teras menukar arah pada separuh bulatan, jadi sebelum putaran bertukar arah, paling banyak Biarkan meja putar bertukar separuh. satu giliran. Dalam erti kata lain, jika anda menetapkan sudut putaran kepada (1.5f * pi), ia hanya boleh berputar sembilan puluh darjah. Jika anda menetapkan nilai radian kepada (0.999f * pi), meja putar akan berputar mengikut arah jam.
Jika anda ingin mencapai kesan pecutan atau nyahpecutan, sebaiknya jangan gunakan CABasicAnimation akan mempunyai kesan yang lebih baik.


Jawapan: Stanislav
Dalam cocos2d, cara mudah ialah: set

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

Lengkapkan tindakan putaran Jika anda memerlukan putaran berterusan, anda boleh menetapkannya

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

dan

[sprite stopAction:action];

Sebelum ini, pastikan anda menetapkan sprite transformAnchor supaya imej berada di tengah.


Jawapan: mahboudz
Anda boleh menetapkan parameter arka yang berbeza untuk melengkapkan putaran lengkap, tanpa perlu mempertimbangkan sama ada ia boleh melengkapkan putaran lengkap, dan tidak perlu membahagikan keseluruhan proses putaran kepada beberapa bahagian untuk mereka bentuk. Contohnya, kod berikut boleh melengkapkan kesan putaran, berputar sekali sesaat:

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

Jawapan: Lapan Puluh Lapan
Terdapat banyak cara untuk mencapai kesan animasi Jika anda ingin menetapkan kesan animasi mod bingkai demi bingkai untuk meja putar, anda boleh menggunakan AtlasDemo untuk mencapai matlamat ini.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan