SpriteKit中令人迷惑的speedBy:duration:方法

我们知道SpriteKit中的Action,经常有两种形态,一种是确值形式:XXXTo,还有一种是增量形式:XXXBy。然而speedBy却是一个比较Bug的存在,难怪Tutorial的ActionsCatalog demo程序中留下了这样的评论:

// speedBy:duration
        // TODO: BUG??? Getting unexpected behavior on this...
        
        [self.turtle runAction:[SKAction repeatActionForever:
            [SKAction sequence:@[
                [SKAction moveByX:0 y:self.size.height * 1/6 duration:0.25],
                [SKAction moveByX:0 y:-self.size.height * 1/6 duration:0.25],
                [SKAction moveByX:0 y:self.size.height * 1/6 duration:0.25],
                [SKAction moveByX:0 y:-self.size.height * 1/6 duration:0.25],
                [SKAction speedBy:-0.5 duration:0.1],
                [SKAction moveByX:0 y:self.size.height * 1/6 duration:0.25],
                [SKAction moveByX:0 y:-self.size.height * 1/6 duration:0.25],
                [SKAction moveByX:0 y:self.size.height * 1/6 duration:0.25],
                [SKAction moveByX:0 y:-self.size.height * 1/6 duration:0.25],
                [SKAction speedBy:0.5 duration:0.1],
            ]]
        ]];
        

这个sprite上下运动几下后就不动了,完全出乎作者意料。我们可以猜测的是sprite的速度经过多次乘以0.5之后趋于0了,所以不动了。然而文档关于该API的说明似乎是速度加的关系,令人费解。根据测试的结果发现speedBy设置负值和零值会立即停下来。一旦速度变化,那么moveByX的duration将不起作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值