Sprite kit 如何停止无休止地玩SpriteKit发射器?

Sprite kit 如何停止无休止地玩SpriteKit发射器?,sprite-kit,skemitternode,Sprite Kit,Skemitternode,我正在努力阻止发射器在我的精灵套件项目中没完没了地播放。寿命设置被设置为Start=1和End=0,它显示我想要的正确结果(只发出一次) 当我在它不断发出的更新方法中调用它时,问题出现了,我尝试使用removeFromParent和removeAllAction,但没有成功。你能帮我解决这个问题吗 -(void)update:(NSTimeInterval)currentTime { [self updateheartPositionFromMotionManager]; [s

我正在努力阻止发射器在我的精灵套件项目中没完没了地播放。寿命设置被设置为
Start=1
End=0
,它显示我想要的正确结果(只发出一次)

当我在它不断发出的更新方法中调用它时,问题出现了,我尝试使用
removeFromParent
removeAllAction
,但没有成功。你能帮我解决这个问题吗

-(void)update:(NSTimeInterval)currentTime {

    [self updateheartPositionFromMotionManager];
    [self matchIt];

    if ( _heart.position.x == 512 && _heart.position.y == 484 ){
        SKEmitterNode *emitter =  [NSKeyedUnarchiver unarchiveObjectWithFile:
                  [[NSBundle mainBundle] pathForResource:@"sparkly" ofType:@"sks"]];

        emitter.position = CGPointMake(self.frame.size.width/2,               
                                       CGRectGetMidY(self.frame)+100);;
        emitter.name = @"exhaust";
        emitter.targetNode =_heart;
        [self addChild:emitter];

    }else{

        [self removeFromParent];
    }
}

//步骤1取一个全局变量 @房地产价格上涨;在您的.h文件中

在.m文件的init或instance方法中

sparkyadded=假

-(无效)含铅的 {

    [node removeAllActions];
    [node removeFromParent];
     sparklyAdded=FALSE;
}];
}

-(无效)更新:(NSTimeInterval)当前时间{

  [self updateheartPositionFromMotionManager];
  [self matchIt];

 if (( _heart.position.x>= 512 && _heart.position.y=< 484 ) && !sparklyAdded){
     SKEmitterNode *emitter =  [NSKeyedUnarchiver unarchiveObjectWithFile:
              [[NSBundle mainBundle] pathForResource:@"sparkly" ofType:@"sks"]];

     emitter.position = CGPointMake(self.frame.size.width/2,               
                                   CGRectGetMidY(self.frame)+100);;
     emitter.name = @"exhaust";
     emitter.targetNode =_heart;
     [self addChild:emitter];
     sparklyAdded=TRUE;

  }else{

    [self removeEffect];
 }
    [node removeAllActions];
    [node removeFromParent];
     sparklyAdded=FALSE;
}];
{ [名称为@“排气”的自枚举子节点使用block:^(SKNode*节点,布尔*停止){

    [node removeAllActions];
    [node removeFromParent];
     sparklyAdded=FALSE;
}];
}

//在添加粒子时,请记住少部分大腿
1) 它们是昂贵的cpu调用,所以从更新循环中只添加和删除它们一次

将其从更新方法中删除。因此,如果
\u heart
的位置匹配,您将创建一个发射器。对我来说,这看起来很难看,您很有可能每秒创建60个发射器。就像@akashg所说的,从您的更新方法中删除创建的发射器。我推荐您看看SKEmitterNode的属性。我知道我正在做一些不同的事情。让我今天试一试并更新我的结果。非常感谢您的专家评论,我今天晚上将尝试并发布我的结果。