cocos2dx 遮罩层 android 手机上 失败

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 手机上 失败

时间: 2024-11-13 10:08:45

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

MingQQ Android版发布了,可以在Android手机上登录你的QQ,收发消息哦...

最近为了学习Android开发,特意将原来写的MingQQ Windows版移植到了Android上面,以此练手.通过这次练习,学习到了不少Android开发的相关知识,特别是界面开发部分. MingQQ的界面模仿了Android QQ的基本功能,虽然体验性完全比不上QQ,但目前技术有限,只能做到现在这水平了,更好的界面用户体验留待以后再提升吧. 下拉刷新目前使用了第三方开源库Android-PullToRefresh,以后再考虑替换成自己写的下拉刷新组件,并增加消息列表的右滑删除功能. 发布的

android 手机上运行图像算法

在pc上调试好的图像处理算法想要在android手机上跑一下看看速度需要一下几个步骤 1.建立一个android application,通过ndk调用你写好的图像算法的c/c++ code 2. 然后将你的code放到jni文件中,编写android.mk,之后利cgywin编译生成.so供android调用 3.之后把你的java code编译成apk,然后pull到手机中就可以看到结果了. 总的来说,如果没有做优化的话,直接在手机跑pc上的code,结果一般都是惨不忍睹,一般需要针对算法做

在 Android 手机上使用 Terminal IDE 远程登录你的 Mac/Ubuntu

我的主力博客:半亩方塘 以下内容系原创,转载请务必注明地址 在 Android 手机上使用 Terminal IDE 远程登录你的 Mac 可以让你随时随地远程对你的 Mac 进行操作,这个很爽,特别是当你躺在床上还能操作你在某个地方开着的 Mac 计算机的时候,其实依照这种方法也可以类似地远程登录Ubuntu,有兴趣的可以试试,简单几步就可以实现了: 首先,需要下载 Terminal IDE,废话不说,请 google 下载之,下载完成后将 Terminal IDE 装到你的安卓手机上, In

在Android手机上获取其他应用的包名及版本号

转载请注明出处:http://blog.csdn.net/jason_src/article/details/37757661 获取Android手机上其他应用的包名及版本号方法有很多,可以通过AAPT从APK包中直接获取,也可以通过代码在手机上获取.显然,对于产品或者用户来说要获取这些信息,在手机上获取更为简便. 下面我们来看下如何在手机上获取其他应用的包名.版本号. 核心:通过PackageManager可以获取到我们想要的信息,例如:程序图标.程序名称.包名.VersionName.Ver

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

如何通过wifi在android手机上安装调试应用 1. 首先还是要打开手机的usb调试选项,并通过usb线连接手机.2. 然后执行“adb tcpip 5555”,把adb从usb模式切换到tcpip模式.正确的回显信息是:“restarting in TCP mode port: 5555”.5555可以是任何未占用的端口号.3. 再执行“adb connect <手机的WLAN IP>:5555”,连接到手机.正确的回显信息是:“connected to <手机的WLAN IP&g

Android 在Android手机上获取其他应用的包名及版本号

获取Android手机上其他应用的包名及版本号方法有很多,可以通过AAPT从APK包中直接获取,也可以通过代码在手机上获取.显然,对于产品或者用户来说要获取这些信息,在手机上获取更为简便. 下面我们来看下如何在手机上获取其他应用的包名.版本号. 核心:通过PackageManager可以获取到我们想要的信息,例如:程序图标.程序名称.包名.VersionName.VersionCode等. /* * @Author Sun Ruichuan * * */ public ArrayList<Has

Android 手机上获取物理唯一标识码

唯一标识码这东西在网络应用中非常有用,例如检测是否重复注册之类的. import android.provider.Settings.Secure;private String android_id = Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID); 我们在项目过程中或多或少会使用到设备的唯一识别码,我们希望能够得到一个稳定.可靠的设备唯一识别码.今天我们将介绍几种方式. 1. DEVICE_ID 假

使用 Android 手机上的 &quot;USB 绑定&quot;功能

摘自偶在 CSDN 的帖子:http://bbs.csdn.net/topics/390887615 若 Android 手机中"设置"->"无线/网络"->"绑定与便携式热点" 中,勾选"USB 绑定"项后,将此 Android 手机插入到 PC/WinCE 设备上,在PC/WinCE 设备的"网络连接"中会多出一个网卡.在 PC 上显示时,"设备名"项显示为: Windo

利用exif.js解决ios或Android手机上传竖拍照片旋转90度问题

html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非横拍的ios照片进行角度旋转修正. 利用exif.js读取照片的拍摄信息,详见  http://code.ciaoca.com/javascript/exif-js/ 这里主要用到Orientation属性. Orientation属性说明如下: 旋转角度 参数 0° 1 顺时针90° 6 逆时针9