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

cocos2dx 遮罩层 android 手机上 失败的更多相关文章

  1. 如何在Android手机上进行自动化测试(下)

    版权声明:允许转载,但转载必须保留原链接:请勿用作商业或者非法用途 前言 通过阅读本篇教程,你将会了解到: 如何使用Poco对Android原生应用进行测试 Poco支持直接对任何Android原生应 ...

  2. 如何通过wifi在android手机上安装调试应用

    如何通过wifi在android手机上安装调试应用 1. 首先还是要打开手机的usb调试选项,并通过usb线连接手机.2. 然后执行“adb tcpip 5555”,把adb从usb模式切换到tcpi ...

  3. delphi xe5 android 手机上使用sqlite

    本篇我们介绍一下在android手机上怎样使用sqlite数据库,这里用Navigator实现 增删改查. 1.新建firemonkey mobile application 2.选择blank ap ...

  4. Android手机上监听短信的两种方式

    Android手机上监听短信有两种方式: 1. 接受系统的短信广播,操作短信内容. 优点:操作方便,适合简单的短信应用. 缺点:来信会在状态栏显示通知信息. AndroidManifest.xml: ...

  5. 如何在 Android 手机上实现抓包?

    如何在 Android 手机上实现抓包? http://www.zhihu.com/question/20467503 我想知道某个应用究竟在数据提交到哪里,提交了什么.网上的教程太复杂,不想麻烦.有 ...

  6. Android 手机上安装并运行 Ubuntu 12.04

    ubuntu.sh脚本的原地址变动了,导致下载不了,现在更新了网盘地址.小技巧:遇到一些下载失效的时候可以试一试p2p下载工具(如 easyMule.迅雷等)试一试,说不定有人分享过~* —————— ...

  7. 在Android手机上获取其它应用的包名及版本

    转载请注明出处:http://blog.csdn.net/jason_src/article/details/37757661 获取Android手机上其它应用的包名及版本方法有非常多,能够通过AAP ...

  8. xe5 android 手机上使用sqlite [转]

    在android手机上怎样使用sqlite数据库,这里用Navigator实现 增删改查. 1.新建firemonkey mobile application 2.选择blank applicatio ...

  9. Android 手机上获取手机当前上网IP地址

      [转] 原文              Android 手机上获取手机当前上网IP地址                (手机网关给手机号分配的IP) 每个手机上网通过移动网关的时候,网关都会给该手 ...

随机推荐

  1. php 简易验证码(GD库)

    论坛中为了防止灌水,出现了非常多的验证码的插件.如今这里介绍一个非常easy的自己定义验证码函数,这个验证码实现的原理就是通过php扩展的gd库来实现的. 给出百度百科对验证码的定义"验证码 ...

  2. 2015年十大热门Android开源新项目

    2015年十大热门Android开源新项目 2015 即将结束,又到了大家喜闻乐见的年终盘点时刻啦,今天给大家盘点一下 2015 年 Android 开发领域新出现的 10 大热门开源项目.数据来自于 ...

  3. 祖国版SoloWheel:Airwheel爱尔威火星车 拆箱&上手经验_运动户外_晒物广场_什么值得买

    http://m.baidu.com/from=844b/bd_page_type=1/ssid=0/uid=3151E6C0905477A13653132D762BB6FB/pu=sz%401320 ...

  4. NAT ALG原理

    1      NAT ALG简介 普通NAT实现了对UDP或TCP报文头中的的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力,在许多应用层协议中,比如多媒体协议(H.323.SIP等).F ...

  5. 低版本的 opencv库的 vs2010 打开 高版本opencv

    打开track.vcxproj文件, 注释掉跟版本有关的行就可. 本例子中,当用双击.sln用vs2010打开高版本的opencv项目时,会出现错误, 并且会有错误信息提示,双击该错误信息,就会打开该 ...

  6. sha1加密java代码

    sha1 加密 java代码 public static String getSha1(String str){ if(str==null||str.length()==0){ return null ...

  7. UVA 12263 Rankings(拓扑排序)

    给出一个n个数的序列1,然后有m个改动(a, b),在序列2中a跟b在序列中的相对顺序改变.求符合题意的序列2. 题中说道如果一个数的位置不确定,则输出‘?' ,仔细想想,这种情况是不会存在的,因为在 ...

  8. hdu 4472 Count (2012 ACM-ICPC 成都现场赛)

    递推,考虑到一n可以由i * j + 1组合出来,即第二层有j个含有i个元素的子树...然后就可以了.. #include<algorithm> #include<iostream& ...

  9. 后台使用oracle前台使用easyui分页机制

    前台easyui 的datagrid中设置分页属性: pagination:true,//显示分页 pagePosition:'bottom',//分页栏位置 both 上下 bottom.top p ...

  10. 在html中禁用自己主动完毕

    输入框输入内容时总是显示历史输入历史记录,现禁用的方法是加入一个属性: <input type="text name="txt_xm" autocomplete=& ...