1. //根据现有CCSprite,变亮和变灰
  2. static CCSprite* graylightWithCCSprite(CCSprite* oldSprite,bool isLight)
  3. {
  4. //CCSprite转成CCimage
  5. CCPoint p = oldSprite->getAnchorPoint();
  6. oldSprite->setAnchorPoint(ccp(,));
  7. CCRenderTexture *outTexture = CCRenderTexture::create((int)oldSprite->getContentSize().width,(int)oldSprite->getContentSize().height);
  8. outTexture->begin();
  9. oldSprite->visit();
  10. outTexture->end();
  11. oldSprite->setAnchorPoint(p);
  12.  
  13. CCImage* finalImage = outTexture->newCCImage();
  14. unsigned char *pData = finalImage->getData();
  15. int iIndex = ;
  16.  
  17. if(isLight)
  18. {
  19. for (int i = ; i < finalImage->getHeight(); i ++)
  20. {
  21. for (int j = ; j < finalImage->getWidth(); j ++)
  22. {
  23. // highlight
  24. int iHightlightPlus = ;
  25. int iBPos = iIndex;
  26. unsigned int iB = pData[iIndex];
  27. iIndex ++;
  28. unsigned int iG = pData[iIndex];
  29. iIndex ++;
  30. unsigned int iR = pData[iIndex];
  31. iIndex ++;
  32. //unsigned int o = pData[iIndex];
  33. iIndex ++; //原来的示例缺少
  34. iB = (iB + iHightlightPlus > ? : iB + iHightlightPlus);
  35. iG = (iG + iHightlightPlus > ? : iG + iHightlightPlus);
  36. iR = (iR + iHightlightPlus > ? : iR + iHightlightPlus);
  37. // iR = (iR < 0 ? 0 : iR);
  38. // iG = (iG < 0 ? 0 : iG);
  39. // iB = (iB < 0 ? 0 : iB);
  40. pData[iBPos] = (unsigned char)iB;
  41. pData[iBPos + ] = (unsigned char)iG;
  42. pData[iBPos + ] = (unsigned char)iR;
  43. }
  44. }
  45. }else{
  46. for (int i = ; i < finalImage->getHeight(); i ++)
  47. {
  48. for (int j = ; j < finalImage->getWidth(); j ++)
  49. {
  50. // gray
  51. int iBPos = iIndex;
  52. unsigned int iB = pData[iIndex];
  53. iIndex ++;
  54. unsigned int iG = pData[iIndex];
  55. iIndex ++;
  56. unsigned int iR = pData[iIndex];
  57. iIndex ++;
  58. //unsigned int o = pData[iIndex];
  59. iIndex ++; //原来的示例缺少
  60. unsigned int iGray = 0.3 * iR + 0.4 * iG + 0.2 * iB;
  61. pData[iBPos] = pData[iBPos + ] = pData[iBPos + ] = (unsigned char)iGray;
  62. }
  63. }
  64. }
  65.  
  66. CCTexture2D *texture = new CCTexture2D;
  67. texture->initWithImage(finalImage);
  68. CCSprite* newSprite = CCSprite::createWithTexture(texture);
  69. delete finalImage;
  70. texture->release();
  71. return newSprite;
  72. }

http://blog.csdn.net/chenli0741/article/details/8860036

在这个博客提供的png图片alpha通道的精灵变灰与变亮的。

但是,在变灰的时候,如果图片是有红色的话,则会出现不同的效果,不是叠加,而图片直接变灰。

可以看出,第二种情况,不是叠加上去的,而是把图片都变灰了。由于不怎么熟悉ARGB,还未解决的办法。

