现在的位置: 首页 > 综合 > 正文

Lua脚本语言入门(一)

2017年09月16日 ⁄ 综合 ⁄ 共 1387字 ⁄ 字号 评论关闭

    // register lua engine
    CCLuaEngine* pEngine = CCLuaEngine::defaultEngine();
    CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine);

    std::string path = CCFileUtils::sharedFileUtils()->fullPathForFilename("hello.lua");
    pEngine->executeScriptFile(path.c_str());

1、CCLuaEngine:Lua脚本引擎,它的基类规定了所有Lua引擎的功能函数。通过CCLuaEngine的静态函数获取一个Lua脚本引擎实例对象指针。

 CCLuaEngine* pEngine = CCLuaEngine::defaultEngine();

2、CCScripEngineManager:脚本引擎管理器,用来设定当前项目的唯一正在使用的脚本引擎通过CCScripEngineManager的静态函数shareManager获取单例脚本引擎管理器的实例对象指针,设定pEngine位当前使用的脚本引擎

CCSciptEngineManager::shareManager()->setScriptEngine(pEngine);

3、获取CCLuaStack的实例,因为c++和lua是通过堆栈来实现通信的

CCLuaStack *pStack=pEngine->getLuaStack();

4、lua_State保存了整个Lua解释器的状态,每一个运行的脚本文件都在一个动态分配的叫做lua_State的数据结构中运行

lua_State *tolua_s=pStack->getLuaStack();

tolua_extensions_ccb_open(tolua_s);

5、条件编译:如果是ios平台或者Android平台或者是win32平台

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
    pStack = pEngine->getLuaStack();
    tolua_s = pStack->getLuaState();
    tolua_web_socket_open(tolua_s);
#endif
    如果是黑莓平台
#if (CC_TARGET_PLATFORM == CC_PLATFORM_BLACKBERRY)
    CCFileUtils::sharedFileUtils()->addSearchPath("script");
#endif

6、获取CCFileUtils类的单例,调用类中的fullPathForFilename函数产生一个hello.lua在当前程序所在目录的路径

std::string path=CCFileUtils::sharedFileUtils()->fullPathForFilename("hello.lua");

7、执行这个路径所指向的lua文件

pEngien->executeScripeFile(path.c_str());

抱歉!评论已关闭.