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

用脚本进行开发,如果不能实时去输入指令,就丧失了脚本的一大特色,所以对cocos2d-x程序稍微修改下,使其可以直接从控制台读入lua指令,方便调试。

改进版见这里

这里我们采用最简单的方法,直接修改main.cpp。

1 首先在行首加入lua的引用,如下

#include "main.h"
#include "AppDelegate.h"
#include "cocos2d.h"
#include "CCLuaEngine.h"

2 在main函数前面插入以下代码

#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

3 在main函数里修改如下

#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

大工告成,可以试下了,控制台可以输入任意Lua指令了。

【cocos2d-x】控制台直接输入Lua指令》上有1条评论

发表评论

电子邮件地址不会被公开。