spritekit SKAction.resizeToHeight不重复

问题描述 投票:1回答:2

我想增加触摸事件的高度,就像操纵杆英雄一样。我正在尝试以下代码

      func changeHeight(){


    let action = SKAction.resizeToHeight(self.leadherNode!.size.height+50, duration: 0.5);
    let seq = SKAction.repeatActionForever(action)
    self.leadherNode?.runAction(seq, withKey: "height")


}

但是不幸的是,它只是第一次增加了节点的高度,并且从未重复。我该如何实现?

ios swift sprite-kit
2个回答
1
投票

SKAction启动后对其参数的更改将对该操作无效。您将需要在每个步骤中使用更新后的值创建一个新操作。这是一种方法:

定义和初始化高度和最大高度属性

var spriteHeight:CGFloat = 50.0;
let maxHeight:CGFloat = 500.0

didMoveToView拨打电话

resizeToHeight()

此函数创建一个SKAction,该尺寸将精灵大小调整为特定高度。操作完成后,函数将更新高度值,然后调用自身。

func resizeToHeight() {
   self.leadherNode?.runAction(
        SKAction.resizeToHeight(self.spriteHeight, duration: 0.5),
        completion:{
            // Run only after the previous action has completed
            self.spriteHeight += 50.0
            if (self.spriteHeight <= self.maxHeight) {
                self.resizeToHeight()
            }
        }
    )
}

1
投票

我不知道迅速。但我可以编写Objective-C版本。

CGFloat currentSpriteSize;//Create private float
SKSpriteNode *sprite;//Create private sprite

currentSpriteSize = sprite.size.height;//Into your start method

//And your Action
SKAction *seq = [SKAction sequence:@[[SKAction runBlock:^{
        currentSpriteSize += 50;
    }], [SKAction resizeToHeight:currentSpriteSize duration:0.5]]];
    [sprite runAction:[SKAction repeatActionForever:seq]];
© www.soinside.com 2019 - 2024. All rights reserved.