oOOMIAO 2013-04-11 07:37 采纳率: 10%
浏览 1064

如何在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方法是预定的,应该怎么设置一段时间之后结束这这段进程?

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2022-12-21 13:27
    关注

    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:)];
    }
    

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

    评论

报告相同问题?

悬赏问题

  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题