- 浏览: 809973 次
- 性别:
- 来自: 广州
最新评论
-
mixture:
语句int num1, num2;的频度为1;语句i=0;的频 ...
算法时间复杂度的计算 [整理] -
zxjlwt:
学习了。http://surenpi.com
[问题解决]Error: ShouldNotReachHere() [整理] -
Animal:
谢谢 楼主 好东西
算法时间复杂度的计算 [整理] -
univasity:
gaidandan 写道缓存失败,,模拟器上可以缓存,同样代码 ...
[开发总结]WebView使用中遇到的一些问题&解决 -
blucelee2:
那么麻烦干吗,而且这种方法会导致,当拉太小的时候样式会丢掉,整 ...
[SWT]SashForm中固定单侧大小(&实现面板隐藏)
代码来个人和自网络,仅供参考,如有纰漏请指正,欢迎交流。
01. 在AWT中的使用(来自文章《Java中使用Lua脚本语言 》)
<!--StartFragment-->/////////////////////////////////////////////////////
//
Hello.java
public class Hello { public static void main(String[] args) { LuaState L = LuaStateFactory.newLuaState(); L.openLibs(); System.out.println("这里是Java程序调用Lua脚本"); // 加载脚本hello.lua,并执行 L.LdoFile("res/hello.lua"); } }
--------------------------------------------------------
-- hello.lua
frame = luajava.newInstance("java.awt.Frame", "Lua Java Console") console = luajava.newInstance("java.awt.TextArea") buttons_pn = luajava.newInstance("java.awt.Panel") execute_bt = luajava.newInstance("java.awt.Button", "Execute") clear_bt = luajava.newInstance("java.awt.Button", "Clear") exit_bt = luajava.newInstance("java.awt.Button", "Exit") frame:setSize(600,300) buttons_pn:add(execute_bt) buttons_pn:add(clear_bt) buttons_pn:add(exit_bt) BorderLayout = luajava.bindClass("java.awt.BorderLayout") frame:add(BorderLayout.NORTH, console) frame:add(BorderLayout.SOUTH, buttons_pn) frame:pack() frame:show() -- -- Listeners -- execute_cb = { actionPerformed = function(ev) print("execute") pcall(loadstring(console:getText())) end } jproxy = luajava.createProxy("java.awt.event.ActionListener",execute_cb) execute_bt:addActionListener(jproxy) clear_cb = {actionPerformed= function (ev) print("clear"); console:setText(""); end } jproxy = luajava.createProxy("java.awt.event.ActionListener" ,clear_cb) clear_bt:addActionListener(jproxy) exit_cb = { actionPerformed=function (ev) print("exit") frame:setVisible(false) frame:dispose() end } jproxyb = luajava.createProxy("java.awt.event.ActionListener" ,exit_cb) exit_bt:addActionListener(jproxyb) close_cb = { } function close_cb.windowClosing(ev) print("close") frame:setVisible(false) frame:dispose() end function close_cb.windowActivated(ev) print("act") end jproxy = luajava.createProxy("java.awt.event.WindowListener", close_cb) frame:addWindowListener(jproxy)
02. 在SWT中的使用(本人写的一个小例子)
/////////////////////////////////////////////////////
//
Hello.java
public class Hello { /** * @param args */ public static void main(String[] args) { // Display display = new Display(); // Shell shell = new Shell(display); // shell.setLayout(null); // Text hello = new Text(shell, SWT.MULTI); // shell.setText("Java应用程序"); // shell.setSize(200, 100); // hello.setText("Hello,SWT World!"); // hello.pack(); // shell.open(); // while(!shell.isDisposed()){ // if(!display.readAndDispatch()){ // display.sleep(); // } // } // display.dispose(); LuaState L = LuaStateFactory.newLuaState(); L.LdoFile("res/hello.lua"); L.close(); } }
--------------------------------------------------------------
-- hello.lua
-- -- create instance -- display = luajava.newInstance("org.eclipse.swt.widgets.Display") -- Display shell = luajava.newInstance("org.eclipse.swt.widgets.Shell",display) -- Shell SWT = luajava.bindClass("org.eclipse.swt.SWT") -- SWT text = luajava.newInstance("org.eclipse.swt.widgets.Text", shell,SWT.MULTI) -- Text -- -- init state -- shell:setText("Java应用程序") shell:setSize(200, 100) text:setText("Hello SWT World!") text:pack() shell:open() -- -- loop -- while not shell:isDisposed() do if not display:readAndDispatch() then display:sleep() end end display:dispose()
03. 网上找到的一个例子
<!--StartFragment-->////////////////////////////////////////////////////
// IBusinessLogic.java
public interface IBusinessLogic { public void doLogic (); }
----------------------------------------------------
-- LuaLogic.lua
local logic = {} function logic.doLogic () print("hello from logic written in Lua") end return logic
/////////////////////////////////////////////////////
// LuaJavaTest.java
public class LuaJavaTest { public static void main(String[] args) throws ClassNotFoundException, LuaException { LuaState l = LuaStateFactory.newLuaState(); l.openLibs(); l.LdoFile("res/LuaLogic.lua"); LuaObject logic = l.getLuaObject("logic"); IBusinessLogic jlogic = (IBusinessLogic) (logic.createProxy("IBusinessLogic")); jlogic.doLogic(); l.pop(1); }
04.数值和对象传递的一个例子(参考自
http://hi.baidu.com/lff0305/blog/item/fd666931da276111eac4af45.html
)
-----------------------------------------
-- test01.lua
function sum(a, b) return a+b end function test1(v) v:init() end
/////////////////////////////////////////////////////
// Test01.java
public class Test01 { /** * @param args */ public static void main(String[] args) { LuaState L = LuaStateFactory.newLuaState(); // 加载lua标准库,否则一些lua基本函数无法使用 L.openLibs(); // doFile L.LdoFile("res/test01.lua"); //---------------------------------------------值传递测试 // 找到函数 sum L.getField(LuaState.LUA_GLOBALSINDEX, "sum"); // 参数1压栈 L.pushNumber(100); // 参数2压栈 L.pushNumber(50); // 调用,共2个参数1个返回值 L.call(2, 1); // 保存返回值到result中 L.setField(LuaState.LUA_GLOBALSINDEX, "result"); // 读入result LuaObject lobj = L.getLuaObject("result"); // 打印结果 System.out.println(lobj.getNumber()); //---------------------------------------------对象传递测试 Value v = new Value(); L.getField(LuaState.LUA_GLOBALSINDEX, "test1"); try { L.pushObjectValue(v); } catch (LuaException e) { e.printStackTrace(); } L.call(1, 0); v.print(); } } class Value { private int i; public void init(){ i = 111; } public void print(){ System.out.println(i); } }
- luaInJava.rar (116.1 KB)
- 描述: 部分例子源代码
- 下载次数: 348
评论
7 楼
liyunbang08
2012-08-02
liyunbang08 写道
PANIC: unprotected error in call to Lua API (attempt to call a nil value)
运行出错,请问下什么是什么问题?
运行出错,请问下什么是什么问题?
搞定、眼拙写错路径。
6 楼
liyunbang08
2012-08-02
PANIC: unprotected error in call to Lua API (attempt to call a nil value)
运行出错,请问下什么是什么问题?
运行出错,请问下什么是什么问题?
5 楼
liyunbang08
2012-08-02
liyunbang08 写道
Value v = new Value();
LZ问下这个value是哪个包的?
LZ问下这个value是哪个包的?
额 看到,是内部类。。。
4 楼
liyunbang08
2012-08-02
Value v = new Value();
LZ问下这个value是哪个包的?
LZ问下这个value是哪个包的?
3 楼
univasity
2012-02-29
Smile__LV 写道
LZ啊 你这是什么IDE 什么开发环境啊 工程eclipse导入不了啊
我用的就是eclipse啊,J2EE版本。导入后提示什么错误?
2 楼
Smile__LV
2012-02-27
LZ啊 你这是什么IDE 什么开发环境啊 工程eclipse导入不了啊
1 楼
相似的悲哀
2011-12-28
这几天一直在纠结一个问题,怎么从lua中获取table里的值呢??
发表评论
-
[问题解决]个推SDK使用侧记 -- 多个账号注册导致的问题
2013-12-28 14:40 2254这是我们项目最近用到的东西,用来实现消息推送。 (还不了 ... -
[问题解决] 个推(igetui)SDK使用侧记 -- 多个账号注册同一应用导致的问题
2013-12-28 14:33 0这是我们项目最近用到的东西,用来实现消息推送。 (还不了解 ... -
[SWT]打开Windows文件夹的方法 [整理]
2012-10-24 21:03 2639参考论坛帖子:http://www.iteye.com/top ... -
[SWT]SashForm中固定单侧大小(&实现面板隐藏)
2012-09-20 16:06 7165<!-- 额,发觉写篇博客都不知怎么选分类了。。。名称太 ... -
[Everything模仿] 相关项目资源整理
2012-04-29 20:04 3808一段时间来,发觉还是 ... -
[问题解决]Ubuntu10.04安装出现的显示器“无信号”问题
2011-12-11 20:42 4372<!-- 旧帖转移,2010-09-25 --> ... -
9个主流的开源许可协议[整理]
2011-12-05 23:15 29400关于开源许可 现今存在的开源协议很多,而经过 ... -
电子邮件收发原理和实现(POP3, SMTP) [整理]
2011-09-16 11:12 28383<!-- 最近工作上接触到了邮箱的开发,整理一下学到的东 ... -
讲解极小极大 (Minimax Explained) [译]
2011-09-11 21:00 6918原文链接:Minimax Explaine ... -
理解极小极大算法 (Understanding The Minimax Algorithm) [译]
2011-09-11 20:45 27115原文链接:Understanding Th ... -
Maven In Android
2011-08-31 17:32 3487Maven 一个项目管理工具,类似于Ant。相比Ant, ... -
[基础回顾]基于Eclipse的J2me和Android开发环境搭建
2011-03-23 00:10 1894<!-- 越是基础的东西就容易被忽略和轻视...我是接触 ... -
[SVN]423 Locked problem (Solved)
2011-03-03 17:15 9029今天使用SVN上传代码,突然冒出了一行红字... Se ... -
Everything研究之快速获取USN记录的文件路径
2011-01-06 17:04 9012<!-- 发觉越是没事干,记忆越差,乘还记得点什么,记录 ... -
Everything研究之读取NTFS下的USN日志文件(2)
2010-11-08 01:08 15840续>> /******************* ... -
Everything研究之读取NTFS下的USN日志文件(1)
2010-11-08 01:02 33071我在第一次使用 Everything 时,对其速度确实感到 ... -
[Swing]Netbean中使用外部资源
2010-10-22 15:43 1643要在NetBean中使用外部资源,首先需要在项目目录下创建一个 ... -
[Swing]实现一个文本自动完成工具
2010-10-17 00:00 3647//------------------------- ... -
[图形算法]J2me上的凹凸拼图实现思路
2010-04-05 21:31 6150出于个人兴趣,简单研究了一下凹凸拼图的实现。以下为本人的实现思 ... -
[特效研究]j2medev论坛里提到的一个显示特效实现
2010-03-14 16:05 2484原贴链接:http://www.j2medev.com/ ...
相关推荐
- **游戏开发**:Lua被广泛用于游戏开发领域,著名的例子之一就是《魔兽世界》使用Lua作为脚本语言来实现游戏逻辑。这证明了Lua不仅易于使用,而且在复杂应用中也能表现出色。 #### 四、Lua的语法特点 - **简洁性**...
lua 脚本中调用腾讯云语音合成接口,可以将文本...腾讯云官网上有几种语言的demo,如java,Python , GO , C++ 等,但是没有lua脚本的例子,并且lua 中加密的使用,网络上信息量很少。这个脚本同时展示了lua的加密的使用
这些元素分别涉及了以下几个知识点: 1. **JFreeChart**:这是一个用于Java的开源报表组件,可以生成各种图表,例如柱状图、饼图、线图等,常用于数据分析和展示。 2. **进程管理**:描述中提到的“进程杀不掉的...
V8引擎的实现主要涉及以下几个方面: 1. **即时编译(JIT)**:V8引擎在运行时将JavaScript代码编译成机器码,这个过程分为两个阶段——静态单赋值形式(SSA)中间表示和优化编译。SSA帮助减少数据依赖性,优化编译...
在Jedis-showcase项目中,我们通常会看到以下几个关键模块: 1. **连接管理**:Jedis-showcase展示了如何创建和管理Jedis实例。这包括了连接池的配置,例如使用`JedisPoolConfig`来定制连接池参数,以及如何通过`...
在安卓应用中实现TCP套接字通信,通常涉及以下几个关键步骤: 1. **创建Socket对象**:使用`java.net.Socket`类创建一个socket实例,指定服务器的IP地址和端口号。例如: ```java Socket socket = new Socket(...
Redis提供了几个关键操作,如`SETNX`(Set if Not eXists)、`EXPIRE`(设置过期时间)和`GETSET`(原子性地获取并设置值),这些操作可以用来构建一个简单的分布式锁。下面是一个基本的流程: 1. **获取锁**:当...
在Redis-Service JavaDoc中,你可以找到以下几个关键的知识点: 1. **Redis客户端连接**:文档会涵盖如何创建和管理与Redis服务器的连接。这通常涉及使用如Jedis或Lettuce这样的Java客户端库,包括初始化配置、连接...
这个插件允许你通过输入几个键来用有趣/有意义的单词或数字列表填充Arrays 。 您可以从多个可用类别中进行选择。 它适用于所有主流编程语言,如Python 、 Javascript 、 Java 、 C 、 C++ 、 C# 、 Lua 、 Ruby等。...
这个插件允许你通过输入几个键来用有趣/有意义的单词或数字列表填充Arrays 。 您可以从多个可用类别中进行选择。 它适用于所有主流编程语言,如Python 、 Javascript 、 Java 、 C 、 C++ 、 C# 、 Lua 、 Ruby等。...
此脚本通常包含以下几个主要部分: 1. **参数解析**:使用 Python 的 `argparse` 库来处理命令行参数。 2. **模板生成**:根据指定的参数生成项目结构和相应的文件。这可能涉及到模板引擎(如 Jinja2)来生成代码...
一个完整的游戏源码项目通常会包含以下几个关键部分: 1. **主程序代码**:这是游戏的核心,包含游戏逻辑、玩家交互、游戏循环和事件处理等功能。 2. **图形资源**:包括游戏界面、角色、背景、动画等图像文件,...
在Java项目中,为了使用Redis,我们需要将这两个jar包添加到项目的类路径中。这样,我们就可以在代码中创建Jedis实例,通过连接池获取和归还连接,执行Redis命令。例如: ```java import redis.clients.jedis.Jedis...
实现过程主要包括以下几个步骤: 1. 配置Nginx:在Nginx的配置文件中,我们需要设置反向代理规则,将所有需要session共享的请求指向同一组后端服务器,并开启session亲和性(sticky session),确保用户的后续请求...