美文网首页
cocos2d-x lua 点击任意位置地方 关掉界面

cocos2d-x lua 点击任意位置地方 关掉界面

作者: 亮亮同学 | 来源:发表于2017-11-05 17:03 被阅读247次

    cocos2d-x技术群新群:117871561
    c++技术交流群:593010226
    1,
    原理:创建一个imageView,设置imageView的点击事件,该回调事件的功能是:点击结束时将该imageView从父节点删掉。将设置界面的layer添加到 该imageView上面,当imageView从父节点删掉时 设置界面的layer也会被删掉 从而实现关闭设置界面的 效果

    项目代码 ,重点在于我注释的部分

    --设置界面
    function GameViewLayer:showSet()
        self:showMenu(false)
        self:removeChildByTag(TAG.SET_VIEW)
            --创建一个imageView
        local Mask = ccui.ImageView:create()
        Mask:setTag(TAG.SET_VIEW)
            --此处是拉伸该imageView
        Mask:setContentSize(cc.size(yl.WIDTH, yl.HEIGHT))
            --设置为9点精灵的属性,保证拉伸后不会失真变形
        Mask:setScale9Enabled(true)
        Mask:setPosition(yl.WIDTH / 2, yl.HEIGHT / 2)
        Mask:setTouchEnabled(true)
        self:addChild(Mask, GameViewLayer.TopZorder)
            --添加监听,回调函数是匿名函数
        Mask:addTouchEventListener(
            function(sender, eventType)
                if eventType == ccui.TouchEventType.ended then
                    Mask:removeFromParent()
                end
            end
        )
        --加载设置界面的CSB
        local setNode = cc.CSLoader:createNode("game_res/Set.csb")
        setNode:setPosition(yl.WIDTH / 2, yl.HEIGHT / 2)
        Mask:addChild(setNode)
    
    

    2,利用ccui.layout实现

    --按钮背景
    self.btnBg = cc.Sprite:create("bg.png")
    :setVisible(true)
    self:addChild(self.btnBg)
    
    --回调
    local callbacklayout = function(ref)
    local pos = ref:getTouchEndPosition()
    lcoal rectbg = self.btnBg:getBoundingBox()
    if not cc.rectContainsPoint(rectbg,pos) then
      self.btnBg:setVisible(false)
    end
    --创建layout
    local layoutShield = ccui.Layout:create()
    :setContentSize(cc.Size(display.width,display.height))
    :setTouchEnabled(true)
    :addClickEventListener(callbacklayout)
    self:addChild(layoutShield)
    

    相关文章

      网友评论

          本文标题:cocos2d-x lua 点击任意位置地方 关掉界面

          本文链接:https://www.haomeiwen.com/subject/ymqhmxtx.html