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. 跨域GET、POST请求

    跨域GET.POST请求的小结 重点:跨域POST大量数据: JQuery:$.ajax/$.getJSON支持jsonp格式的跨域,但是只支持GET方式,暂不支持POST: CORS:w3c关于跨域 ...

  2. IIS 添加mime 支持 apk,exe,.woff,IIS MIME设置 ,Android apk下载的MIME 设置 苹果ISO .ipa下载mime 设置

    原文:IIS 添加mime 支持 apk,exe,.woff,IIS MIME设置 ,Android apk下载的MIME 设置 苹果ISO .ipa下载mime 设置 站点--右键属性--http头 ...

  3. 201215-03-19---cocos2dx内存管理--具体解释

    因为cocos2dx我们的使用c++写的,所以内存管理就是一个绕只是去的坎,这个你不懂内存仅仅懂业务逻辑的话,还玩什么c++,今天看了半天这个东西,事实上本质上是理解的,可是就是有一个过不去的坎,最终 ...

  4. _tcscat在Debug和Release根据问题

    背景: 因此,例如,在下面的代码段,作用是得到的路径当前程序(C:\work\A.exe),然后"A.exe"拆除,组装的"C:\work\inject.dll" ...

  5. NSDictionary、NSMutableDictionary基本使用

    郝萌主倾心贡献,尊重作者的劳动成果.请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...

  6. 解决windows下的mysql匿名登陆无法使用mysql数据库的问题

    原文:解决windows下的mysql匿名登陆无法使用mysql数据库的问题 我在windows下安装了mysql,但是不用密码就能登进去,而root明明是有密码的,我用select user()命令 ...

  7. 【iOS开发-76】Private Contacts案例:导航控制器使用、数据传递、第三方类库使用、tableViewCell的加入删除、数据存储等

    (1)效果 (2)源码与第三方类库下载 http://download.csdn.net/detail/wsb200514/8155979 (3)总结 --导航控制器,能够直接用代码的push和pop ...

  8. poj3280(区间dp)

    题目连接:http://poj.org/problem?id=3280 题意:给定一个长度为m(m<=2000)的小写字母字符串,在给定组成该字符串的n(n<=26)个字符的添加和删除费用 ...

  9. hdu 4465 Candy(2012 ACM-ICPC 成都现场赛)

    简单概率题,可以直接由剩余n个递推到剩余0个.现在考虑剩余x个概率为(1-p)的candy时,概率为C(2 * n - x, x) * pow(p, n + 1)  *pow(1 - p, n - x ...

  10. Android数字签名解析(二)

    在Android数字签名解析(一)中,介绍了android进行签名的两种方式,当中用密钥对进行签名用到了signapk.jar这个java库. 以下我们就看看signapk签名实现过程,signapk ...