[나무 Cocos2d - x 031] Lua 편 (제6 장): Lua 호출 C++ 의 함수

3036 단어 cocos2d-x
[나무 Cocos2d - x 031] Lua 편 (제6 장): Lua 호출 C++ 의 함수
지금까지 Lua 와 C++ 간 의 통신 에 익숙 해 졌 을 텐 데 오늘 마지막 조작 을 소개 하 겠 습 니 다.
(방백: 뭐? 마지막? 끝 나 는 거 야? 다행이다 ~!)
이전 장 전송 문:http://blog.csdn.net/musicvs/article/details/8451361
멍청 한 나무 가 심혈 을 기울 여 공헌 하 다 니, 뭐라고?바람기아 닙 니 다. 심혈 을 기울 이 고 있 습 니 다.http://blog.csdn.net/musicvs/article/details/8451369
본문:
1. Lua 호출 C++ 함수
Lua 가 C++ 의 함 수 를 호출 하 는 것 은 매우 편리 합 니 다. 우선, 우 리 는 c++ 함 수 를 만 듭 니 다. 먼저:
public:
  static int getNumber(int num);
  
  
int HelloLua::getNumber( int num ) {
    CCLOG("getNumber num = %d", num);
    return num + 1;
}

클래스 따 위 는 무시 하고 함수 로 바로 올 라 갑 니 다.
(방백: = = 게으르다!)
이것 은 매우 간단 한 함수 로 값 을 주 고 + 1 후의 값 을 되 돌려 줍 니 다.
지금, 우 리 는 Lua 에서 이 함 수 를 호출 하려 면 함 수 를 하나 더 써 야 한다.
(방백: 저기, 왜 getNumber 함 수 는 정적 입 니까?)
public:
static int cpp_GetNumber(lua_State* pL);


int HelloLua::cpp_GetNumber( lua_State* pL ) {
    /*          */
    int num = (int)lua_tonumber(pL, 1);

    /*   getNumber  ,       */
    lua_pushnumber(pL, getNumber(num));

    /*      ,getNumber       ,    1 */
    return 1;
}

(방백: 또 정적 이다!)
이게 어떻게 된 거 죠?Lua 와 C++ 는 스 택 을 통 해서 만 통신 할 수 있다 는 것 을 잘 알 고 있 습 니 다. 그래서 Lua 는 getNumber 함 수 를 직접 호출 할 수 없 기 때문에 cpp 를 만 듭 니 다.GetNumber 함 수 를 중개 로 합 니 다.
cpp_GetNumber 함 수 는 lua 가 있 습 니 다.State * pL 인자, 이 인자 가 있 으 면 c++ 는 Lua 의 스 택 에서 값 을 얻 을 수 있 습 니 다. 나머지 는 모두 간단 합 니 다. 더 이상 설명 하고 싶 지 않 습 니 다.
해명 이나 해.
(방백: 네 여동생 의 종이, 그 럴 줄 알았어!)
1) 우선 Lua 스 크 립 트 에서 cpp 호출GetNumber 함수, 왜 호출 할 수 있 는 지, 한 번 설명 하면 나 는 내 레이 션 이 반드시 물 어 볼 것 이라는 것 을 안다.(내 레이 션: 뭔 가 힘 이 없어 서...)
2) cppGetNumber 가 호출 되 었 을 때 모든 것 이 다시 C++ 로 돌아 가 Lua 에 대한 작업 입 니 다. 스 택 꼭대기 에 함수 에 필요 한 인 자 를 저장 하고 꺼 내 사용 하면 됩 니 다.
3) Lua 호출 cppGetNumber 이후 결과 가 필요 합 니 다. 물론 이 결 과 는 스 택 에 만 저장 할 수 있 기 때문에 당연히 getNumber 의 결 과 를 스 택 에 넣 어야 합 니 다.
4) 마지막, cppGetNumberreturn 은 함수 의 실행 결과 가 아니 라 getNumber 가 값 을 되 돌려 줘 야 하 는 개수 입 니 다. (Lua 는 여러 반환 값 의 함 수 를 지원 합 니 다)
방백, 알 겠 느 냐?
(방백: 어... 모 르 겠 어)
자, 다 들 알 았 으 니 더 이상 말 하지 않 겠 습 니 다 ~
(방백: 네 여동생 종이 의 OO!)
2. 끝났어
마지막 으로 Lua 의 튜 토리 얼 에 대해 서 는 여기 서 일 단락 되 었 습 니 다. 저 는 Lua Bind 의 튜 토리 얼 을 쓰 려 고 했 습 니 다 (매우 강력 합 니 다!).그러나 교과 서 를 쓰 는 것 은 시간 이 많이 걸 리 는 일이 다. 10 분 동안 배 울 수 있 는 지식 이다. 아마도 나 는 2 시간 이 걸 려 야 교과 서 를 탄생 시 킬 수 있 을 것 이다.(방백: 그래, 그 러 니까 많이 응원 해 줘...)
하지만 이 6 편의 튜 토리 얼 을 다 먹고 Lua 로 Cocos2d - x 에서 개발 하면 큰 어려움 이 없다.(루 아 빈 드 에 대해 더 알 아 보 는 게 좋 을 것 같 아 요)
아마 저 는 나중에 Lua 의 튜 토리 얼 을 계속 쓸 것 입 니 다. 지금 은 Cocos2d - x 를 계속 공부 하 러 가 겠 습 니 다. 튜 토리 얼 을 쓰기 때문에 (2 주 동안 상태 기 튜 토리 얼 과 Lua 의 튜 토리 얼 을 계속 쓰 고 있 습 니 다) 저 는 거의 2 주 동안 멈 추 었 습 니 다.서 두 르 셔 야 돼 요. 뒤 처지 면 안 돼 요.
그럼 설날 잘 보 내세 요.
(방백: 설날 이후 에 이 강 좌 를 보 낼 거 라 고 확신 하 십 니까?)
그리고 마 우 스 를 살짝 움 직 여 '꼭대기' 를 눌 러 주세요 ~ 헤헤
.
참, 중요 한 것 을 잊 어 버 렸 어 요. 본 시리즈 튜 토리 얼 의 모든 소스 다운로드 주소:
http://download.csdn.net/detail/musicvs/4948713
(죄송합니다. 포인트 다운 로드 를 면제 하려 고 했 는데 손 이 빨 라 서 업 로드 를 눌 렀 고 수정 할 수 없습니다...)

좋은 웹페이지 즐겨찾기