问题大概是这样的:
function Battle:sendToken()
…
hero:onReceiveToken()
return
….
end
function Hero:onReceiveToken()
…
battle:sendToken()
return
…
end
Battle是战斗系统,控制回合的流程,Hero是角色,battle会调用Hero:onReceiveToken方法,把控制权交给hero,让他执行工作,执行完后会调用Battle:sendToken把控制权返回给battle,这样就陷入了一个代码的循环,导致LUA ERROR :stack overflow的错误,有没有办法能让hero:onReceiveToken和battle:sendToken这2个调用改成异步调用,好让return语句结束把堆栈释放掉呢?前提是不能使用依赖cocos2dx的代码,所以类似performWithDelay的方法都不能用,因为这个模块是纯lua代码写的,给服务器调用生成录像用的。另外我看了下quick的状态机和事件也都不是异步的,因此也解决不了这个问题