如何在cocos2d中结束进程

代码实现功能是,每1.5添加一个子图片。

[self schedule:@selector(addTraget:) interval:1.5];

-(void)addTraget:(ccTime)dt{
CCSprite *target = [CCSprite spriteWithFile:@"img1.png" rect:CGRectMake(0, 0, 80, 36)];

target.position = ccp(-target.contentSize.width/2, 100);
[self addChild:target];
target.tag = 1;

id actionMove = [CCMoveTo actionWithDuration:actualDuration*2.5 position:ccp(winSize.width + (target.contentSize.width/2), actualY)];
id actionMoveDone = [CCCallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)];
id sequece = [CCSequence actions:delayTime1, calFun1, delayTime2, calFun2,actionMove, actionMoveDone, nil];
id repeate = [CCRepeatForever actionWithAction:sequece];

[target runAction:repeate];
}

由于addTarget方法是预定的,应该怎么设置一段时间之后结束这这段进程?

ChatGPT尝试为您解答,仅供参考
可以使用CCSequence和CCCallFunc来实现这个需求。你可以在addTraget:方法中插入一个延迟动作(使用CCDelayTime),然后在延迟动作之后插入一个回调动作(使用CCCallFunc),在回调动作中停止调度器。


具体而言,你可以这样做:

  • 在addTraget:方法的开头添加一个延迟动作,用于延迟执行其余的动作:
    id delayTime = [CCDelayTime actionWithDuration:10];
    
  • 在延迟动作之后插入一个回调动作,用于停止调度器:
    id callFunc = [CCCallFunc actionWithTarget:self selector:@selector(stopScheduler)];
    
  • 将延迟动作和回调动作组合起来,并将组合的动作应用于目标对象:
    id sequence = [CCSequence actions:delayTime, callFunc, nil];
    [target runAction:sequence];
    
  • 在类的实现中定义stopScheduler方法,用于停止调度器:
-(void)stopScheduler {
  [self unschedule:@selector(addTraget:)];
}

这样,在执行完延迟动作之后,调度器就会停止,并且不会再添加新的子图片。


注意:如果你想要在执行完延迟动作之后停止调度器,你可能还需要在添加目标对象之前使用CCSequence和CCCallFunc来插入延迟动作和回调动作。

在这种情况下,你需要把延迟动作和回调动作放在addTraget:方法的开头,这样在执行完延迟动作之后就会停止调度器。


你可以这样做:

  • 在addTraget:方法的开头添加一个延迟动作,用于延迟执行其余的动作:
    id delayTime = [CCDelayTime actionWithDuration:10];
    
  • 在延迟动作之后插入一个回调动作,用于停止调度器:
    id callFunc = [CCCallFunc actionWithTarget:self selector:@selector(stopScheduler)];
    
  • 将延迟动作和回调动作组合起来,并将组合的动作应用于目标对象:
    id sequence = [CCSequence actions:delayTime, callFunc, nil];
    [target runAction:sequence];
    
  • 在类的实现中定义stopScheduler方法,用于停止调度器:
-(void)stopScheduler {
  [self unschedule:@selector(addTraget:)];
}

这样,在执行完延迟动作之后,调度器就会停止,并且不会再添加新的子图片。