2016-01-05 2 views
0

У меня есть рабочее текстовое поле в короне ... Я инстанцировал его помощью:Corona SDK - TextField получает слева на экране

local nameTextField = native.newTextField (centerX, roundedRect.y + roundedRect.height*1.7, 300, 80) 

nameTextField:addEventListener("userInput", textListener) 

Затем я удостоверился, чтобы добавить это self.view сцены в методе создания :

function scene:create(event) 
    local sceneGroup = self.view 
    sceneGroup:insert(nameTextField) 
end 

вся сцена показана с использованием метода showoverlay.

composer.showOverlay("renameoverlay", options) 

Когда я скрыть сцену с помощью hide overlay:

composer.hideOverlay("fade", 400) 

Даже после того, скрывая всю сцену, используя код выше, то nameTextField все еще получает осталось на экране. Это не происходит в моих других сценах.

Что может быть причиной этого? Как это решить ???

ответ

1

Во-первых, native.newTextField() можно добавить в display.newGroup(). Воля перемещается вместе с группами, но они все еще сидят поверх иерархии отображения. Сцена, использующая fade или crossFade, не может скрыть текстовые поля, потому что они не перемещаются.

Поскольку похоже, что ваш оверлей использует «fade», вам нужно будет скрыть текстовые поля, когда вы вызываете showOverlay, и покажите их, когда закончите с наложением.

Сфера деятельности тоже. Я не могу сказать, какую часть вашего кода вы создаете в новом текстовом поле, но оно должно быть видимым в любом месте, на которое вы ссылаетесь.

0

кажется, что родные объекты не могут быть добавлены к Dispaly группам, необходимо удалить собственный объект, когда вы скрываете сцену, попробуйте следующее:

добавить сцену: скрыть (событие)

function scene:hide(event) 

    if nameTextField then 
    nameTextField :removeSelf() 
    nameTextField = nil 
    end 
end 

scene:addEventListener("hide", scene) 

Надеюсь, это вам поможет!

0

Я уверен, что это связано с проблемой доступа для локальной переменной.

Изменить этот

local nameTextField = native.newTextField (centerX, roundedRect.y + roundedRect.height*1.7, 300, 80) 

к этому

nameTextField = native.newTextField (centerX, roundedRect.y + roundedRect.height*1.7, 300, 80) 

или это

function scene:create(event) 
    local sceneGroup = self.view 
    sceneGroup:insert(nameTextField) 
end 

этому

function scene:create(event) 
    sceneGroup = self.view 
    sceneGroup:insert(nameTextField) 
end