SKAction repeatActionForever不产卵实体(SKAction repeatA

2019-10-23 07:25发布

基本上我有一个产卵的实体功能应该在理论上,产生一个随机气球到具有特定属性的屏幕。 我设计的方法,例如:

-(void)spawnBalloon
{
    int a = arc4random_uniform(self.frame.size.width);
    int b = self.frame.size.height - 50;
    CGPoint loc = CGPointMake(a, b);
    [self spawnBalloonAtPoint:loc];
}

而且这种方法可行。 当我把它的初始化函数,它的工作原理。 当我把它在touchesMoved()函数,它的工作原理。 然而,当我试图把它与init方法

[self runAction:[SKAction repeatActionForever:[SKAction performSelector:@selector(spawnBalloon) onTarget:self]]];

它失败。 为什么是这样? 我必须只使用从“自我”一performSelector功能,然后使用一个NSTimer将它重复下去吗?

另外,我想抛出的NSLog到代码,看看它时,它是在重复行动甚至被执行,它是。 唯一的问题是,气球没有被添加到屏幕上。 我的感觉是,当我通过repeatActionForever调用spawnBalloon功能,自指的是不同类? 很抱歉,如果这是混乱的,我还是新目标C和SpriteKit,和而不是真正的读书多少,我跳了下去,决定去学习,当需要的(不过我的Java / C的渊博知识)

编辑:我想通了,如果我没有repeatForever行动,代码将执行工作。 但是,如果它的存在,这是行不通的。

Answer 1:

尝试这个:

[self runAction:[SKAction repeatActionForever:[SKAction sequence:@[
                                                                   [SKAction waitForDuration:0.1],
                                                                   [SKAction performSelector:@selector(spawnBalloon) onTarget:self]
                                                                   ]]]];


Answer 2:

作为DFrog的回答一此外,它会给你想要的结果,我想你会发现明白,为什么使用不工作时您的代码有用repeatActionForever:方法。

repeatActionForever:方法需要为了工作的非瞬时动作。 这是从文档:

要重复的动作必须有一个非瞬时间。

瞬时动作

瞬时动作开始,并在动画的单个帧完成。 例如,一个动作,以除去从其父节点是瞬时操作,因为节点不能被部分地去除。 相反,动作执行时,该节点将立即删除。

非瞬时动作

非瞬时动作有超过它的动画效果的持续时间。 当被执行时,所述行为是在动画的每一帧,直到操作完成处理

当你想通了,已经performSelector:ONTARGET创建调用某个对象的方法的行动,但这一行动立即运行。 从文档报价:

......当动作执行,目标对象的方法被调用。 这个动作在瞬间发生......

正如我上面提到的repeatActionForever:方法需要用非瞬时间的行为所以这就是为什么当你想到它是行不通的。



文章来源: SKAction repeatActionForever not spawning entity