跳转到内容

BlitzMax/Modules/System/Lua 脚本

来自维基教科书,开放世界中的开放书籍

MaxLua 模块提供了一种从 Blitzmax 程序中使用 Lua 脚本语言的方法。

Lua 是一种简单但快速且强大的脚本语言。有关使用 Lua 进行编程的更多信息,请访问 Lua 官方网站:https://lua.ac.cn

以下是如何使用 MaxLua 模块的一个示例

Strict

'Our TDemo type...
'
Type TDemo

Method SayHello$( name$ )
Return "Hello "+name+"! Peace be with you..."
End Method

End Type

'Register a demo object with Lua.
'
'Lua code can now access the object using the identifier "Demo".
'
Local demo:TDemo=New TDemo
LuaRegisterObject demo,"Demo"

'source code to our little Lua program...
'
Local source$=..
"function hello()~n"+..
"print( Demo.SayHello( 'Fredborg' ) )~n"+..
"end~n"+..
"function goodbye()~n"+..
"print( Demo.SayHello( 'CandyMan' ) )~n"+..
"end~n"

'create a Lua 'class' and set it's source code...
'
Local class:TLuaClass=TLuaClass.Create( source )

'Now, create an instance of the class.
'
Local instance:TLuaObject=TLuaObject.Create( class,Null )

'We can no invoke methods of the class.
'
instance.Invoke "hello",Null
instance.Invoke "goodbye",Null

TLuaObject

[编辑 | 编辑源代码]

Lua '对象'

方法
  • Init
  • Invoke
函数
  • Create

TLuaObject: 方法

[编辑 | 编辑源代码]
Init

方法 Init:TLuaObject( class:TLuaClass, supr:Object )

描述: 初始化 Lua 对象

信息: 设置对象的类和父对象。

如果对象是用 TLuaObject.Create 函数创建的,则不需要调用此方法。

Invoke

方法 Invoke:Object( name$, args:Object[] )

描述: 调用对象方法

信息: name 应引用对象类源代码中的一个函数。

TLuaObject: 函数

[编辑 | 编辑源代码]
Create

函数 Create:TLuaObject( class:TLuaClass, supr:Object )

描述: 创建一个 Lua 对象

信息: 创建 Lua 对象后,可以使用 Invoke 方法调用对象方法(实际上是在类中定义的 Lua 函数)。

TLuaClass

[编辑 | 编辑源代码]

Lua '类'

TLuaClass 类型用于包含 Lua 源代码。

源代码应包含一系列一个或多个 Lua 函数。

要实际调用这些函数,必须先创建一个 lua 对象 - 请参阅 TLuaObject.

方法
  • SourceCode
  • SetSourceCode
函数
  • Create

TLuaClass: 方法

[编辑 | 编辑源代码]
SourceCode

方法 SourceCode$()

描述: 获取源代码

返回值: 类的 Lua 源代码。

SetSourceCode

方法 SetSourceCode:TLuaClass( source$ )

描述: 设置源代码

信息: 设置类源代码。

如果类是用 TLuaClass.Create 函数创建的,则不需要调用此方法。

TLuaClass: 函数

[编辑 | 编辑源代码]
Create

函数 Create:TLuaClass( source$ )

描述: 创建一个 Lua 类

返回值: 一个新的 Lua 类对象。

信息: source 参数必须是有效的 Lua 源代码,并且应包含一系列一个或多个 lua 函数定义。

这些函数可以使用 TLuaObject.Invoke 方法来调用。

LuaRegisterObject

[编辑 | 编辑源代码]

函数 LuaRegisterObject( obj:Object, name$ )

描述: 在 Lua 中注册一个全局对象

信息: 注册后,可以使用 name 标识符从 Lua 脚本中访问该对象。

华夏公益教科书