【问题标题】:SKAction scaleBy: duration: SpriteKitSKAction scaleBy:持续时间:SpriteKit
【发布时间】:2013-12-03 15:47:44
【问题描述】:

我在尝试使用[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];

我得到的是圆圈变得如此之小以至于消失然后不再回来。它必须变小,然后再做 2 次回到原来的大小。

【问题讨论】:

  • 所以你的意思是圆圈继续缩小直到你再也看不到它,而不是在比例因子 0.2 处停止,然后缩小到原来的大小?

标签: ios iphone objective-c sprite-kit 2d-games


【解决方案1】:

试试:

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

【讨论】:

  • 谢谢。这应该是显而易见的,但我被锁定在相信 reversedAction 真的会做我想做的事。
【解决方案2】:

并不是所有的动作都是可逆的,反过来有时并不意味着“回到原来的值”。

如果您check the documentation,在您的情况下,scaleBy 的反向操作实际上是缩放到 -0.2。只需创建一个新的缩放动作而不是反转。

还可以尝试复制操作以供第二次使用:

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

【讨论】:

  • 好的,我改了:SKAction *scaleUp= [scaleDown reversedAction]; By: SKAction *scaleUp= [SKAction scaleBy:3.0 duration:1.8];我仍然有同样的主要问题,圆圈变得越来越小,消失了。
  • 检查我的更新,也许这与在可能需要复制的序列中多次使用相同的操作有关(更多的是猜测)
猜你喜欢
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
  • 2015-09-01
  • 2015-05-11
  • 2021-11-28
  • 2017-12-14
  • 2015-02-12
  • 1970-01-01
相关资源
最近更新 更多