多个场景自动切换时第二个定时器无作用

柒哥原创 ,欢迎转载,转载请在明显处注明! 谢谢。

原文地址:http://blog.csdn.net/iasxk/article/details/9531785



多个场景自动切换是不是需要多个定时器,是的。

 

所以我想当然的在init()中定义的两个定时器

bool MainScene::init()
{
    bool bRet = false;
    do 
    {
        CC_BREAK_IF(! CCLayer::init());
		//启动定时器
this->schedule(schedule_selector(MainScene::step),1.2f);
this->schedule(schedule_selector(MainScene::startGame),5.0f);//错误
        	
bRet = true;
    } while (0);

    return bRet;
}



这样是不会在1.2s 后切换一个场景,然后又在5s后又切换一个场景。

 

原因:

在MainScene场景被切换后,MainScene里面的定时器就不会在另一个场景中启作用。

 

解决:



这个this指的就是当前的场景对象,这个是可以省略的。

假如你的第二个场景是secondScene,你想在第二个场景时,过5s切换到第三个场景,假如是thirdScene.那么就在切第二个场景前定义第二个定时器

secondScene->schedule(schedule_selector(MainScene::startGame),5.0f);正确

CCDirector::sharedDirector()->replaceScene(secondScene);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: stm32是一种基于ARM Cortex-M内核的微控制器系列,它具有强大的处理能力和丰富的外设资源。在stm32中,可以通过创建两个app并实现轮流运行来充分发挥其多任务处理的能力。 首先,我们可以创建两个不同的应用程序(App1和App2),每个应用程序使用不同的资源和功能。然后,我们可以使用操作系统(如FreeRTOS)或非操作系统的方法来实现这两个应用程序之间的轮流切换。 在操作系统中,可以使用任务切换功能来实现两个应用程序之间的轮流。一个任务就是一个独立的执行线程,它可以执行一段代码并占用处理器的间。我们可以定义两个任务,一个任务运行App1的代码,另一个任务运行App2的代码。操作系统会根据任务优先级、间片轮转等算法来进行任务切换,从而实现两个应用程序之间的轮流运行。 在非操作系统的环境中,我们可以使用定时器中断来实现两个应用程序之间的轮流切换。可以设置一个定时器,每个周期结束触发中断,然后在中断服务函数中实现切换。比如,当定时器中断发生,我们可以让App1运行一段间,然后在下一个定时器中断发生切换到App2运行,以此类推。 无论是使用操作系统还是非操作系统的方法,都需要合理设计和编写App1和App2的代码,确保它们能够正常运行并适应切换的需求。同,还需要了解stm32的多任务处理机制和相关编程技术,以便能够灵活地应对各种情况和需求。 综上所述,可以借助操作系统或者定时器中断来实现stm32两个app的轮流运行,实现多任务处理的能力,充分发挥stm32的强大功能。 ### 回答2: STM32是一种微控制器,可以通过编程实现两个应用程序轮流运行的功能。轮流运行两个应用程序的方法有很多,这里提供一种常见的实现方式。 首先,需要对STM32进行编程,使用适当的集成开发环境(如Keil、STM32CubeIDE等)创建两个应用程序的工程。 在工程中,需要设置两个应用程序的逻辑和功能。可以使用中断进行切换,也可以使用定时器中断或其他方法来控制应用程序的切换。具体使用哪种方法取决于应用程序的需求和开发者的偏好。 在程序开始执行,首先加载并运行第一个应用程序。在适当的机,通过中断或定时器中断等机制,触发应用程序切换切换第二个应用程序后,继续运行。然后再触发切换回第一个应用程序。依此类推,实现两个应用程序的轮流运行。 在切换过程中,需要确保程序切换的数据传递和状态保存。可以使用全局变量或者共享内存等方法来实现应用程序间的数据传递和状态保存。 总之,通过合适的编程和切换机制,可以实现STM32上两个应用程序的轮流运行。这种方式可以广泛应用于各种嵌入式系统和实控制应用场景中。 ### 回答3: STM32是一款具有强大功能的微控制器,它可以通过切换两个应用程序实现轮流工作。在STM32中,可以使用多任务调度机制来实现这一功能。 首先,我们需要在STM32的FLASH存储器中安装两个应用程序。每个应用程序都有自己的入口点和功能。在开始,可以选择其中一个应用程序作为默认应用程序。 然后,我们需要使用任务调度器来控制两个应用程序的轮流运行。任务调度器负责按照一定的算法选择要运行的应用程序,并在每个应用程序执行一段间后切换到另一个应用程序。 任务调度器可以采用不同的调度算法,如循环调度算法或优先级调度算法。在循环调度算法中,两个应用程序按照相同的间片来轮流执行。在优先级调度算法中,可以根据应用程序的重要性或优先级来确定运行顺序。 为了实现任务调度器,需要使用定时器和中断机制。定时器用于计算每个应用程序执行的间,中断用于在间片结束后触发任务切换。 总之,通过合理设计和实现任务调度器,并结合定时器和中断机制,可以实现在STM32中两个应用程序的轮流运行。这种轮流工作的方式可以提高系统的效率和灵活性,并且可以根据具体的要求进行定制和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值