2012-03-18 9 views
3

私はluajavaによってゲームを開発しています。ルアコルーチンでJava関数を呼び出すと、「無効なメソッド呼び出しです。そのようなメソッドはありません」というエラーが表示されます。 はここでここでは、コードルアコルーチンでJava関数を呼び出す方法は?

package com.soyomaker; 

import org.keplerproject.luajava.LuaException; 

import org.keplerproject.luajava.LuaState; 

import org.keplerproject.luajava.LuaStateFactory; 

public class Main { 

    public static void main(String[] args) { 
     LuaState luaState = LuaStateFactory.newLuaState(); 
     luaState.openLibs(); 
     try { 
      luaState.pushObjectValue(new People()); 
      luaState.setGlobal("people"); 
     } catch (LuaException e) { 
      e.printStackTrace(); 
     } 
     luaState.LdoFile("res/script.lua"); 
    } 
} 

//============================================================================= 

package com.soyomaker; 

public class People { 

    public void sayHello(String name) { 
     System.out.println("hello " + name); 
    } 

} 

//============================================================================= 

print(people) 

print(people.sayHello) 

people:sayHello("Bill") 

function run() 

    print("========run========") 

    print(people) 

    print(people.sayHello) 

    people:sayHello("Jobs") 

end 

local co=coroutine.create(run) 

print(coroutine.resume(co)) 

が結果です:

hello Bill 

userdata: 040256B8 

<b>function: 040252C0</b> 

========run======== 

userdata: 040256B8 

<b>function: 04026650</b> 

false Invalid method call. No such method. 

は私が予期せず、二回 "people.sayHello" を印刷し、私は別の結果を得ます。

どうすればいいですか?事前にありがとう!

+1

この質問に答えたことがありますか?今、同じことに走っている。 :( – SomeCallMeTim

答えて

0

コロンがあなたを台無しにしています。 2つの引数を持つsayHello関数はありません。コロンを使用することによって、あなたは「自己」(人)と文字列をJavaコードに送ります。 2つの引数をとるjavaメソッドはありません。 Luaのコロンの代わりにドットを使って機能させるだけです。

関連する問題