我想增加触摸事件的高度,就像棒英雄一样,我正在尝试以下代码
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")
}
但不幸的是,它只是第一次增加节点的高度而且从不重复,所以任何身体都可以帮助我如何实现这个
答案 0 :(得分: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]];
答案 1 :(得分: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()
}
}
)
}