[Quick-x]制作新手引导高亮区域方法之一:混合模式
demo下载:https://github.com/chenquanjun/Quick-x-HighlightArea
1、混合模式
(1)首先创建一个全屏的CCRenderTexture实例
这里使用的黑色 0.6的透明度,看起来的效果就是一层黑色半透明的遮罩叠在游戏界面上面
local pRt = CCRenderTexture:create(size.width, size.height)
local color = ccc3(, , ) --黑色
local opacity = 0.6 --透明度
pRt:clear(color.r, color.g, color.b, opacity)
(2)设置混合模式
具体原理可以参考 http://blog.csdn.net/yang3wei/article/details/7795764
local blend = ccBlendFunc()
blend.src = GL_ZERO
blend.dst = GL_ONE_MINUS_SRC_ALPHA
(3) "刷"出高亮区域
这里是把一个黑色的圆形通过拉伸来实现椭圆效果
(CCRenderTexture有个坑,注意不要在begin和endToLua之间创建精灵,安卓下会发生偏移,以后还会提到)
    local circleSpr = CCSprite:create("Images/circle.png")
    local circleSize = circleSpr:getContentSize()
    circleSpr:setBlendFunc(blend) --把贴图“刷”掉,高亮效果的关键
    --宽度和高度参数,1.4142为根号2,矩形的外接椭圆的长轴与短轴长度
    local widthPara = 1.4142 / circleSize.width
    local heightPara = 1.4142 / circleSize.height
    local rectArray = {
                         [] = CCRect(, , , ),
                         [] = CCRect(, , , ),
                         [] = CCRect(, , , ),
                         [] = CCRect(, , , ),
                        }
    pRt:begin()
        for i, rect in ipairs(rectArray) do
            local fScaleX = widthPara * rect.size.width
            local fScaleY = heightPara * rect.size.height
            circleSpr:setScaleX(fScaleX)
            circleSpr:setScaleY(fScaleY)
            circleSpr:setPosition(rect:getMidX(), rect:getMidY())
            circleSpr:visit()
        end
    pRt:endToLua()
(4)获得贴图然后创建精灵即可,注意要翻转一下y轴
local newSprite = CCSprite:createWithTexture(pRt:getSprite():getTexture())
newSprite:setFlipY(true) --翻转
newSprite:setPosition(display.cx, display.cy)
self:addChild(newSprite)
使用的圆形图片

具体效果

当然少不了的是demo了
地址:https://github.com/chenquanjun/Quick-x-HighlightArea
[Quick-x]制作新手引导高亮区域方法之一:混合模式的更多相关文章
- [Quick-x]制作新手引导高亮区域方法之二:裁剪模式
		
demo下载:https://github.com/chenquanjun/Quick-x-HighlightArea 2.裁剪模式 (1)创建裁剪对象 , , ) --非高亮区域颜色 local b ...
 - cocos2dx混合模式应用———制作新手引导高亮区域 (2.2.0)
		
cocos2dx混合模式应用———制作新手引导高亮区域 转自:http://www.cnblogs.com/mrblue/p/3455775.html 首先,效果预览一下 高亮区域的图片: 示例代码: ...
 - cocos2dx混合模式应用———制作新手引导高亮区域
		
先看下效果 制造这个椭圆高亮区域所使用原图是 附上代码 bool HelloWorld::init() { ////////////////////////////// // 1. super ini ...
 - dreamweaver中的 map怎么调用?_制作热点图像区域
		
我们浏览网页时,经常看到一些图片上会出现特别的超链接,即在一张图片上有多个局部区域和不同的网页链接,比如地图链接. 这就是映射图像(Image Map),它是指一幅根据链接对象不同而被人为划分为若干指 ...
 - 【原创】VB6.0应用程序安装包的生成(Setup Factory 9.0制作安装包的方法)
		
VB6.0应用程序安装包的生成,利用其自带的打包工具生成的安装程序很简陋,一点不美观:如果想让自己的应用程序安装的时候显得高大上一点,本教程提供使用Setup Factory 9.0制作安装包的方法. ...
 - PHP制作pdf文档方法
		
原文:PHP制作pdf文档方法 本篇博客是在看完 php+mysql web书以后自己的测试代码,虽然是测试代码,但不是简单的粘贴复制,为了学习thinkPHP框架,自己就用这个来做的,而且这本书已经 ...
 - iTunes制作iPhone手机铃声方法(mac版2017年4月更新)
		
iTunes制作iPhone手机铃声方法(mac版2017年4月更新) 跟之前百度出来的不同,我自己使用后写的. 1.首先下载好你需要制作铃声的mp3文件,这里我放在桌面. 2 ...
 - mac mini 制作fusion drive 的方法
		
下载yosemite,格式化磁盘,运行如下命令,制作os x 启动盘 sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resour ...
 - python制作exe可执行文件的方法---使用pyinstaller
		
python制作exe可执行文件的方法---使用pyinstaller python生成windows下exe格式的可执行程序有三种可选方案: py2exe是大家所熟知的,今天要介绍pyinsta ...
 
随机推荐
- MS SQLService中的*= 及 =*
			
今天看到数据库中的存储过程中,有*= ,于是百度了一下,原来这个SQL2000以前的左连接,以后的版本中开启兼容也是可以用的. 于是拿出来在系统中的表中测试了一下果然如此 例: 有用户表D_user及 ...
 - iOS 隔离导航控制器
			
题外话:最近这两个月一直很闲,项目上基本没有啥大的需求.对于程序员来说,如果没有需求其实是一件很难受的事情,之前好多次在项目中没事找事,该优化的优化,该整理的整理.可能好多程序员都遇到过与我类似的情况 ...
 - Java实战之04JavaWeb-06DBUtils
			
一.DBUtils 1.DBUtils的简介 Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的 ...
 - C++ txt文档读取
			
void readfile(string filepath){ ifstream myfile; if (!myfile) { cout << "打开文件出错!"; e ...
 - linux 下使用crontab 定时打包日志并删除已被打包的日志
			
crontab是和用户相关的,每个用户有自己对应的crontab . cron是Linux下的定时执行工具,以下是重启/关闭等等的命令 #/sbin/service crond start //启动服 ...
 - 点击按钮文字变成input框,点击保存变成文字
			
<!DOCTYPE html><html lang="en"> <head> <meta http-equiv="Content ...
 - 使用weinre通过PC浏览器调试手机网页
			
Weinre是什么? Weinre代表Web Inspector Remote,是一种远程调试工具.举个例子,在电脑上可以即时的更改手机上对应网页的页面元素.样式表, 或是查看Javascript变量 ...
 - dataTable 禁止排序
			
$("#id").DataTable({ "ordering": false, // 禁止排序 });
 - 关于window.location不跳转的问题
			
今天在码代码的时候遇到个问题:html里采用onclick事件来实现window.location = url的跳转,在内嵌元素上又加上了href="javascrit:;"的属性 ...
 - hdu 3746 Cyclic Nacklace  KMP循环节
			
Cyclic Nacklace 题意:给一个长度为Len( 3 <= Len <= 100000 )的英文串,问你在字符串后面最少添加几个字符可以使得添加后的串为周期串? Sample I ...