效果图

//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);
}

最新文章

  1. thinkphp2
  2. python 最小公倍数
  3. poi批量导入excel文件
  4. Ratatype - 在线打字教程,提高打字速度
  5. segement fault常见错误
  6. 使用JUnit4进行java单元测试
  7. Java通过socket实现smtp协议发送邮件
  8. 用BFS和DFS解决圆盘状态搜索问题
  9. PDO基础知识
  10. 详解VB.net编写DLL(动态链接库、应用程序扩展)文件
  11. hdu1828(线段树——矩形周长并)
  12. Android系统--输入系统(十四)Dispatcher线程情景分析_dispatch前处理
  13. 【Linux】 CentOS7 虚拟机配置
  14. POJ-2253 Frogger---最短路变形&&最大边的最小值
  15. Oracle 总账年终结算流程
  16. 呵呵,Python操作MSSQL的帮助类
  17. 数据库between and
  18. java web 登录后更新JSESSIONID
  19. 断断续续Python看到现在
  20. 新装的MySQL没有密码怎么办

热门文章

  1. 模拟Modbus协议问题
  2. BZOJ3246 [Ioi2013]Dreaming
  3. OKR详解及其实施
  4. -----------------------------------项目中整理的非常有用的PHP函数库(二)-----------------------------------------------------
  5. 严格遵守“第一级DOM”能够让你避免与兼容性有关的任何问题
  6. Ognl基本使用
  7. mybatis使用小记
  8. Python socket编程之四:模拟分时图
  9. pthread多线程编程的学习小结
  10. xss跨站攻击测试代码