1.8 KiB
Creating UI
Instances are created using create().
create() returns a constructor for a class which then takes a table of
properties to assign when creating a new instance for that class.
Luau allows us to omit parentheses () when calling functions with string or
table literals which Vide takes advantage of for brevity.
local mount = vide.mount
local create = vide.create
local function App()
return create "ScreenGui" {
create "Frame" {
AnchorPoint = Vector2.new(0.5, 0.5),
Position = UDim2.fromScale(0.5, 0.5),
Size = UDim2.fromScale(0.4, 0.7),
create "TextLabel" {
Text = "hi"
},
create "TextLabel" {
Text = "bye"
},
create "TextButton" {
Text = "click me",
Activated = function()
print "clicked!"
end
}
}
}
end
mount(App, game.StarterGui)
Assign a value to a string key to set a property, and assign a value to a number key to set a child. Events can be connected to by assigning a function to a string key.
You can also use a shorthand to create datatypes instead of explicitly typing
out the class name and constructor. The table will be unpacked into the .new()
constructor of the property's type.
create "Frame" {
AnchorPoint = { 0.5, 1 },
UDim2 = { 0.5, 0, 0.5, 0 }
}
When creating an instance with no properties, it is important to not forget to
actually call the constructor: create "Frame" {} and not create "Frame".
To be clear, create "Frame" returns a function which is a constructor for
that class, not an instance of that class. This would result in you attempting
to parent a function instead of an instance which is not the correct behavior.