COCOS2D-X:从另一个线程中加载精灵,任何模式



我程序的事实

  1. cocos2d-x主循环在其自己的线程中运行。让我们称之为 cocos2d-x-thread
  2. 我有一个在自己的线程中运行的task_scheduler,您可以在其中提交轻量级任务。让我们称之为 task_scheduler-thread
  3. 每个X毫秒,从task_scheduler线程发出回调。让我们称之为 task_scheduler-tick-callback

我想做的

我想在发出 task_scheduler-tick-callback 时加载一个精灵,但是我不能从该线程中做到这一点,因此我必须提交某种工作要通过 cocos2d-x thread

执行

问题

  1. 在接收此工作时,如何制作 cocos2d-x-thread ?因为COCOS2D-X已经运行了自己的循环,并且我想避免将自定义代码注入Cocos2D-X生成的项目,不惜一切代价

有什么模式吗?

编辑:indue-> cocos2d -x中的每个循环迭代的任何回调函数?是否存在?我可以将呼叫集成到我的工作 的作品中。

用它在主线程中执行您的代码:

Director::getInstance()->getScheduler()->performFunctionInCocosThread([]{
    // your code
});

实现此目的的最简单(也是最优雅的)方法是具有一种缓冲区(即std::list),并且一种可以定期检查是否有新数据的方法缓冲区。在可可中,这样的功能是每个框架之间运行的每个(CC)Scene上的void update(float dt),或者您还可以使用所需的时间间隔安排自己的时间。

当然需要在关键部分进行阅读和写作。

最新更新