【问题标题】:Sprite kit can't run action before switch to new sceneSprite 套件在切换到新场景之前无法运行动作
【发布时间】:2014-03-27 00:21:49
【问题描述】:

操作不在此代码中运行:

 SKAction *moveLeft = [SKAction moveToX:(-800) duration:0.6];
 SKAction *moveRight = [SKAction moveToX:(800) duration:0.6];
 [_labelLogo runAction:moveLeft];
 [_labelPlay runAction:moveRight];  

 NewYork *start = [[NewYork alloc] initWithSize:self.size];
 SKTransition *reveal = [SKTransition fadeWithColor:[UIColor clearColor] duration:2];
 reveal.pausesIncomingScene = NO;

 [self.scene.view presentScene: start transition: reveal];

如果我评论 NewYork Switching 他们工作。

【问题讨论】:

  • 检查我编辑的答案

标签: ios sprite-kit skaction


【解决方案1】:

解决问题 *moveLeft / *moveRight,因为立即开始转换到纽约场景,所以你应该等待 *moveLeft / *moveRight 像这样完成:

 SKAction *moveLeft = [SKAction moveToX:(-800) duration:0.6];
 SKAction *moveRight = [SKAction moveToX:(800) duration:0.6];
 [_labelLogo runAction:moveLeft];

 [_labelPlay runAction:moveRight completion:^{

    NewYork *start = [[NewYork alloc] initWithSize:self.size];
    SKTransition *reveal = [SKTransition fadeWithColor:[UIColor clearColor] duration:2];
    reveal.pausesIncomingScene = NO;

    [self.view presentScene:start transition:reveal];
 }];

【讨论】:

  • self.scene.view(任何节点)或 self.view(场景)都取决于它是什么节点类。
  • @LearnCocos2D 感谢您的评论和支持,您对“它是什么节点类”是什么意思?例如?再次感谢
  • 我是说你是否这样做 [self.scene.view presentScene:start transition:reveal];或 [self.view presentScene:start transition:reveal];绝对没有任何区别。除非您尝试在不是 SKScene 类的节点对象中执行后者,否则将出现编译错误(只有 SKScene 具有视图属性,所有其他节点都必须通过 self.scene.view)。
  • @LearnCocos2D 好的,谢谢您的解释! ;-) 我会编辑我的答案
  • 谢谢,它有效,但我不明白为什么在我的初始代码中它开始第一个场景转换而不是动作,它们在转换之前。这是否意味着我想要在之后发生的任何事情操作我必须将代码放在块中而不是简单地放在下一行?
猜你喜欢
  • 2014-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-09
相关资源
最近更新 更多