作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 luajava 开发游戏。当我在 lua 协程中调用 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”,出乎意料的是,我得到了不同的结果。
我怎样才能让它发挥作用?提前谢谢!
最佳答案
冒号把你搞得一团糟。没有带有两个参数的 sayHello 函数。通过使用冒号,您将“ self ”(人)和字符串发送到 Java 代码。您没有采用两个参数的 java 方法。只需在 Lua 中使用点而不是冒号即可使其工作。
关于luajava - 如何在 lua 协程中调用 Java 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9759622/
我是一名优秀的程序员,十分优秀!