前言
最近做一个lua异步加载纹理的功能,在C++回调lua函数时,有时会发生崩溃的情况,原因可能是我直接使用了lua的api对堆栈操作而导致了数据出错,其实Cocos2dx已经封装好了相关的api,所以调用Cocos2dx的api就可以很方便的调用Lua函数。
在C++中如何引用Lua函数?
通过查看CCScheduler中的scheduleScriptFunc方法可以看到在C++代码中是用unsigned int表示Lua函数的,其实int类型也可以。
示例代码
AsynResLoader.h
#ifndef _ASYNRESLOADER_H_
#define _ASYNRESLOADER_H_
#include "cocos2d.h"
USING_NS_CC;
//供Lua调用的异步的资源加载器
class AsynResLoader: public CCObject
{
private:
int count;
int total;
//lua回调方法
int mLuaCallback;
public:
//创建一个异步资源加载器
static AsynResLoader* cr