【问题标题】:background color flash sprite kit背景颜色闪光精灵套件
【发布时间】:2014-04-29 21:48:43
【问题描述】:

我正在尝试使 flashBackground 的背景闪烁白色。我怎样才能使用精灵套件做到这一点。我已经创建了 SKSpriteNode,我想在它下面从 clearcolor 闪烁到 whitecolor 到 clearcolor。

flashBackground = [SKSpriteNode spriteNodeWithColor:[SKColor clearColor] size:
                       CGSizeMake(self.size.width, self.size.height)];

[self addChild:flashBackground];

【问题讨论】:

    标签: ios objective-c sprite-kit


    【解决方案1】:
    SKAction *wait0 = [SKAction waitForDuration:1.0]; // 1 sec delay
    
    SKAction *block0 = [SKAction runBlock:^{
        flashBackground.color = [SKColor whiteColor];
    }];
    
    SKAction *block1 = [SKAction runBlock:^{
        flashBackground.color = [SKColor clearColor];
    }];
    
    [flashBackground runAction:[SKAction repeatActionForever:[SKAction sequence:@[wait0, block0, wait0, block1]]]];
    

    或仅将最后一行更改为:

    [flashBackground runAction:[SKAction sequence:@[wait0, block0, wait0, block1]]];
    

    【讨论】:

      【解决方案2】:

      我可能只使用白色节点并将其设置为 alpha 动画,但这是个人喜好,可能根本不会影响任何事情。

      要为节点的颜色设置动画,请使用 [SKAction colorizeWithColor: colorBlendFactor: duration:] 方法。在你的情况下,这看起来像这样:

       [flashBackground runAction:[SKAction sequence:@[[SKAction colorizeWithColor:[SKColor whiteColor] colorBlendFactor:1 duration:.1],[SKAction colorizeWithColor:[SKColor clearColor] colorBlendFactor:1 duration:.1]]]];
      

      这个基于 alpha 的版本刚开始时将初始颜色设置为 whiteColor,flashBackground.alpha 设置为 0,然后运行:

       [flashBackground runAction:[SKAction sequence:@[[SKAction fadeInWithDuration:.1],[SKAction fadeOutWithDuration:.1]]]];
      

      调整持续时间,直到获得所需的效果。

      您也可以尝试将节点的混合模式更改为相加或相乘,以获得更逼真的闪烁效果。

      flashBackground.blendMode = SKBlendModeAdd;
      

      【讨论】:

      • 我不知道替代混合模式如何处理将 clearColor 混合到绘图层次结构中。如果您尝试,请随时分享结果!
      猜你喜欢
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多