Pertanyaan SKAction scaleBy: duration: SpriteKit


Saya kesulitan mencoba membuat satu lingkaran besar dan kecil menggunakan [SKAction scaleBy: duration:]

SKAction *scaleDown = [SKAction scaleBy:0.2 duration:1.8];  
SKAction *scaleUp= [scaleDown reversedAction];
SKAction *fullScale = [SKAction sequence:@[scaleDown, scaleUp, scaleDown, scaleUp]];
[_circleChanging runAction:fullScale];

Apa yang saya dapatkan adalah lingkaran menjadi begitu kecil sehingga menghilang dan kemudian tidak kembali. Itu harus menjadi kecil dan kemudian kembali ke ukuran aslinya melakukannya 2 kali.


4
2017-12-03 15:47


asal


Jawaban:


Mencoba:

  SKAction *scaleDown = [SKAction scaleTo:0.2 duration:0.75];
       SKAction *scaleUp= [SKAction scaleTo:1.0 duration:0.75];
       SKAction *fullScale = [SKAction repeatActionForever:[SKAction sequence:@[scaleDown, scaleUp, scaleDown, scaleUp]]];
       [_circleChanging runAction:fullScale];

3
2017-12-03 17:10



Tidak semua tindakan dapat dibalik, dan sebaliknya terkadang tidak berarti "kembali ke nilai awal".

Jika kamu periksa dokumentasi, tindakan sebaliknya dari scaleBy sebenarnya scaling ke -0.2 dalam kasus Anda. Cukup buat aksi skala baru, bukan membalik.

Coba juga membuat salinan tindakan untuk penggunaan kedua:

SKAction *fullScale = [SKAction sequence:
                       @[scaleDown, scaleUp, [scaleDown copy], [scaleUp copy]]];

2
2017-12-03 15:59