2013-10-15 7 views
0

Я показываю одно изображение png на экране, которое содержит различные уровни, на которые игрок может нажать. создать изображение с помощью:В CoronaSDK, как я могу обработать событие крана из скрытого объекта displayObject?

local levelsImage = display.newImage("assets/levelmap-levels.png", 0, 0, true) 

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

for i,level in ipairs(levels) do 
    local levelTapCircle = display.newCircle(level.x, level.y, level.tapRadius) 
    levelTapCircle.level=level -- attach the level info to the object so we know which level was tapped 
    levelTapCircle.alpha=0.3 
    myGroup:insert(levelTapCircle) 
end 

Присоединить обработчик события крана следующим образом:

levelTapCircle:addEventListener("tap", levelTapped) 

В функции levelTapped я просто печатаю координаты крана на вывода, чтобы доказать, что обработчик события был вызван.

Если круги видны (т. Е. При альфа> 0), то событие поднимается и вызывается функция levelTapped. Однако, если я изменил значение альфа-значения на 0, чтобы скрыть круги, событие перехода не вызывается.

levelTapCircle.alpha=0 

Ниже также можно использовать, чтобы скрыть круги, но это также приводит к обработчику водопроводную события не вызывается:

levelTapCircle.isVisible = false 

Мой вопрос:

ли это можно получить события крана из скрытых объектов displayObject (круги в этом случае)? Если нет, как я могу получать события крана из определенных круговых областей на изображении, но без фактического отображения кругов?

ответ

1

Как уже было сказано, будет отключена, если альфа = 0 или IsVisible = ложь, трогают события ,

Вы можете, однако, прекратить это с isHitTestable = true. Это не позволяет вам использовать какое-либо решение.

object.alpha = 0 
-- OR -- 
object.isVisible = false 

-- Enable Touch/Tap Events With -- 
object.isHitTestable = true 
+0

Я тестировал это, и он работает. Я предпочитаю не использовать обходное решение, поэтому спасибо за ответ. – Teevus

1

Если вы установили alpha=0 или isVisible=false, то функция Tap и touch также отключена.

В методе двукратного вы можете справиться с этой проблемой,

Первый один levelTapCircle:setFillColor(255,255,255,0)

или

levelTapCircle.alpha=0.01 
+0

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