如何保存要在场景之间重用的DisplayObject?
示例:
scene1包含DisplayObject绘图。
在scene:exitScene
我将其保存到storyboard.state.scene1.drawing
然后当我回到我scene:enterScene
的场景时,我做了:
drawing = storyboard.state.scene1.drawing
self.view:insert(drawing)
但是我收到错误,好像绘图无效。
答案 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
注意:您需要将组传递给对象,以便在退出时将其移除到场景中。