Я думал, что это будет просто, но я расчесывал сеть, пытаясь решить ее в течение нескольких дней.Передача информации обратно родителям (Corona SDK)
То, что я собираюсь сделать, это кнопка, которая вызывает небольшое всплывающее окно, которое затем можно использовать для выбора нового изображения для исходной кнопки. То, как я надеялся сделать это, - установить исходные кнопки sprite frame в composer.getVariable («buttonState»), но я не уверен, как передать команду для обновления исходного спрайта.
В настоящее время в main.lua я использую
local composer = require("composer")
composer.setVariable("buttonState", 1)
composer.gotoScene("scene_game")
Тогда в scene_game.lua есть спрайт установить то:
local composer = require("composer")
--calling up sprite.lua library
local sprite = require("sprite")
--setting up sprite sheet
local sheet1 = sprite.newSpriteSheet("itemSlot.png", 72, 72)
---spriteSheet, startFrame, frameCount
local spriteSet1 = sprite.newSpriteSet(sheet1, button1state, 4)
--Slot 1
--spriteSet, sequenceName, startFrame, frameCount, time, [loopParam]
sprite.add(spriteSet1, "green", composer.getVariable("buttonState"), 4)
local slot1 = sprite.newSprite(spriteSet1)
slot1.x = 72*6 --button location left/right
slot1.y = 72*5 --button location up/down
--Bring up Item slot Selection window
slot1.dropDown=function(event)
if(event.phase == "ended") then
composer.showOverlay("scene_dropDown", options)
end
end
slot1:addEventListener("touch",slot1.dropDown)
В scene_dropDown.lua
local composer = require("composer")
local scene_game = require("scene_game")
local sprite = require("sprite")
--setting up sprite sheet
local sheet1 = sprite.newSpriteSheet("itemSlot.png", 72, 72)
---spriteSheet, startFrame, frameCount
local spriteSet2 = sprite.newSpriteSet(sheet1, 1, 4)
--Item option 1
--spriteSet, sequenceName, startFrame, frameCount, time, [loopParam]
sprite.add(spriteSet2, "green", 1,4)
local item1 = sprite.newSprite(spriteSet2)
item1.x = display.contentCenterX+36 --button location left/right
item1.y = display.contentCenterY-36 --button location up/down
item1:setFrame(2)
--Item option 1 functions
function state1Cb(event)
display.remove(item1)
composer.setVariable("buttonState", 2)
item1:removeEventListener("tap", state1Cb)
timer.performWithDelay(1, addListenerA) -- Do this instead
return true
end
--Item option 1 listener
function addListener1()
item1:addEventListener("tap", state1Cb)
end
--Finishing up the listeners
addListener1()
return scene
Это сокращенная версия кода только с одним вариантом.