【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指令了。

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

发表评论

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