Import component Layer
index.lua
layers = {
...
rectCopied = {class = {"imported"}
...
}
rectCopied_imported.lua
- x, y
- color is (1, 1, 0) yellow
local props={
path = "bookTest.components.parts.layers.buttonGroup.redRect",
name = "rectCopied",
class = {"button", "linear"},
text = "hello importer class",
}
local layerProps = {
x = display.contentCenterX - 150,
y = display.contentCenterY - 100,
color = {1, 1, 0}
}
props.layerProps = layerProps
props.classProps = {
button = {},
linear = {}
}
return require("components.kwik.importer").new(props)
graph TB subgraph parts bg square subgraph buttonGroup redRect greenRect blueRect end subgraph redGroup rectCopied circleRed end rectCopied -.import.-> redRect end subgraph page1 bg1[bg] square1[square] buttonGroup1[buttonGroup] end square1 -.import.-> square buttonGroup1 -.import.-> buttonGroup
TODO
REST API
layerProps, classProps
group props
props = { redRect = {layerProps = {x=display.contentCenterX+50, color = {0.5,0,0}}}, redRect_button = {}, }
GUI class “imported”
- selectLayer
- properties
Page1
buttonGroup1, bouttonGroup2 are imported from parts/buttonGroup
index.lua
layers = { { bg={} }, { buttonGroup1={ class={"imported"} } }, { buttonGroup2={ class={"imported"} } },
components/layers
- bg.lua
- square.lua
- square_import.lua
- buttonGroup1
- buttonGroup1_import.lua
- buttonGroup2
- buttonGroup2_import.lua
page1 buttonGroup1_import.lua
local M={ path = "bookTest.components.parts.layers.buttonGroup.index", name = "buttonGroup1", } M.props = { redRect = {layerProps = {x=display.contentCenterX+50, color = {0.5,0,0}}}, redRect_button = {}, redRect_linear = {}, -- greenRect = {layerProps = {x=200}}, greenRect = {layerProps = {x=display.contentCenterX+100, color = {0,0.5, 0}}}, blueRect = {layerProps = {x=display.contentCenterX+150, color = {0,0,0.5}}}, } return require("components.kwik.importer").new(M)
page1 square_imported.lua
local M={ path = "bookTest.components.parts.layers.square", name = "square", } return require("components.kwik.importer").new(M)
Parts
redGroup/rectCopied is imported from buttonGroup/Rect
local layerProps = { x = display.contentCenterX - 150, y = display.contentCenterY - 100, color = {1, 1, 0} }
index.lua
layers = { { bg={} }, { buttonGroup={ {redRect ={class={"button", "linear"}}}, {greenRect = {}}, {blueRect = {} }} }, { redGroup= { {rectCopied = {class = {"imported"}}}, {circleRed = {}} } }
components/layers files
bg.lua
square.lua
square_animation.lua
buttonGroup
- redRect.lua
- redRect_button.lua
- redRect_linear.lua
- greenRect.lua
- blueRect.lua
redGroup
- rectCopied.lua
- rectCopied_import.lua
- circleRed.lua
parts redGroup/rectCopied_imported.lua
props.layerProps
props.classProps
local M={ path = "bookTest.components.parts.layers.buttonGroup.redRect", name = "rectCopied", class = {"button", "linear"}, text = "hello importer class", } local layerProps = { blendMode = "normal", height = 50, width = 50, kind = solidColor, name = "redRect", type = "png", x = display.contentCenterX - 150, y = display.contentCenterY - 100, alpha = 100/100, color = {1, 1, 0} } props.layerProps = layerProps props.classProps = { button = {}, linear = {} } return require("components.kwik.importer").new(props) -- this import need to call redRect.lua, redRect_button.lua redRect_linear.lua
Instance Name
the syntax is {{parent}}.{{name}}. You can access it like
local obj = UI.sceneGroup(“three.eight”)
A parent.name should be unique in all the layers in a page
Application.lua
function newModule(name) local M = {} local parent = name:match("(.-)[^%.]+$") local root = parent:sub(1, parent:len()-1):match("(.-)[^%.]+$") M.name = name:sub(root:len()+1) local isLayers = M.name:find("layers.") if isLayers then M.name = M.name:sub(8) end M.newInstance = newInstance return parent, root, M end
for example, let’s make an instance of layer group - three
layers = { {one = {}}, {two={class={"linear"}}}, {three = { { four={}}, { five={class={"myClass"}}}, { six={ { seven = {class={"myClass", "linear"}}}, { eight = {}} } } }} },
You can import it to another page like this
layers = { { bg={} }, { three={ class={"imported", "linear"} } }, },
three_imported.lua
local M={ path = "bookTest.components.page2.layers.three.index", name = "three", } M.props = { four={layerProps = {color={1,0,1}}}, five={layerProps = {color={0,1,0}}}, five_myClass = {}, six={ seven = {layerProps = {color={1,0,0}}}, seven_myClass = {}, seven_linear = {}, eight = {layerProps = {color={1,1,0}}} } } return require("components.kwik.importer").new(M)
three_linear.lua
function M:didShow(UI) local obj = UI.sceneGroup["six.eight"] local linearOne, linearTwo linearOne = function() transition.to(obj, {xScale = 2, yScale=2, onComplete = linearTwo}) end linearTwo = function() transition.to(obj, {xScale = 1, yScale=1, onComplete = linearOne}) end linearOne() end