Last Modified: 2023-07-09

Compoent with Asset

audio

  1. App/book/assets/audios/long/GentleRain.mp3

  2. App/book/components/page3/index.lua

    local sceneName = ...
    --
    local scene = require('controller.scene').new(sceneName, {
        name = "page3",
        components = {
          layers = { },
          audios = {
            long  = {"GentleRain", "Tranquility" },
            short ={} ,
          },
          groups = {},
          timers = {},
          variables = {},
          page = { }
        },
        commands = { "onComplete", "play" },
        onInit = function(scene) print("onInit") end
    })
    --
    return scene
    
  3. App/book/components/page3/audios/long/GentelRain.lua

    local name = ...
    
    local props = {
      name     = "GentleRain",
      type     = "stream",
      autoPlay = false,
      channel  = 1,
      folder   = nil,
      filename = "GentleRain.mp3",
    }
    
    local M = {
      -- name        = {{aname}},
      -- type        = {{atype}},
      -- language    = nil  -- or {"en", "jp"},
      -- filename    = "{{fileName}}",
      -- folder      = nil
      -- allowRepeat = false,
      -- autoPlay    = {{aplay}},
      -- deplay      = {{adelay}},
      -- volume      = {{avol}},
      -- channel     = {{achannel}}
      -- loops       = {{aloop}},
      -- fadein      = {{tofade}},
      -- retain      = {{akeep}}
    }
    -- you can play it with UI.audios[self.name]:play()
    
    return require("components.kwik.page_audio").set(props)
    

layer replacement

TODO reame controls to asset?

For instance, a spritesheet consists of an imagesheet png in assets/sprites folder, properties like sequence data are defined in layerA_sprite.lua in components/page/layers folder, and components/page/index.lua declears the sprite class for layerA

  1. App/book/assets/sprites/imagesheet.png

    spritesheet.lua in the same folder has the sheetInfo properites.

  2. App/book/components/index.lua

    local scene = require('controller.scene').new(sceneName, {
        name = "page1",
        components = {
          layers = {
                {  bg={} },
                {  layerA={class={"sprite"}} },
          },
          audios = {},
          groups = {},
          timers = {},
          variables = {},
          page = {}
        },
        commands = {},
        onInit = function(scene) print("onInit") end
    })
    
  3. App/book/components/layers/layerA.lua

      -- layer properties
      local Props = {
        blendMode = "normal",
        height    = 100,
        width     = 100,
        kind      = pixel,
        name      = "layerA",
        x         = display.contentCenterX,
        y         = display.contentCenterY,
        alpha     = 100/100,
      }
    
  4. App/book/components/layers/layerA_sprite.lua

    sheetInfo “spritesheet” loads spritesheet.lua in the same folder

      local M = {
      name = "spritesheet",
      class = "spritesheet",
      type  = "uniform-sized", -- TexturePacker, Animate
      assets = {
        filename = "imagesheet.png",
        sheetInfo = "spritesheet",
        sheetContentWidth  = 376, -- same size or loaded from sheetInfo
        sheetContentHeight = 188, -- same size or loaded from sheetInfo
        numFrames          = 2,   -- same size or loaded from sheetInfo
        width              = 188, -- same size, disable for TP, Aniamte
        height             = 188, -- same size, disable for TP, Animate
      },
      sequenceData = {
        {
            name = "default",
            count = 2,
            loopCount = 0,
            loopDirection = "forward", -- reverse after last frame
            pause = false,
            start = 1,
            time = 1000,
        },
        {
          name = "test",
          frames = {1,2},
          loopCount = 0,
          loopDirection = "forward", -- reverse after last frame
          pause = false,
          time = 1000,
      }
      },
      actioneName = "",
    }