本来以为很简单的,妈的,碰到一大堆的坑。记录一下
步骤:
1:给.h和.cpp加上命名空间。
#pragma once
#include "cocos2d.h"
USING_NS_CC;
namespace GameLogic{
class MyClass : public Ref
{
public:
MyClass(void);
~MyClass(void);
bool init() { return true; };
CREATE_FUNC(MyClass);
int foo(int i);
};
}
#include "MyClass.h"
namespace GameLogic{
MyClass::MyClass(void)
{
}
MyClass::~MyClass(void)
{
}
int MyClass::foo(int i)
{
return i + 100;
}
}
2:在tools\bindings-generator\targets\lua和bindings-generator\targets\spidermonkey的conversions.yaml文件加上:
"GameLogic::": "gls."
注意前面不能有tab,必须是空格。要不然会出现文件解析字符出错。
3:注册。参考上一篇的那个坑。直接上结果吧:
bool LuaEngine::init(void)
{
_stack = LuaStack::create();
_stack->retain();
<span style="color:#ff0000;">register_all_myclass(_stack->getLuaState());</span>
executeScriptFile("DeprecatedEnum.lua");
executeScriptFile("DeprecatedClass.lua");
executeScriptFile("Deprecated.lua");
return true;
}
4:编写lua代码:
local test = ccc.MyClass:create()
print("the first cocos bind lua result "..test:foo(2))
完成.....