2016-09-29 113 views
8

我正在操作游戏的说明屏幕,并想向用户显示他们应该点击屏幕的某个区域。如何动画SKShapeNode的不透明度?

所以我想显示的动画,其中

1)手指正在扩大和缩小画面,接着 - 工作fine--

2)一矩形改变不透明度(以显示挖掘有),然后 - 需要帮助 -

3)文本闪光类摹说法, “点击这里” - 需要帮助 -

对于1),我有这个(工作正常):

finger = SKSpriteNode(texture: fingerTxt) 
    finger.position = CGPoint(x: 330, y: 450) 
    finger.zPosition = 10 
    InstHolderNode.addChild(finger) 

    let fingerTapScaleDown = SKAction.scale(by: 0.6, duration: 0.7) 
    let fingerTapScaleUp = SKAction.scale(by: 1.6, duration: 0.7) 
    let fingerScalingSequence = SKAction.sequence([fingerTapScaleDown,fingerTapScaleUp]) 

    let fingerTapScaleForever = SKAction.repeatForever(fingerScalingSequence) 
    finger.run(fingerTapScaleForever) 

对于2),我有:

var rect = SKShapeNode(rectOf: CGSize(width: 150.0, height: frame.height * 2)) 
    rect.position = CGPoint(x: 300, y: 100) 
    rect.fillColor = SKColor.brown 
    rect.alpha = 0.5 
    InstHolderNode.addChild(rect) 

问:

如何同步1)2)这样1)完成后(手指敲击动画完成),rect.alpha值更改为0.1,然后改回0.5然后1)发生,然后rect.alpha被更改为0.1(在一个循环中)不断。

非常感谢!

+0

我打算写一个答案,但它是太多,应该是你的代码。你已经知道“序列”了。在序列的末尾添加一个'runBlock'动作来在使用'fadeToAlpha'的矩形上触发一系列动作。然后在这个动作结束时,你运行另一个触发fingerScaling动作的块。不要永远使用重复,这将永远为你重复 – Knight0fDragon

+0

感谢您的及时回复。请指导我如何改变这个矩形的α值,每0.6秒,在手指敲击动作1)发生后请?谢谢 ! – Has

+0

已经告诉你如何做到这一点 – Knight0fDragon

回答

1

试试这个:

var fadeOut = SKAction.fadeAlpha(to: 0.1, duration: 0.5) 
    var fadeIn = SKAction.fadeAlpha(to: 0.5, duration: 0.5) 

    rect.run(SKAction.repeatForever(SKAction.sequence([fingerScalingSequence, fadeOut, fadeIn]))) 

调整持续时间按自己的喜好

+0

希望这可以帮助 –