cocos2dx_-lua 创建一个touch的半透明layer

操作方法

  • 01

    --创建一个touch的半透明layer --priority : touch 权限级别,默认为-1024 --touchRect: 在touchRect 区域会放行touch事件 若touchRect = nil 则全屏吃touch --touchCallback: 屏蔽层touch 回调 function createMaskLayer( priority,touchRect ,touchCallback, layerOpacity,highRect) local layer = CCLayer:create() layer:setPosition(ccp(0, 0)) layer:setAnchorPoint(ccp(0, 0)) layer:setTouchEnabled(true) layer:setTouchPriority(priority or -1024) layer:registerScriptTouchHandler(function ( eventType,x,y ) if(eventType == "began") then if(touchRect == nil) then if(touchCallback ~= nil) then touchCallback() end return true else if(touchRect:containsPoint(ccp(x,y))) then return false else if(touchCallback ~= nil) then touchCallback() end return true end end end print(eventType) end,false, priority or -1024, true) local gw,gh = g_winSize.width, g_winSize.height if(touchRect == nil) then local layerColor = CCLayerColor:create(ccc4(0,0,0,layerOpacity or 150),gw,gh) layerColor:setPosition(ccp(0,0)) layerColor:setAnchorPoint(ccp(0,0)) layer:addChild(layerColor) return layer else local ox,oy,ow,oh = touchRect.origin.x, touchRect.origin.y, touchRect.size.width, touchRect.size.height local layerColor = CCLayerColor:create(ccc4(0, 0, 0, layerOpacity or 150 ), gw, gh) local clipNode = CCClippingNode:create(); clipNode:setInverted(true) clipNode:addChild(layerColor) local stencilNode = CCNode:create() -- stencilNode:retain() local node = CCScale9Sprite:create("bg.png"); node:setContentSize(CCSizeMake(ow, oh)) node:setAnchorPoint(ccp(0, 0)) node:setPosition(ccp(ox, oy)) stencilNode:addChild(node) if(highRect ~= nil) then local highNode = CCScale9Sprite:create("bg.png"); highNode:setContentSize(CCSizeMake(highRect.size.width, highRect.size.height)) highNode:setAnchorPoint(ccp(0, 0)) highNode:setPosition(ccp(highRect.origin.x, highRect.origin.y)) stencilNode:addChild(highNode) end clipNode:setStencil(stencilNode) clipNode:setAlphaThreshold(0.5) layer:addChild(clipNode) end return layer end

(0)

相关推荐

  • 如何在illustrator中创建一个可爱招财猫

    今天我们来看看上面这个可爱的招财猫到底是如何绘制出来的呢!首先今天的教程将不会出现(提供)色值.在本教程中, 我们将使用大量的线性和径向渐变, 将它们应用于我们创建的每个对象. 学习前的提示:你可以在 ...

  • linux下如何创建一个.txt类型的文件?

    本文介绍linux下如何创建一个.txt类型的文件的方法: 1.vi 文件名.txt: 2.touch 文件名.txt 操作方法 01 [步骤一]vi 文件名.txt 比如创建文件file.txt,用 ...

  • Linux系统下怎么用CheckInstall从源码创建一个RPM或DEB包

    问题:我想要从源码创建安装的软件包。有没有一种方式从源码来创建和安装软件包,而不是运行“make install”?这样的话,以后如果我想,我可以容易的卸载程序。 如果你已经从它的源码运行“make ...

  • 创建一个Windows7标准用户帐户的方法(图文教程)

    创建一个Windows7标准用户帐户的方法(图文教程)

  • 以Guest账户身份创建一个管理员

    大家知道,在Windows 2000/XP 中,如果你是管理员,就算不知道其他用户(管理员)的密码,还是可以用 Net User 帐户 密码 更改其密码。据说MS是为了用户的方便(如用户忘记密码),此 ...

  • Win7桌面上创建一个或多个便笺让桌面变身留言板

    在手机还没有普及的年代,留个字条是和家人之间比较常见的联络方式。现在虽然发个短信很方便,但是如果做为提醒的话还是不怎么靠谱,因为短信看过之后可能就被遗忘了。继续写字条?找了一圈之后却悲催的发现家里竟然 ...

  • Windows8用新建工具栏创建一个程序列表来模拟开始菜单

    微软Windows 8系统的传统桌面中取消了Windows用户熟悉的开始按钮和开始菜单,增加了适合触控操作的磁贴和开始屏幕,部分用户对此感觉不太习惯,认为在传统桌面中还是需要从前那种将所安装程序清晰分 ...

  • Windows7系统创建一个新账户的方法(图文教程)

    什么是用户账户? 用户账户是通知 Windows您可以访问哪些文件和文件夹,可以对计算机和个人首选项(如桌面背景和屏幕保护程序)进行哪些更改的信息集合。通过用户帐户,您可以在拥有自己的文件和设置的情况 ...

  • 图标制作软件:如何从web图像创建一个图标

    在一些电脑图标下载网站上,我们常常能看到很多的图标制作素材、甚至是已经制作完成的图标,如果我们想使用这些现成图标,并一定非得把它们下载到自己电脑上才能使用。Iconworkshop图标制作软件能够直接 ...