Раскадровка Corona добавляет объекты в [self.view] вне методов
Я осознаю, что мне нужно поместить все экранные объекты в моей сцене в групповое представление.
Но мне нужно подготовить динамическое отображение и функции с большой глубиной [не вызывается напрямую из scene:createScene
, scene:enterScene
так далее.]
Поэтому я попытался сделать глобальную ссылку на self.view
но это не помогло. Вот мой фрагмент кода:
-- reference all variable
local globalSceneObj
function scene:createScene(event)
print ( "scene:createScene" )
local group=self.view
globalSceneObj=group
..
..
end
function enterObject()
..
..
currentFlyingObj=display.newImage(globalSceneObj,FLYING_OBJECTS[num][1],display.contentWidth,_H/2)
..
..
end
Но этот код не помогает, и моя игра вылетает при втором посещении этого экрана. Есть ли другой способ получить ссылку на представление группы раскадровки?
1 ответ
Попробуйте этот подход,
--refrence все переменные локальные globalSceneObj
function scene:createScene(event)
print ( "scene:createScene" )
local group=self.view
scene._globalSceneObj = group
..
..
end
function enterObject()
..
..
currentFlyingObj=display.newImageRect(FLYING_OBJECTS[num] [1],display.contentWidth,_H/2)
scene._globalSceneObj:insert(currentFlyingObj)
..
..
end
И убедитесь, что при переходе на другую сцену вы удаляете текущую сцену и все, что вы отменяете, все таймеры, используя timer.cancel(timername), и удаляете слушателей, если вы их используете.