zoukankan      html  css  js  c++  java
  • cocos2dx 遮罩层 android 手机上 失败

    1.CCClippingNode使用(在模拟器上ok,在手机上不行),实现多个剪切区域

     local layer=CCLayerColor:create(ccc4(0,0,0,110))
        --/*创建剪裁节点*/
        local pClip=CCClippingNode:create()
        pClip:setInverted(true)--;//设置是否反向,将决定画出来的圆是透明的还是黑色的
        pClip:setAlphaThreshold(0.0)
        self:addChild(pClip)
        --/*注意将LayerColor层加入到剪裁节点上*/
        pClip:addChild(layer)

    local stencilNode = display.newNode()
        stencilNode:setAnchorPoint(ccp(0,0))
        stencilNode:setPosition(ccp(0,0))

      --/*绘制圆形区域*/
        local radius=NODE_PADDING/2+10--;//设置圆的半径
        local nCount=200--;//设置顶点数,此处我们将圆看成200边型
        local angel=2.0*3.14/nCount
        local points = CCPointArray:create(nCount)
        for i=0, nCount-1 do
            local radian=i*angel
            points:add(ccp(radius * math.cos(radian),radius * math.sin(radian)))
        end

         --/*通过绘制多边形来实现圆*/

        -- 创建 CCPolygonShape 对象
        local stencil_1 = CCPolygonShape:create(points)  
        stencil_1:setFill(true) -- 填充
        stencil_1:setClose(true) --闭合
        stencil_1:setPosition(ccp(x1, y1))
        stencilNode:addChild(stencil_1)

    --添加一个图片的剪切区域

    local   stencil_2= display.newSprite("light.png")

     stencil_1:setPosition(ccp(x2, y2))

    stencilNode:addChild(stencil_2)

    pClip:setStencil(stencilNode)


    2.重点来了,这个才干够在手机上用

    function game:mask()
        local function setBlend(obj, src, dst)
            local b = ccBlendFunc:new()
            b.src = src
            b.dst = dst
            obj:setBlendFunc(b)
        end
         --背景
        local node = display.newNode():zorder(10000)
        local layer = display.newColorLayer(ccc4(0,0,0,0))
        node:addChild(layer)
        --node:setContentSize(CCSize(1000, 1000))
        local myLayer = display.newColorLayer(ccc4(0,0,0,175))
                --创建遮罩图片
        local pMask
        pMask = display.newSprite("#bun_1_1.png")
        pMask:setScaleX(1.5)
        pMask:setScaleY(1.5)--设置一下缩放
        pMask:setAnchorPoint(ccp(0,0))
        pMask:setPosition(display.cx, display.cy)
                --设置混合模式
        setBlend(pMask, GL_ZERO, GL_ONE_MINUS_SRC_ALPHA)


        --创建干净的画板
        local pRt = CCRenderTexture:create(CONFIG_SCREEN_WIDTH, CONFIG_SCREEN_HEIGHT)
        self:addChild(pRt);
        pRt:setPosition(CONFIG_SCREEN_WIDTH/2, CONFIG_SCREEN_HEIGHT/2)
                --開始绘制
        pRt:begin()
        myLayer:visit()
        --if pData then
            pMask:visit()
        --end
        pRt:endToLua()
        --self:addChild(myLayer)


        -- 启用触摸
       -- function onTouch(event, x, y)
        --echoInfo(string.format("# onTouch111 X      = %s", x))
       -- echoInfo(string.format("# onTouch 111Y      = %s", y))
       -- if x > display.cx - 100 and x < display.cx + 100 and y > display.cy - 100 and y < display.cy + 100 then
        --    node:removeFromParent()
        --    pRt:removeFromParent()
        --end
        --return true
      --  end
        --开启触摸
       -- node:setTouchEnabled(true)
        --node:addTouchEventListener(onTouch)
        --node:setNodeEventEnabled(true)
        --self:addChild(node,1000)
    end




  • 相关阅读:
    Sublime_text 3 安装 Package Control
    sql server cross/outer apply 用法
    sql server pivot/unpivot 行列互转
    sql server利用开窗函数over() 进行分组统计
    小记sql server临时表与表变量的区别
    自己实现各种进制相互转换
    我这样理解js里的this
    js 数组去重
    分布式计算
    START法则
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4000367.html
Copyright © 2011-2022 走看看