关于cocos2d-x精灵加亮及变灰效果的更多相关文章

  1. UIImageView变灰

    1.UIImageView圆角 CALayer *l = [cell.imgAvatarImage layer]; [l setMasksToBounds:YES]; [l setCornerRadi ...

  2. [原]quick2.25精灵变灰

    由于quick2.25没有导出shader相应的接口,所以2.25无法直接使用shader. 本文简单介绍如何导出相应接口,同时教大家使用shader 实现精灵变灰 一.编写静态函数,以供导出使用(直 ...

  3. cocos2d 3.X Shader 变暗和变灰

    转自http://www.waitingfy.com/archives/1741 1.为了节约一张图引发的Shader使用  我们注意到这个游戏当中经常使用一些按钮,美术会给两张图,一张稍微暗点,表示 ...

  4. 怎么让让整个HTML页面变灰

    怎么让让整个HTML页面变灰 其实很简单,我们只需要一句话. html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1 ...

  5. CSS使图片变灰

    为了悼念,各大网站都纷纷将自己的站点颜色调灰,就连图片也一样,到底如何实现的呢,请看下面的代码. 〈img src="http://hovertree.com/hvtimg/201512/f ...

  6. NGUI 图片变灰

    效果图 1.先准备好一个变灰shader.代码如下 Shader "Custom/Gray" { Properties { _MainTex ("Base (RGB), ...

  7. UIButton 点击后变灰

    +(UIButton *)getBlueButtonWithTitle:(NSString *)aTitle{ UIButton *button = [UIButton buttonWithType: ...

  8. 转载网易博客:整理各大网站让网站变灰的css代码

    2013-07-21 15:06:47 北京时间2013年4月20日8时02分四川省雅安市芦山县(北纬30.3,东经103.0)发生7.0级地震.震源深度13公里.各大网站将其网站变灰,本人整理了下部 ...

  9. 实现JQuery EasyUI右键菜单变灰不可用效果

    使用过EasyUI的朋友想必都知道疯狂秀才写的后台界面吧,作为一个初学者我不敢妄自评论它的好坏,不过它确实给我们提供了一个很好框架,只要在它的基础上进行修改,基本上都可以满足我们开发的需要. 知道“疯 ...

随机推荐

  1. ORACLE 常用系统函数

    1.  字符类 1.1  ASCII(c ) 函数  和CHR( i )      ASCII 返回一个字符的ASCii码,其中c表示一个字符;CHR 返回ascii码值i 所对应的字符 . 如: S ...

  2. Codeforces Round #197 (Div. 2) : A

    水题一个: 直接贴代码: #include<cstdio> #include<algorithm> #include<cstring> using namespac ...

  3. PS命令删除所有EXCHANGE2013内用户邮件

    因为在测试的时间产生了大量测试邮件,所以在正式上线前,要删除所有用户的邮件. 命令如下: Get-Mailbox | Search-Mailbox  -DeleteContent

  4. 在 Visual Studio 2010 中创建 ASP.Net Web Service

    第一步:创建一个“ASP.Net Empty Web Application”项目 第二步:在项目中添加“Web Service”新项目 第一步之后,Visual Studio 2010会创建一个仅含 ...

  5. C#判断操作系统类型汇总

    Windows操作系统的版本号一览 操作系统 PlatformID 主版本号 副版本号 Windows95 1 4 0 Windows98 1 4 10 WindowsMe 1 4 90 Window ...

  6. BZOJ_3196_二逼平衡树_(树套树,线段树+Treap)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=3196 可以处理区间问题的平衡树. 3196: Tyvj 1730 二逼平衡树 Time Lim ...

  7. win7怎么调屏幕自动休眠时间

    win7怎么调屏幕自动休眠时间 2013-03-28 17:13匿名 | 分类:Windows | 浏览1327次 我也不知道怎么说 我的电脑的问题就是 电脑放那不动过2,3分钟屏幕就暗了 要是不动过 ...

  8. AjaxPro使用说明

    转自:http://www.cnblogs.com/lexus/archive/2007/11/29/977281.html 目录 AjaxPro使用说明    1 目录    2 修改历史纪录    ...

  9. [转]NHibernate之旅(7):初探NHibernate中的并发控制

    本节内容 什么是并发控制? 悲观并发控制(Pessimistic Concurrency) 乐观并发控制(Optimistic Concurrency) NHibernate支持乐观并发控制 实例分析 ...

  10. NHibernate加载DLL错误

    这几天在开发关于Rest的服务,其中用到了NHibernate来进行数据库交互,突然有一天发现了一个错误,如下: Could not load file or assembly 'NHibernate ...