【问题标题】:SKSpriteNode will not fadeInWithDuration using SKAction in sequence Sprite KitSKSpriteNode 不会在序列 Sprite Kit 中使用 SKAction 淡入淡出
【发布时间】:2014-03-03 13:20:15
【问题描述】:

我在一个序列中运行 3 个 SKAction,第一个两个运行得很好,但是 fadeInWithDuration 不会在节点中淡入,当视图加载时节点会立即添加。我是否必须将节点的初始 Alpha 通道设置为 0?有人可以帮忙解决问题吗?

- (void)setUpButtonStart
{
    SKSpriteNode *buttonStart = [SKSpriteNode spriteNodeWithImageNamed:@"start"];
    buttonStart.name = @"buttonStart";
    buttonStart.position = CGPointMake(900,50);
    [self addChild:buttonStart];

    SKAction *wait = [SKAction waitForDuration:2.5];
    SKAction *readIntro = [SKAction playSoundFileNamed:@"intro.mp3" waitForCompletion:NO];
    SKAction *fadeIn = [SKAction fadeInWithDuration:1.0];

    SKAction *sequence = [SKAction sequence:@[wait, readIntro, fadeIn]];

    [buttonStart runAction: sequence];
}

【问题讨论】:

  • 我会尝试一下,在运行淡入淡出操作之前将 alpha 设置为 0。

标签: xcode sprite-kit skaction


【解决方案1】:

documentation 中所述,fadeInWithDuration 操作将节点的alpha 属性从其当前值 更改为1.0(100% 不透明度)。

这就是您看不到淡入的原因 - 您的操作实际上不会做任何事情,因为节点的默认 alpha 值为 1.0,它将从 100% 变为 100%。

正如 Steffen 在他的评论中所建议的,您只需在执行操作之前设置 buttonStart.alpha = 0.0

【讨论】:

  • 这是最佳答案,我认为您可以接受它作为最佳答案;)
  • 是的,效果很好,感谢您清除它:)
  • 如果你不想一直褪色到 alpha = 1 怎么办?如果你只想淡化到 alpha = .8 怎么办?
  • @user1639164 在这种情况下您不使用 fadeInWithDuration,而是使用 [SKAction fadeAlphaTo:.8 duration:(NSTimeInterval)]
猜你喜欢
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
相关资源
最近更新 更多