Остановить распространение событий в Corona SDK

Я использую Corona SDK и Director 1.4 для создания приложения. Моя цель - открыть всплывающее окно при нажатии кнопки (btn_play) нажата.

Однако я столкнулся с проблемой. Когда btn_play нажата, это вызывает openPopup(e) так же как changeScene(e) (так как задан фон для выполнения функции). Как я могу остановить функцию changeScene(e) от выполнения при нажатии на btn_play кнопка?

Вот коды моего игрового экрана:

module(..., package.seeall)

local localGroup

function new()
    localGroup = display.newGroup();

    -- Background Image
    local background = display.newImageRect("background.jpg", display.contentWidth, display.contentHeight )
    background:setReferencePoint( display.TopLeftReferencePoint )
    background.x, background.y = 0, 0
    background.scene = "scene_menu";

    -- Play button
    local btn_play = display.newImageRect("grass.png", 320, 82 )
    btn_play:setReferencePoint( display.CenterReferencePoint )
    btn_play.x = display.contentWidth * 0.5
    btn_play.y = 600
    btn_play.scene = "inventory"

    localGroup:insert(background);
    localGroup:insert(btn_play);

    function changeScene(e)
        if(e.phase == "ended") then
            director:changeScene(e.target.scene);
        end
    end

    function openPopup(e)
        if(e.phase == "ended") then
            director:openPopUp(e.target.scene);
        end
    end

    background:addEventListener("touch", changeScene);
    btn_play:addEventListener("touch", openPopup);

    return localGroup;
end

1 ответ

Решение

Просто положи return в конце вашей функции. Это предотвратит touch к нижележащим объектам.

function openPopup(e)
    if(e.phase == "ended") then
        director:openPopUp(e.target.scene);
        return true; -- put this in your function.
    end
end

Продолжайте кодировать..............:)

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