Spritekit如何运行一个方法一段时间,然后启动另一个

Posted

技术标签:

【中文标题】Spritekit如何运行一个方法一段时间,然后启动另一个【英文标题】:Spritekit how to run a method for a certain amount of time, then start another one 【发布时间】:2014-07-26 20:32:59 【问题描述】:

我正在制作一款游戏,但目前我很困惑如何让一个方法运行一段时间,然后关闭,然后让另一个方法开始运行。目前我有:

[self spawn];

当场景设置时。这里是 spawn 方法:

-(void)spawn 
int xMin = 0;
int xMax = 460;
CGPoint startPoint = CGPointMake(xMin + arc4random_uniform(xMax - xMin),320);
[self performSelector:@selector(spawn) withObject:nil afterDelay:.20];
SKSpriteNode *blue = [SKSpriteNode spriteNodeWithImageNamed:@"whitecircle"];
blue.position = CGPointMake(startPoint.x,startPoint.y);
blue.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:21.5];
blue.physicsBody.usesPreciseCollisionDetection = NO;
blue.physicsBody.categoryBitMask = gainCategory;
blue.physicsBody.contactTestBitMask = playerCategory;
blue.physicsBody.dynamic = NO;
[self addChild:blue];
SKAction *runBlue = [SKAction moveToY:0 duration:1.5];
SKAction *remove = [SKAction removeFromParent];
[blue runAction:[SKAction sequence:@[runBlue,remove]]];

我想知道的是我怎样才能让这个方法运行一段时间,然后我如何在这个方法完成后开始另一个方法。谢谢

【问题讨论】:

您不能在一定时间内运行方法 - 但您可以在给定时间内以给定频率(固定或可变)重复调用方法。你是这个意思吗? @LearnCocos2D 是的,这就是我应该问的。 【参考方案1】:

我认为这就是你想要做的:

// set duration to seconds you want to wait between spawns
float duration = 1; 

SKAction *actionWait = [SKAction waitForDuration:duration];
SKAction *actionSpawn = [SKAction runBlock:^(void)

     [self spawn];
];

SKAction *actionSequence = [SKAction sequence:@[actionWait, actionSpawn]];
SKAction *actionRepeat = [SKAction repeatActionForever:actionSequence];

[self runAction:actionRepeat];

值得至少阅读一次SKAction 的类参考,以便您了解它的功能。

SKAction Class Reference

【讨论】:

以上是关于Spritekit如何运行一个方法一段时间,然后启动另一个的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit 中的触摸持续时间

如何防止应用重启后自动创建子片段?

SpriteKit 游戏物理滞后

Xcode Swift 3 / SpriteKit:点击精灵

如何有效地暂停 spritekit 中的游戏?

如何使用 SpriteKit 检测节点是不是离开屏幕 [重复]