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. 使用国内源解决Qt在线更新慢的问题

    Qt在线安装更新工具默认使用官方的源,国内访问比较慢,可以在setting中增加国内的源来提高更新速度,如下面的源: http://mirrors.ustc.edu.cn/qtproject/onli ...

  2. [Cocos2d-x]CCSpriteBatchNode的使用

    文档: http://cocos2d.cocoachina.com/document/index/class?url=dd/d95/classcocos2d_1_1_c_c_sprite_batch_ ...

  3. Android开发周报:Android L默认加密用户数据

    Android开发周报:Android L默认加密用户数据 新闻 <iCloud前车之鉴,Android L默认开启加密功能>:iCloud 艳照风波再起,第二波女星照片流出,大量女星的裸 ...

  4. 2014 CSDN博文大赛终于获奖名单发布

    博文大赛第二阶段(2014年7月15日-2014年8月10日)已经结束,决赛获奖名单已在8月11日出炉. 现将获奖名单发布: 移动开发 NO.1    罗升阳    Luoshengyang    S ...

  5. extjs4 分页工具栏pagingtoolbar的每页显示数据combobox下拉框

    var itemsPerPage = 20; var combo; //创建数据源store Ext.define('recordStore', { extend : 'Ext.data.Store' ...

  6. AndroidMainFest.xml file missing!

    今天在导入项目的时候出现了这种错误: 仅仅须要一步 就搞定: projecct --->  clean  又一次编译一下就可以搞定了.

  7. C/S与B/S谁与争锋之我见

    看到网上有些人在讨论C/S架构和B/S架构以及它们的发展趋势,后起之秀B/S是否真将取代C/S而存在?在发表我的观点之前,我们先来一起来回顾下C/S以及B/S. 一C/S 1.C/S概念 C/S是Cl ...

  8. poj1804(归并排序求逆序数)

    逆序数.也就是说,对于n个不同的元素,先规定各元素之间有一个标准次序(比如n个 不同的自然数,可规定从小到大为标准次序),于是在这n个元素的任一排列中,当某两个元素的先后次序与标准次序不同一时候,就说 ...

  9. (017)将一棵二叉查找树重构成链表(keep it up)

    给定一棵二叉查找树,设计算法,将每一层的全部结点构建为一个 链表(也就是说, 假设树有D层,那么你将构建出D个链表). 这个题实质是个BFS,可是实现起来有点麻烦,又不像常见的BFS, 所以编写代码时 ...

  10. B桥接模式ridge

    1.一个简短的引论 1)模式概述:将抽象部分与实现部分分离.使它们都能够独立的变化.让抽象类和派生类各自实现自己的对象.当一个系统有多维度的变化时,将各个维度分离出来让它们独立于变化(多角度地分类实现 ...