保存要在场景之间重用的DisplayObject

时间:2013-07-21 19:06:29

标签: corona corona-storyboard

如何保存要在场景之间重用的DisplayObject?

示例:

scene1包含DisplayObject绘图。

scene:exitScene我将其保存到storyboard.state.scene1.drawing

然后当我回到我scene:enterScene的场景时,我做了:

drawing = storyboard.state.scene1.drawing
self.view:insert(drawing)

但是我收到错误,好像绘图无效。

2 个答案:

答案 0 :(得分:0)

鉴于您将对displayobject的引用存储在变量中,我会这样做

没有经过测试,但这个想法应该有效。

FromScene:

local displayObj=yourDisplayObject

-- when it is time to change scene, do it like this:

local options={
      local params ={
      dispObj = displayObj,
    },
}
storyboard.gotoscene(targetScene, options)


---
targetScene:

scene:createScene(event)
    local params=event.params
    local displayObj=params.dispObj
    --and then do whatever you want with displayObj
...
...
end

以这种方式执行此操作需要您不要在第一个场景的destroyscene中取消或删除显示对象。

答案 1 :(得分:0)

如果你想在不同的场景中重用对象你可以通过创建一个对象lua文件来做到这一点,例如我将创建一个rect并将其保存为RectObject.lua

local H = display.contentHeight
local W = display.contentWidth
local myRect

myObject = {}

--the ScreenGroup parameter is the group from the scene where this object calls
function myObject:drawRect(ScreenGroup)
myRect = display.newRect(W/2 + 50, H/2, 50,50)
myRect:setFillColor(255,255,128)
ScreenGroup:insert(myRect)

end

因此,当我去我的场景时,我会在需要时随时拨打电话

require("RectObject.lua")

function scene:enterScene( event )
    local group = self.view
    --calling Object from RectObject.lua
    myObject:drawRect(group) 

end

注意:您需要将组传递给对象,以便在退出时将其移除到场景中。