Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocos2d iphone 如何在cocos2d游戏中添加短暂停顿(思考时间)_Cocos2d Iphone_Sleep - Fatal编程技术网

Cocos2d iphone 如何在cocos2d游戏中添加短暂停顿(思考时间)

Cocos2d iphone 如何在cocos2d游戏中添加短暂停顿(思考时间),cocos2d-iphone,sleep,Cocos2d Iphone,Sleep,我正在开发一款类似跳棋的两人iOS游戏。我正在使用cocos2d创建这个游戏 我希望玩家的移动渲染和计算机的移动渲染之间的思考时间为0.5秒,以模拟思考时间 游戏的流程由NSNotification事件控制,如下所示 玩家(计算机或人类)提交移动->棋盘添加新精灵->游戏控制器更新当前玩家并要求他们提交移动 我试着在棋盘更新结束或游戏更新开始时添加usleep(500000)。最终发生的是在棋盘更新中添加的精灵,对于人类玩家来说,只有在电脑玩家提交动作后才会出现。因此,游戏等待500毫秒,然后用

我正在开发一款类似跳棋的两人iOS游戏。我正在使用cocos2d创建这个游戏

我希望玩家的移动渲染和计算机的移动渲染之间的思考时间为0.5秒,以模拟思考时间

游戏的流程由NSNotification事件控制,如下所示

玩家(计算机或人类)提交移动->棋盘添加新精灵->游戏控制器更新当前玩家并要求他们提交移动

我试着在棋盘更新结束或游戏更新开始时添加usleep(500000)。最终发生的是在棋盘更新中添加的精灵,对于人类玩家来说,只有在电脑玩家提交动作后才会出现。因此,游戏等待500毫秒,然后用两个动作更新

有没有办法强迫CCLayer在usleep之前更新它的子精灵,或者有没有更好的方法来增加这个思考时间


谢谢

如果您计划在控制器中接收更新,您可以在更新:(ccTime)dt功能中滑动时间

在你的

float _slipTime;
在你的房间里

// with other declaratives

static float THINK_TIME=.5f;


// last line before the stall


_slipTime=0.f; 
[self schedule:@selector(pauseForThink:)];


-(void) pauseForThink:(ccTime) dt {
    _slipTime+=dt;
    if(_slipTime>THINK_TIME) {
        [self unschedule:@selector(pauseForThink:)];
        // trigger here whatever you wanted to accomplish after
        // the think pause.
    }
 }
好的,这很简单,但是可以防止主循环被阻塞(这就是睡眠的情况)。当以60 FPS的速度运行时,pauseForThink方法将被调用大约30次,cocos在暂停期间将有30个绘图周期