用脚本进行开发,如果不能实时去输入指令,就丧失了脚本的一大特色,所以对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指令——很不错,我已经把它集成到了我们项目中XD