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. Android自己定义控件:老版优酷的三级菜单(效果图 + Demo)

    效果图: 制作思路: 1.先分析这个效果,事实上能够理解为把三级菜单分成level1,level2,level3,level1是始终显示的. 点击level1后,level2会出现:点击level2后 ...

  2. Android中&lt;meta-data&gt;的使用

    在AndroidManifest.xml中.<meta-data>元素能够作为子元素,被包括在<activity>.<application> .<servi ...

  3. HTTPS原理(转)

    HTTPS是什么 HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer,及以安全为目标的HTTP通道,简单说就是HTTP的安全版本. ...

  4. poj2236(并查集)

    题目连接 题意:一张图上分布着n台坏了的电脑,并知道它们的坐标.两台修好的电脑如果距离<=d就可以联网,也可以通过其他修好的电脑间接相连.给出操作“O x”表示修好x,给出操作“S x y”,请 ...

  5. Android 监听SMS短信

    当设备接收到一条新的SMS消息时,就会广播一个包括了android.provider.Telephony.SMS_RECEIVED动作的Intent. 注意,这个动作是一个字符串值,SDK 1.0不再 ...

  6. Knockout应用开发指南 第三章:绑定语法(3)

    原文:Knockout应用开发指南 第三章:绑定语法(3) 12   value 绑定 目的 value绑定是关联DOM元素的值到view model的属性上.主要是用在表单控件<input&g ...

  7. Rational Rose的四种视图介绍

    Rose模型中有四种视图:Use Case View(用例视图),Logical View(逻辑视图),Component View(组建视图)和Deployment View(配置视图). 用例视图 ...

  8. BZOJ 3531: [Sdoi2014]旅游

    职务地址:http :// www . lydsy . com / JudgeOnline / problem . php ? id = 3531 标题效果:看到原来的标题. 算法讨论:树链拆分. 就 ...

  9. ecshop 后台添加 成本价 利润

    ecshop后台admin中的商品操作php文件,goods.php替换为下面的代码, 还要在数据库商品本店售价后门添加  cost  字段 为 商品成本价 ecs_goods表中添加  cost  ...

  10. Git在下搭建下环境的工具

    (本文稿来自:http://www.open-open.com/news/view/55387) Git是一个快速,可扩展的,分布式的版本控制系统.Git服务器起初是专为Linux开发,后来移植至Wi ...