效果图

//ShadowLayer.h

class ShadowLayer : public CCLayer
{
protected:
ShadowLayer()
:m_pRender(NULL)
,m_pShadow(NULL)
{}
~ShadowLayer()
{
CC_SAFE_RELEASE(m_pRender);
CC_SAFE_RELEASE(m_pShadow);
} public:
static ShadowLayer* create(CCNode* pRender,const CCPoint& ptOffset=ccp(-5.0f,-5.0f),const ccColor4F& col = ccc4f(,,,0.5f) ); virtual bool init();
virtual void update(float delta)override;
virtual void setOffset(const CCPoint& ptOffset);
virtual void setShadowColor(const ccColor4F& col);
CC_SYNTHESIZE_RETAIN(CCNode*,m_pRender,Render); private:
CCRenderTexture* m_pRT;
CCRenderTexture* m_pShadow;
};

//ShadowLayer.h

ShadowLayer* ShadowLayer::create(CCNode* pRender,const CCPoint& ptOffset/*t=ccp(-5.0f,-5.0f)*/,const ccColor4F& col/* = ccc4f(0,0,0,0.5f)*/ )
{
ShadowLayer *pRet = new ShadowLayer();
if (pRet && pRet->init())
{
pRet->autorelease();
pRet->setRender(pRender);
pRet->setShadowColor(col);
pRet->setOffset(ptOffset);
return pRet;
}
else
{
delete pRet;
pRet = NULL;
return NULL;
}
}
bool ShadowLayer::init()
{
if (CCLayer::init())
{
CCSize sz = getContentSize();
m_pRT = CCRenderTexture::create(sz.width,sz.height);
m_pRT->setPosition(sz.width/,sz.height/); addChild(m_pRT); m_pShadow = CCRenderTexture::create(sz.width,sz.height);
m_pShadow->setPosition(ccp(sz.width/,sz.height/)); ccBlendFunc tBlendFunc = {GL_DST_ALPHA, GL_NONE};
//ccBlendFunc tBlendFunc = {GL_ONE, GL_NONE};
m_pShadow->getSprite()->setBlendFunc(tBlendFunc);
m_pShadow->retain(); scheduleUpdate();
} return true;
} void ShadowLayer::update(float delta)
{
m_pRT->clear(,,,); m_pRT->begin(); if (m_pRender)
{
m_pRender->visit();
}
m_pShadow->visit(); m_pRT->end();
} void ShadowLayer::setShadowColor(const ccColor4F& col)
{
m_pShadow->beginWithClear(col.r,col.g,col.b,col.a);
m_pShadow->end();
} void ShadowLayer::setOffset( const CCPoint& ptOffset )
{
setPosition(ptOffset);
}

cocos2dx阴影层的实现的更多相关文章

  1. 简易DIV垂直居中阴影层笼罩JS实现

    $(document).ready(init); function init() { var h = $(window).height(); var w = $(window).width(); /* ...

  2. cocos2dx 遮罩层 android 手机上 失败

    1.CCClippingNode使用(在模拟器上ok,在手机上不行),实现多个剪切区域 local layer=CCLayerColor:create(ccc4(0,0,0,110))     --/ ...

  3. cocos2dx JS 层(Layer)的生命周期

    场景的生命周期: 一般情况下一个场景只需要一个层,需要创建自己的层类.一些主要的游戏逻辑代码都是写在层中的,场景的生命周期是通过层的生命周期反映出来的,通过重写层的生命周期函数,可以处理场景不同声明周 ...

  4. CSS3阴影 box-shadow的使用和技巧总结

    text-shadow是给文本添加阴影效果,box-shadow是给元素块添加周边阴影效果.随着html5和CSS3的普及,这一特殊效果使用越来越普遍. 基本语法是{box-shadow:[inset ...

  5. CSS3+HTML5实现块阴影与文字阴影

    CSS 3 + HTML 5 是未来的 Web,它们都还没有正式到来,虽然不少浏览器已经开始对它们提供部分支持.本教程分5节介绍了 5 个 CSS3 技巧,可以帮你实现未来的 Web,不过,这些技术不 ...

  6. 【转】 CSS3阴影 box-shadow的使用和技巧总结

    text-shadow是给文本添加阴影效果,box-shadow是给元素块添加周边阴影效果.随着html5和CSS3的普及,这一特殊效果使用越来越普遍. 基本语法是{box-shadow:[inset ...

  7. css阴影--box-shadow的用法

    原文:http://blog.csdn.net/freshlover/article/details/7610269 text-shadow是给文本添加阴影效果,box-shadow是给元素块添加周边 ...

  8. CSS3阴影 box-shadow的使用

      text-shadow是给文本添加阴影效果,box-shadow是给元素块添加周边阴影效果.随着html5和CSS3的普及,这一特殊效果使用越来越普遍. 基本语法是{box-shadow:[ins ...

  9. CSS3阴影 box-shadow的使用和技巧总结[转]

    text-shadow是给文本添加阴影效果,box-shadow是给元素块添加周边阴影效果.随着html5和CSS3的普及,这一特殊效果使用越来越普遍. 基本语法是{box-shadow:[inset ...

随机推荐

  1. js阻止表单重复提交

    //校验表单的数据 function newFatherModuleVerify() { var moduelName = $('#fatherModule_moduelName').val(); a ...

  2. asp.net 实现在线打印功能,jQuery打印插件PrintArea实现自动分页

    使用的组件:jQuery打印插件PrintArea,有兴趣的可以研究一下. 使用方法略过,这里将介绍如何实现打印多页是可以分页. 现在提供两种方法思路: 1.根据特定的打印机型号和使用的纸张类型,然后 ...

  3. Linux Kernel File IO Syscall Kernel-Source-Code Analysis(undone)

    目录 . 引言 . open() syscall . close() syscall 0. 引言 在linux的哲学中,所有的磁盘文件.目录.外设设备.驱动设备全部被抽象为了"文件" ...

  4. Redis操作+python

    自动化接口测试中需要向redis中插入测试数据: 1. 连接redis: import redisself.r = redis.StrictRedis(host=env.REDIS_HOST, por ...

  5. easyui form 方式提交数据

    http://ldzyz007.iteye.com/blog/2067540 <form id="ff" method="post">      . ...

  6. ci连贯操作的limit两个参数和sql是相反的

    ci连贯操作的limit两个参数和sql是相反的 db->where("name =",'mary')->ge() name后面要有个空格否则报错当为一个字段 -> ...

  7. hdu 2045 不容易系列之(3)—— LELE的RPG难题

    解题思路: f(n)=1,2,.....n-2,n-1,n 前n-2个已经涂好,那么n-1有两种可能 1.n-1与n-2和1 的颜色都不同 1 粉,   n-2 红,   n-1 绿.  那么n的颜色 ...

  8. apache安装后编译新模块

    1.下载对应版本的源码包 2.解压后找到modules/mappers目录并进入 3.运行如下命令自动编译.安装和修改httpd.conf文件: /usr/sbin/apxs -c -i -a mod ...

  9. SYN攻击TIME_WAIT防御。

    #! /bin/bash /bin/netstat -anput | grep TIME_WAIT >time_wait.txt /bin/cat time_wait.txt |awk '{pr ...

  10. linux下面覆盖文件,如何实现直接覆盖,不提示

    转自:http://w-tingsheng.blog.163.com/blog/static/2505603420124309130528/ cp覆盖时,无论加什么参数-f之类的还是提示是否覆盖,当文 ...