読者です 読者をやめる 読者になる 読者になる

ほげほげ(仮)

仮死状態

Cocos2d-xでスレッドを使った遅延処理

ハマったのでメモ

LayerNodeのサブクラスの場合はscheduleOnceを使えば簡単に遅延処理は可能なのですが、それとは関係ない箇所で遅延処理をやりたかった。

環境

  • Cocos2d-x 3.2

サンプル

#include "cocos2d.h"
#include <unistd.h>

USING_NS_CC;

// ...

auto delay = std::thread([] {
    // 3秒遅延させる
    sleep(3);

    // スケジューラ取得
    auto scheduler = Director::getInstance()->getScheduler();

    // メインスレッドで実行
    scheduler->performFunctionInCocosThread([] {
        // 何か処理
    });
});

// スレッドの管理を手放す
// スレッドと同期したい場合はjoinとか使う
delay.detach();