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. 快速学会搭建SVN服务器

    原文:快速学会搭建SVN服务器 SVN是一个版本控制工具,常用于我们软件开发项目中,用来管理我们团队共同使用的代码,文档等历史版本的管理,保持代码的更新,避免混乱. 需要工具: svn安装程序:免费下 ...

  2. Android入门之login设计

    效果图: MainActivity.java package jk.quickpay.login; import jk.quickpay.login.FileService; import java. ...

  3. 佳文分享:CAP定理

    1976年6月4号,周5,在远离音乐会大厅的一个楼上的房间内,在位于Manchester的Lesser Free Trade Hall ,Sex Pistols 乐队(注:Sex Pistols的经理 ...

  4. Spark SQL Catalyst源代码分析Optimizer

    /** Spark SQL源代码分析系列*/ 前几篇文章介绍了Spark SQL的Catalyst的核心运行流程.SqlParser,和Analyzer 以及核心类库TreeNode,本文将具体解说S ...

  5. VSTO学习笔记(五)批量编辑Excel 2010 x64

    原文:VSTO学习笔记(五)批量编辑Excel 2010 x64 近期因为工作的需要,经常要批量处理大量的Excel文件,如果纯手工一个个修改,非常的麻烦,于是写了这么一个帮助类,希望能对你有所帮助. ...

  6. selenium2支持无界面操作(HtmlUnit和PhantomJs)

    selenium2支持无界面操作(HtmlUnit和PhantomJs) selenium2支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaD ...

  7. tomcat 下部署 php

    由于需要测试一个PHP的环境.故记录此处. 环境 OS:win8.1 up1 64bit tomcat :8.0.14 64bit php:php-5.6.2-Win32-VC11-x64.zip 将 ...

  8. Android---App Widget(一)

    本文译自:http://developer.android.com/guide/topics/appwidgets/index.html App Widgets是一些较小的应用程序窗口,它们能够被嵌入 ...

  9. 全栈project师的毁与誉

    全栈(Full Stack)project师.也能够叫全端project师,不管是前端知识,还是后端架构你都要了解.甚至有些调皮的程序猿这样理解全栈project师:全栈project师 = 屌丝战斗 ...

  10. [C++基金会]位计算 游戏开发中的应用

    定义的位操作:通俗点说,,位计算是计算机操作二进制整数. 无论整数可以用二的方式来表示进度,不同类型的其长度的整数位的是不一样的.INT8要么char靠8个月2 位表示,INT16或者short是由1 ...