Раскадровка 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), и удаляете слушателей, если вы их используете.

Другие вопросы по тегам