cocos2d Lua 학습(一)
CCScriptEngineProtocol* pEngine = CCLuaEngine::engine();
CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine);
string path = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath("hello.lua");
pEngine->addSearchPath(path.substr(0, path.find_last_of("/")).c_str());
pEngine->executeScriptFile(path.c_str());
lua_State* state = pEngine->getLuaState();
lua_getglobal(state,"myadd"); // lua_add ,
pEngine->pushFloatToLuaStack(3); // 1
pEngine->pushFloatToLuaStack(4); // 12
lua_pcall(state,2,1,0); // myadd , myadd ,
int result = lua_tointeger(state,-1);//
lua_pop(state,1);// ,
CCLog("result = %d",result);
lua 코드:
function myadd(x, y)
print(os.date())
return x + y
end
출력 결과:
Mon Aug 6 10:51:26 2012
Cocos2d: result = 7
lua 호출 C++ 방법:
lua_getglobal(state,"lua_add"); // lua_add ,
lua_register(state,"add",add);
add 함수:
int add(lua_State* L)
{
CCLog("************add**********");
int a = lua_tointeger(L,1);//
int b = lua_tointeger(L,2);
lua_pushinteger(L,a+b);//
return 1;//1
}
lua 코드:
function lua_add(a,b)
return add(a,b)
end
출력 결과:
Cocos2d: ************add**********
Cocos2d: result = 7
void lua_call (lua_State *L, int nargs, int nresults);
함수를 호출합니다.
함수를 호출하려면 다음 협의를 따르십시오. 우선, 호출할 함수는 창고에 깔려야 합니다.이어서 이 함수에 전달해야 할 매개 변수를 정렬에 따라 창고를 눌러라.이것은 첫 번째 매개 변수가 먼저 창고를 누르는 것을 가리킨다.마지막으로 호출
lua_call
;nargs
는 당신이 창고에 눌러 넣은 매개 변수의 개수입니다.함수 호출이 끝난 후, 모든 매개 변수와 함수 자체가 창고에서 나온다.함수의 반환 값은 창고에 눌러집니다.반환 값의 개수는 nresults
개로 설정되지 않은 경우 nresults
개로 조정됩니다.이 경우, 모든 반환 값이 창고에 깔려 있습니다.Lua는 반환 값을 모두 창고 공간에 넣을 것을 보장합니다.함수 반환 값은 정렬에 따라 창고를 압축합니다. (첫 번째 반환 값은 창고를 먼저 압축합니다.) 따라서 호출이 끝난 후에 마지막 반환 값은 창고 꼭대기에 놓입니다.void lua_pushnumber (lua_State *L, lua_Number n);
숫자 하나
LUA_MULTRET
를 창고에 보관하다.lua_Integer lua_tointeger (lua_State *L, int idx);
주어진 색인에 있는 Lua 값을
n
와 같은 기호 정수 형식으로 변환합니다.이 Lua 값은 숫자 또는 숫자로 변환할 수 있는 문자열이어야 합니다(§2.1 참조).그렇지 않으면 lua_Integer
0이 반환됩니다.만약 숫자가 정수가 아니라면, 소수 부분을 자르는 방식은 명확하게 정의되지 않았다.
void lua_pop (lua_State *L, int n);
스택에서
lua_tointeger
개의 요소를 꺼냅니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.