Audio
Audio
UI

index template
editor.template.componetns/pageX/index.lua
{ name = "pageX", components = { layers = { {background={}}, }, audios = { long = {"streamOne", "streamTwo"}, short = {"shortOne", "shortTwo"} }, }, commands = {}, }
template
editor.template.components.pageX.audios.aduio
local props = { autoPlay = {{autoPlay}}, channel = {{channel}}, delay = {{delay}}, filename = "{{filename}}", folder = "{{folder}}", loops = {{loops}}, -- 1 + 3 = 4 times name = "{{name}}", type = "{{type}}", } return require("components.kwik.page_audio").new(props)
module
components.kwik.page_audio
function M:create(UI) ... ... if self.type == "stream" then self.loader = audio.loadStream self.filename = "long/"..self.filename else self.loader = audio.loadSound self.filename = "short/"..self.filename end local path = App.getProps().audioDir..self.filename self.audioObj = self.loader(path , App.getProps().systemDir) ... ... end function M:play() audio.setVolume(self.volume or 8, { channel=self.channel }); if self.allowRepeat then self.repeatableChannel = audio.play(self.audioObj, { channel=self.channel, loops=self.loops, fadein = self.fadein } ) else audio.play(self.audioObj, {channel=self.channel, loops=self.loops, fadein = self.fadein } ) end end ... ...
components.editor.audio
audio
├── audioTable.lua
├── buttons.lua
├── controlProps.lua
├── controller
│ ├── cancel.lua
│ └── save.lua
├── defaults
│ └── audio.lua
├── index.lua
comonents.editor.audio.index
local model = { id ="audio", props = { {name="autoPlay", value=true}, {name="channel", value = ""}, {name="delay", value=0}, {name="filename", value = ""}, {name="folder", value=""}, {name="loops", value = ""}, {name="name", value = ""}, {name="type", value = ""}, } } ... ... function controller:render(book, page, type, name, model) local dst = "App/"..book.."/"..page .."/components/audios/"..type.."/"..name ..".lua" local tmplt = "editor.template/components/pageX/audios/audio.lua" util.mkdir("App", book, page, "components", "audios", type) util.saveLua(tmplt, dst, model) return dst end function controller:save(book, page, type, name, model) local dst = "App/"..book.."/models/"..page .."/audios/"..type.."/"..name..".json" util.mkdir("App", book, "models", page, "audios", type) util.saveJson(dst, model) return dst end
components.editor.audio.defaults
local M = { name = "audio_", class="audio", controls = { autoPlay=false, channel = 0, delay=0, filename = "", -- folder="", loops = 0, name = "", type = "", } }