The AS3 Sugar provides a Lua-like way to access AS3 class and instance creation, property getter/setters, and function calls.

Values return from sugar are always AS3 Objects for performance reasons. If you need to perform Lua operations on these values, you should convert them to Lua types using as3.tolua(value).

example = as3.class.String.new("Hello")
hello
= as3.tolua(example).." World!"
as3
.trace(hello)--Traces"Hello World!"

Note: Only classes that have been included in the SWF can be created. For the demo all of mx.containers and mx.controls have been included along with all the top level and default classes all SWFs get.

Sugar is optional feature. See UsingRawLuaAlchemy.

Create AS3 Object

syntax = as3.class.ClassName.new(param1,..., paramN)
example1
= as3.class.String.new("Hello There")
example2
= as3.class.flash.utils.ByteArray.new()

Get Member Property

value = as3obj.property
example
= as3.class.Array.new()
len
= example.length

Set Member Property

as3obj.property = value
example
= as3.class.MyClass.new()
example
.text ="Hello There"

Call Member Function

return= as3obj.function([param1,..., paramN])
example1
= as3.class.Array.new()
example1
.push(5)

example2
= as3.class.MyClass.new()
example2
.someFunction()
result
= example2.anotherFunction(1,"hello")

Get A Class

syntax = as3.class.ClassName.class()
example
= as3.class.flash.utils.ByteArray.class()

You should be able to call static functions or get static methods using this class just as if it were an instance created with new. But sometimes you may want to directly call into a class without creating an instance like done in ActionScript

Get Static Property

syntax = as3.class.ClassName.staticProperty
example
= as3.class.MyClass.SOME_CONSTANT

Set Static Property

as3.class.ClassName.staticProperty = value
as3
.class.MyClass.text ="hello"

Call Static Function

as3.class.ClassName.staticFunction([param1,..., paramN])
as3
.class.MyClass.someStaticFunction()
v
= as3.class.MyClass.anotherStaticFunction(1,6,999)

Call Namespace Function

as3.namespace.ClassName.namespaceFunction([param1,..., paramN])
as3
.namespace.MyClass.someNamespaceFunction()
v
= as3.namespace.MyClass.anotherNamespaceFunction(1,6,999)