`
smallpaopao
  • 浏览: 18118 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Lua脚本语言<转>

    博客分类:
  • Lua
阅读更多
Lua是一个实用的脚本语言,相对于Python来说,比较小巧,但它功能并不逊色,特别是在游戏开发中非常实用(WoW采用的就是Lua作为脚本的)。Lua在C\C++的实现我就不多说了,网上随便一搜,到处都是这方面的介绍,我想说的是如何在Java下使用Lua以提高编程效率、增强你的程序可扩展性。

首先,要在Java上使用Lua脚本,必须有关于Lua脚本解释器以及Java程序可以访问这些脚本的相关API,即相关类库。我使用的是一个叫做LuaJava的开源项目,可以在: http://www.keplerproject.org/luajava/ 找到LuaJava的类库以及源代码,使用文档资等

下载下来解压后包括两个文件(我下载的是1.1版本的): luajava-1.1.jar 文件和 luajava-1.1.dll动态连接库文件

luajava-1.1.jar就容易了,就是将其加入你的项目的ClassPath中,以便程序可以使用它提供的API

luaJava-1.1.dll就麻烦了,你必须将其加入你的Windows安装目录下,比如你用的是XP,安装在C盘,那就直接将其加入C:\WINDOWS目录下即可,当然你也可以将其加入你的JDK下的jre下

好了,现在你的项目就可以使用Lua脚本来实现动态扩展功能了!不过不要急,你还得有工具来写Lua脚本吧?不可能用记事本来写吧???????

你可以使用UltraEdit,但你用UE打开lua文件后,会发现和记事本差不多,并没有高亮(可能新版本的支持Lua脚本了),如果你的UE不支持,那么先去UltraEdit的官网下载支持Lua的Wordfiles文件(http://www.ultraedit.com/files/wf/lua.txt),是个文本文件(lua.txt)。打开UltraEdit安装目录下的wordfile.txt,把lua.txt文件中的内容拷贝粘贴到wordfile.txt的末尾,存盘,OK,于是UltraEdit语法高亮项多出Lua一项,可以选择使用了。其他语言的语法高亮支持与此类似。

但你如果是Java开发者,应该都用过Eclipse吧?可否在Eclipse下直接就写Lua脚本呢?答案是可以的!

这当然是Eclipse的强大的插件管理功能啦,你可以去下载luaeclipse插件来使你的Eclipse拥有编写Lua脚本的能力(既可以高亮显示你的脚本,是不是很爽呢),你可以在这里下载:http://www.ideais.com.br/luaeclipse/

下载后安装后,你的Eclipse就可以建立和编写Lua脚本了,注意设置一下首选项中关于LUA的属性(Eclipse安装插件就不用我说了吧????)

好了,现在一切都准备好了,让我们来一个HelloWorld吧!

首先在Eclipse先建立一个TestLua项目,然后编写如下程序:

import org.keplerproject.luajava.*;

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.java咯,注意,这是Java代码!这是Java代码调用了一个叫hello.lua的脚本,下边是这个脚本文件的内容(你可以直接把他们复制到你的hello.lua文件中):

================================================================

--基本方法
print("您现在使用的是LUA脚本语言")
print("让我们一起来感受它的奇妙吧!\n")

--特点1,赋值
a={1,2}
b=a
print(a==b, a~=b)    --输出 true, false
a={1,2}
b={1,2}
print(a==b, a~=b)    --输出 false, true

--特点2,交换
a,b=1,2
a,b=b,a
print(a)
print(b)

print("连接".."字符串"..2^3)
print(type(2))

--while循环
i=0
print("while循环例子")
while i<5
do
print(i);
i=i+1
end

--repeat循环
i=0
print("repeat循环例子")
repeat
print(i)
i=i+1
until i>=5

--for循环
print("for循环例子")
for i=0,5,1
do
print(i)
end

T1={}
T1[1] = 10
print(T1[1])

function fun(a,b,...)
print(a)
print(b)
print(arg[1])
print(arg[2])
print(arg[3])
return
end

a,b=2,3
fun(a,b,200,400,500)

========================================================

好了,上边的脚本如果你不懂什么意思也没关系,直接运行一下吧

你可以执行编译执行那个Hello.java程序就可以了,就会看到如下的输出结果:

========================================================

这里是Java程序调用Lua脚本
您现在使用的是LUA脚本语言
让我们一起来感受它的奇妙吧!

true false
false true
2
1
连接字符串8
number
while循环例子
0
1
2
3
4
repeat循环例子
0
1
2
3
4
for循环例子
0
1
2
3
4
5
10
2
3
200
400
500

==========================================================

怎样,是不是很爽呢?觉得没意思?好,在来一段脚本吧:


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)
分享到:
评论

相关推荐

    IE脚本辅助2.0

    &lt;br&gt;其中文件扩展名“.js”对应JavaScript语言、“.vbs”对应VBScript语言,目前支持这两种脚本。&lt;br&gt;&lt;br&gt;[选中IE窗体]&lt;br&gt;通过拖动“瞄准器”的图标可以选中目标IE窗体。参考“Spy++”。&lt;br&gt;&lt;br&gt;[执行脚本]&lt;br&gt;选中...

    Script.NET脚本语言开发平台

    要使用某种脚本语言的开发功能,可以到蓝蚂蚁工作室网站下载相应语言的开发包,下载地址:&lt;br&gt;http://www.blueantstudio.net/scriptnet/download/download.htm&lt;br&gt;&lt;br&gt;Script.NET主要功能特性如下: &lt;br&gt;1、编辑、...

    Lua开发包

    &lt;br&gt;Script.NET主要功能特性如下: &lt;br&gt;1、编辑、调试、运行tcl、python、lua脚本; &lt;br&gt;2、脚本的编译/加密和生成可执行文件(每种脚本语言支持的程度不同); &lt;br&gt;3、效率分析等辅助功能(目前只有tcl脚本支持了此...

    Lua脚本语言在自动测试中的应用

    【Lua脚本语言在自动测试中的应用】 Lua是一种轻量级的脚本语言,因其高效、易用和可扩展性而在自动测试领域中得到广泛应用。它允许开发者快速编写测试脚本,实现对软件和硬件的自动化测试,从而提高测试效率,减少...

    基于Lua脚本语言的嵌入式UART通信的实现

    "基于Lua脚本语言的嵌入式UART通信的实现" 本文提出了一种基于Lua脚本语言的解决方案,旨在提高IED装置对各种类型串口数据报文帧格式的适应性。该方案将具体串口报文规约的组建和解析交给Lua脚本进行处理,使设计者...

    c#调用脚本语言Lua——简单Demo

    c#调用脚本语言Lua——简单Demo 配置: 1. 下载c#下的Lua支持类库。下载地址:http://files.luaforge.net/releases/luainterface/luainterface/2.0.3 将(lua51.dll\LuaInterface.dll)引用自己的项目中。 2. 修改...

    Lua脚本语言简明教程

    Lua 脚本语言 简明教程

    Lua脚本语言中文教程.pdf

    这种理念使得Lua成为了一个高效的脚本语言,适用于多种开发环境。 最后,这本书的翻译和校对是由***的朋友们共同努力的结果。参与翻译和校对的人员被记录在名为thanks.lua的文件中,体现了开源和协作精神在编程社区...

    易用脚本语言

    所以,脚本语言在软件开发领域有着很重要的作用,目前市场上有很多脚本语言,如 JavaScript,VBScript,LUA等,其中也有国产的.&lt;br&gt;&lt;br&gt;易用脚本是一种简单和易用的脚本引擎,完全采用易语言开发.目前引擎发布的...

    LUA脚本语言参考文档

    LUA脚本语言是一种轻量级的、扩展性强的程序设计语言,它支持过程式、面向对象、函数式和数据驱动等编程范式。LUA的设计使其成为一个灵活且强大的脚本工具,可用于多种应用场景。LUA语言由cleanC编写而成,不包含...

    window系统 Lua脚本语言编译器

    标题提到的“window系统 Lua脚本语言编译器”实际上指的是用于在Windows平台上运行和编译Lua脚本的工具。 Lua的编译器主要是`luac.exe`,它将Lua源代码转换为字节码,这是一种中间表示,可以在Lua虚拟机上直接执行...

    redis.lua lua脚本语言

    lua链接redis的工具驱动代码

    NSIS开发包

    &lt;br&gt;Script.NET主要功能特性如下: &lt;br&gt;1、编辑、调试、运行tcl、python、lua脚本; &lt;br&gt;2、脚本的编译/加密和生成可执行文件(每种脚本语言支持的程度不同); &lt;br&gt;3、效率分析等辅助功能(目前只有tcl脚本支持了此...

    Lua脚本语言WIN环境

    在"Lua脚本语言WIN环境"中,提供的`lua-5.2.1_Win64_bin`是针对Windows 64位系统的Lua运行时环境。下面将详细介绍Lua脚本语言及其在Windows环境下使用的关键组件。 1. **Lua 5.2.1 版本**: 这是Lua的一个特定版本,...

    LUA脚本语言的实现C代码

    LUA脚本语言是计算机编程领域中的一种轻量级、高效且易于学习的脚本语言。它的设计目标是提供一种嵌入式应用的快速原型开发工具,尤其在游戏开发、服务器管理和自动化脚本等方面有着广泛的应用。LUA的源代码实现简洁...

    excel表转Lua脚本工具

    《Excel表转Lua脚本工具详解》 在IT行业中,数据转换是一项常见的任务,尤其当涉及到配置文件或者游戏脚本时。Lua作为一种轻量级、高效且易读的脚本语言,常被用于游戏开发和其他配置文件的编写。然而,手动编写Lua...

    LUA脚本|LUA脚本支持库

    LUA脚本是一种轻量级的、嵌入式的脚本语言,因其简洁的语法和高效性能,被广泛应用于游戏开发、服务器配置、自动化任务等多个领域。LUA脚本支持库则是为了扩展LUA的功能,提供更丰富的API和工具,使得开发者能够更...

Global site tag (gtag.js) - Google Analytics