我希望此场景中的气球(DisplayObjects)在场景结束时消失。我已将它们作为local sceneGroup = scene.view
的第一个参数传递给display.newImageRect()
,并假设这对于它们被删除是足够的,因为它们在底部的destroy.scene位中列出。然而,当它转换到下一个场景时,它们仍然存在。为什么不删除这些DisplayObject?
local composer = require( "composer" )
local scene = composer.newScene()
local Balloons
local positioninsheetOptions = 100
local sheetOptions =
{
frames =
{
{
x = 0,
y = 0,
width = 71,
height = 100
},
{
x = 0,
y = positioninsheetOptions,
width = 71,
height = 100
},
{
x = 0,
y = positioninsheetOptions*2,
width = 71,
height = 100
},
{
x = 0,
y = positioninsheetOptions*3,
width = 71,
height = 100
},
{
x = 0,
y = positioninsheetOptions*4,
width = 71,
height = 100
},
{
x = 0,
y = positioninsheetOptions*5,
width = 71,
height = 100
},
{
x = 0,
y = positioninsheetOptions*6,
width = 71,
height = 100
},
{
x = 0,
y = positioninsheetOptions*7,
width = 71,
height = 100
},
{
x = 0,
y = positioninsheetOptions*8,
width = 71,
height = 100
},
{
x = 0,
y = positioninsheetOptions*9,
width = 71,
height = 100
},
{
x = 0,
y = positioninsheetOptions*10,
width = 71,
height = 100
},
{
x = 0,
y = positioninsheetOptions*11,
width = 71,
height = 100
},
},
}
local objectSheet = graphics.newImageSheet( "gameObjects.png", sheetOptions )
Balloons = {}
-- -----------------------------------------------------------------------------------
-- Code outside of the scene event functions below will only be executed ONCE unless
-- the scene is removed entirely (not recycled) via "composer.removeScene()"
-- -----------------------------------------------------------------------------------
local function gotoGame()
composer.gotoScene( "game" )
end
-- -----------------------------------------------------------------------------------
-- Scene event functions
-- -----------------------------------------------------------------------------------
-- create()
function scene:create( event )
local sceneGroup = self.view
-- Code here runs when the scene is first created but has not yet appeared on screen
local background = display.newImageRect( sceneGroup, "background.png", 800, 1400 )
background.x = display.contentCenterX
background.y = display.contentCenterY
local balloonBlue1 = display.newImageRect(sceneGroup, objectSheet, 6, 71, 100)
local balloonYellow1 = display.newImageRect(sceneGroup, objectSheet, 8, 71, 100)
local balloonRed1 = display.newImageRect(sceneGroup, objectSheet, 10, 71, 100)
local balloonBlue2 = display.newImageRect(sceneGroup, objectSheet, 6, 71, 100)
local Balloons = display.newGroup()
Balloons:insert( balloonBlue1 )
Balloons:insert( balloonYellow1 )
Balloons:insert( balloonRed1 )
Balloons:insert( balloonBlue2 )
Balloons:addEventListener( "tap", gotoGame )
balloonBlue1.x = (display.contentWidth/8)
balloonBlue1.y = balloonBlue1.height
balloonYellow1.x = (display.contentWidth/8)*3
balloonYellow1.y = balloonBlue1.height
balloonRed1.x = (display.contentWidth/8)*5
balloonRed1.y = balloonBlue1.height
balloonBlue2.x = (display.contentWidth/8)*7
balloonBlue2.y = balloonBlue1.height
end
-- show()
function scene:show( event )
local sceneGroup = self.view
local phase = event.phase
if ( phase == "will" ) then
-- Code here runs when the scene is still off screen (but is about to come on screen)
elseif ( phase == "did" ) then
-- Code here runs when the scene is entirely on screen
end
end
-- hide()
function scene:hide( event )
local sceneGroup = self.view
local phase = event.phase
if ( phase == "will" ) then
elseif ( phase == "did" ) then
-- Code here runs immediately after the scene goes entirely off screen
end
end
-- destroy()
function scene:destroy( event )
local sceneGroup = self.view
-- Code here runs prior to the removal of scene's view
end
-- -----------------------------------------------------------------------------------
-- Scene event function listeners
-- -----------------------------------------------------------------------------------
scene:addEventListener( "create", scene )
scene:addEventListener( "show", scene )
scene:addEventListener( "hide", scene )
scene:addEventListener( "destroy", scene )
-- -----------------------------------------------------------------------------------
return scene
答案 0 :(得分:2)
您需要将Balloon
组(其中气球为儿童)添加到sceneGroup
。
在scene:destroy
中,确保删除所有侦听器并取消对要销毁的内容的任何转换。如果你有,当场景的视图被销毁时,Balloon
组及其所有孩子也将被销毁。