的笔记

随时随地编辑

luaplus note

load script
LuaStateOwner state;
int iret = state->DoFile("test.lua");

call lua
-- lua
function Add(x, y)
    
return x+y;
end

void calllua()
{
    LuaStateOwner state;

    
int iret = state->DoFile("test.lua");

    LuaObject sObj 
= state->GetGlobal("health");
    
int mytest = sObj.GetInteger();

    sObj.AssignInteger(state, 
30);

    mytest 
= sObj.GetInteger();

    
// 调用Lua函数
    LuaFunction<int> luaPrint = state->GetGlobal("print");
    luaPrint(
"Hello World\n");

    LuaFunction
<float> Add =  state->GetGlobal("Add");
    
float myret = Add(3.14f,5.25f);

}

lua call c++
-- test.lua
PrintNumber(
30 , 50 );


//! C++
int LS_PrintNumber(LuaState* state)
{
    LuaStack args(state);

    
if (args[1].IsNumber()) {
        printf(
"%f %f\n", args[1].GetNumber() , args[2].GetNumber() );
    }

    
return 0;
}


void callcplus() 
{
    
// 创建状态
    LuaStateOwner state;

    
// 注册c++函数后就可以在lua中调用了
    state->GetGlobals().Register("PrintNumber", LS_PrintNumber);

    
// 打开测试文件
    int iret = state->DoFile("test.lua");
}

lua call c++ class member fun
-- test.lua
mulresult 
= Mul(5 , 6 )

print(mulresult )


//C++
//--------------------------------------------
class TestObject
{
public:
    TestObject(
float startNumber) :
      m_startNumber(startNumber)
      
{
      }


      
int LS_Mul(LuaState* state)
      
{
          LuaStack args(state);
          assert(args[
1].IsNumber());
          assert(args[
2].IsNumber());

          lua_Number value 
= m_startNumber + args[1].GetNumber() * args[2].GetNumber();
          state
->PushNumber(value);

          
return 1;
      }


protected:
    
float m_startNumber;
}
;

void luacallcplusfun()
{
    LuaStateOwner state;

    TestObject obj(
5);
    state
->GetGlobals().Register("Mul", obj, &TestObject::LS_Mul);

    LuaFunction
<float> mulFunction = state->GetGlobals()["Mul"];
    
float fresult = mulFunction(510);

    
int iret = state->DoFile("test.lua");
}





posted on 2011-07-02 17:19 的笔记 阅读(201) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理