【cocos2d-x】控制台直接输入Lua指令

用脚本进行开发,如果不能实时去输入指令,就丧失了脚本的一大特色,所以对cocos2d-x程序稍微修改下,使其可以直接从控制台读入lua指令,方便调试。 改进版见这里 这里我们采用最简单的方法,直接修改main.cpp。 1 首先在行首加入lua的引用,如下 [cpp]#include “main.h” #include “AppDelegate.h” #include “cocos2d.h” #include “CCLuaEngine.h”[/cpp] 2 在main函数前面插入以下代码

[cpp]#ifdef USE_WIN32_CONSOLE BOOL g_bAppRun = FALSE; DWORD WINAPI ThreadReadConsole(LPVOID lpParam) { HANDLE hConsole = GetStdHandle(STD_INPUT_HANDLE); char szBuffer[1024]; while(g_bAppRun) { DWORD dwNum = 0; ReadConsoleA(hConsole, szBuffer, 1023, &dwNum, NULL); if (dwNum) { szBuffer[dwNum] = ‘\0’; CCLuaEngine* pEngine = CCLuaEngine::defaultEngine(); if (pEngine) pEngine->executeString(szBuffer); } } return 0; } #endif[/cpp] 3 在main函数里修改如下 [cpp]#ifdef USE_WIN32_CONSOLE AllocConsole(); freopen(“CONIN$”, “r”, stdin); freopen(“CONOUT$”, “w”, stdout); freopen(“CONOUT$”, “w”, stderr); g_bAppRun = TRUE; CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadReadConsole,NULL,0,NULL); #endif // create the application instance AppDelegate app; CCEGLView* eglView = CCEGLView::sharedOpenGLView(); eglView->setViewName(“test”); eglView->setFrameSize(480, 320); int ret = CCApplication::sharedApplication()->run(); #ifdef USE_WIN32_CONSOLE FreeConsole(); g_bAppRun = FALSE; #endif[/cpp] 大工告成,可以试下了,控制台可以输入任意Lua指令了。