代码实现功能是,每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),在回调动作中停止调度器。
具体而言,你可以这样做:
id delayTime = [CCDelayTime actionWithDuration:10];
id callFunc = [CCCallFunc actionWithTarget:self selector:@selector(stopScheduler)];
id sequence = [CCSequence actions:delayTime, callFunc, nil];
[target runAction:sequence];
-(void)stopScheduler {
[self unschedule:@selector(addTraget:)];
}
这样,在执行完延迟动作之后,调度器就会停止,并且不会再添加新的子图片。
注意:如果你想要在执行完延迟动作之后停止调度器,你可能还需要在添加目标对象之前使用CCSequence和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];
-(void)stopScheduler {
[self unschedule:@selector(addTraget:)];
}
这样,在执行完延迟动作之后,调度器就会停止,并且不会再添加新的子图片。