cocos2d 制作光晕特效

2023-10-27 20:59
文章标签 特效 制作 cocos2d 光晕

本文主要是介绍cocos2d 制作光晕特效,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

*********************.h文件*********************
#include "cocos2d.h"
#include "HelloWorldScene.h"

USING_NS_CC;

class LightCCSprite : public CCSprite
{
public:
static CCSprite *spriteWithFile(const char * filename);
virtual void draw();
};


****************.cpp文件******************
#include "LightCCSprite.h"

CCSprite *LightCCSprite::spriteWithFile(const char * filename){

CCSprite *pobSprite = new LightCCSprite();//这里才会调用draw,而不是CCSprite的draw

if (pobSprite && pobSprite->initWithFile(filename))
{
pobSprite->autorelease();
return pobSprite;
}
CC_SAFE_DELETE(pobSprite);

return NULL;
}


void LightCCSprite::draw(){


//CCSprite::draw();//如果不取消的话如果两个lightCCSPrite对象只有一个会产生亮光

((HelloWorld*)getParent())->darknessLayer->begin();

CC_PROFILER_START_CATEGORY(kCCProfilerCategorySprit e, "CCSprite - draw");

  CCAssert(!m_pobBatchNode, "If CCSprite is being rendered by CCSpriteBatchNode, CCSprite#draw SHOULD NOT be called");

  CC_NODE_DRAW_SETUP();


//glClear(GL_COLOR_BUFFER_BIT);
glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA);
glColorMask(0.0f, 0.0f, 0.0f, 1.0f);//关键句

#define kQuadSize sizeof(m_sQuad.bl)

if (m_pobTexture!= NULL)
{
glBindTexture(GL_TEXTURE_2D, m_pobTexture->getName());
}
else
{
glBindTexture(GL_TEXTURE_2D, 0);
}


  // ccGLEnableVertexAttribs( kCCVertexAttribFlag_PosColorTex );

long offset = (long)&m_sQuad;
// vertex
  int diff = offsetof( ccV3F_C4B_T2F, vertices);
  glVertexAttribPointer(kCCVertexAttrib_Position, 3, GL_FLOAT, GL_FALSE, kQuadSize, (void*) (offset + diff));

  // texCoods
  diff = offsetof( ccV3F_C4B_T2F, texCoords);
  glVertexAttribPointer(kCCVertexAttrib_TexCoords, 2, GL_FLOAT, GL_FALSE, kQuadSize, (void*)(offset + diff));

  // color
  diff = offsetof( ccV3F_C4B_T2F, colors);
  glVertexAttribPointer(kCCVertexAttrib_Color, 4, GL_UNSIGNED_BYTE, GL_TRUE, kQuadSize, (void*)(offset + diff));
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);


glColorMask(1.0f, 1.0f, 1.0f, 1.0f);
((HelloWorld*)getParent())->darknessLayer->end();
}
********************调用处*************************
CCSprite *sprite2=LightCCSprite::spriteWithFile("light.png");//继承ccsprite新建对象
sprite2->setPosition(ccp(100,200));
this->addChild(sprite2,2);
sprite2->runAction(CCRepeatForever::create((CCActionInterval *)CCSequence::create(CCMoveBy::create(3.0f,ccp(300,0)),CCMoveBy::create(0.1f,ccp(-300,0)),NULL)));


darknessLayer = CCRenderTexture::create(size.width, size.height);
darknessLayer->setPosition(ccp( size.width /2 , size.height/2 ));
this->addChild(darknessLayer,20);
darknessLayer->clear(0,0,0,0.5f);//设置黑夜笼罩
*********************最终效果************************
cocos2d <wbr>制作光晕特效

这篇关于cocos2d 制作光晕特效的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/288361

相关文章

使用XmlPullParser制作BindView工具

在之前我写过了一个BindView的工具,之前使用的最要是正则表达的文本分析做的。最近,工作我认识了Android的XML解析,我又想起了这个问题。发现这个问题,其实用XmlPullParser更好解决。所以我重新写了这个工具。简单多了,而且不用格式化代码。 先分析一下如何写,简易思路如下 Created with Raphaël 2.1.0 输入文本路径 读取x

Linux RedHat 利用 ISO镜像文件制作本地 yum源

优质博文:IT-BLOG-CN 【1】创建iso存放目录和挂载目录 [root@desktop ~]# cd /mnt/[root@desktop mnt]# mkdir cdrom 【2】将ISO镜像文件挂载到/mnt/cdrom文件夹下(前提你的CD/DVD中有你的ISO文件-安装时使用的镜像文件) mount /dev/cdrom /mnt/cdrom 【3】编辑/et

2023-2024 学年第二学期小学数学六年级期末质量检测模拟(制作:王胤皓)(90分钟)

word效果预览: 一、我会填 1. 1.\hspace{0.5em} 1. 一个多位数,亿位上是次小的素数,千位上是最小的质数的立方,十万位是 10 10 10 和 15 15 15 的最大公约数,万位是最小的合数,十位上的数既不是质数也不是合数,这个数是 ( \hspace{4em} ),约等于 ( \hspace{1em} ) 万 2. 2.\hspace{0.5em} 2.

Flask中制作博客首页的分类功能(二)

在Flask中制作博客首页的分类功能(一)的基础上,继续下面的教程。 发布文章的时候会为文章添加一些标签(tag),这些tag需要和数据库中Category表的tag进行比较,如果已经存在该tag,那么需要将新发表文章的tag与已存在的表格进行对应,如果不存在则要新建一个category表。 首先在python shell中执行操作。 from sql_test import db, Pos

制作微信小程序“飞翔的小鸟”

微信小程序为开发者提供了一个强大的平台,可以快速创建各种有趣的应用。在这篇博客中,我们将介绍如何制作一个简单的微信小程序——“飞翔的小鸟”。 项目介绍 “飞翔的小鸟”是一款基于微信小程序的小游戏,玩家需要控制一只小鸟在障碍物之间飞行,避免撞到柱子。游戏难度逐渐增加,挑战玩家的反应速度和操作技巧。 准备工作 注册微信小程序账号:首先,你需要在微信公众平台注册一个小程序账号。 安

应届毕业之本科简历制作

因为毕设以及编制岗位面试,最近好久没有更新了,刚好有同学问如何制作简历,我就准备将我自己制作简历的流程分享给各位,到此也算是一个小的结束,拿了工科学位证书毕业去做🐂🐎了。 简历主要包含内容 基本信息 基本信息需要可以分为必要的信息和可选的信息。必要的信息包括 姓名 、 联系方式(手机号 + 邮箱) ,可 选的信息包括城市、求职岗位、照片、城市、现工作地点、期望工作地点、性别。

Python使用tkinter制作无边框透明时钟源码讲解(tkinter如何实现窗口无边框透明)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 导入必要的库📝 创建主窗口🎯 去掉窗口边框🎯 设置窗口透明度🎯 允许窗口背景透明🎯 设置窗口背景颜色为透明🎯 设置窗口位置🎯 创建用于显示时间的标签 📝 更新时间函数📝 使窗口可移动📝 设置窗口置顶📝 完整代码 ⚓️ 相关链接 ⚓️ 📖 介绍 📖 在项目开发中,有时我们需要创建无边

电子杂志制作的必备软件:轻松提升制作效率

​电子杂志作为一种新型的媒体形式,具有互动性强、内容丰富、传播范围广等特点。随着互联网的普及,越来越多的企业和个人开始关注和投入电子杂志的制作。然而,电子杂志的制作过程往往复杂繁琐,需要付出大量的时间和精力。为了提高电子杂志的制作效率,我们可以借助一些专业的软件工具。 1.要制作电子杂志,首先需要选择一款适合自己的软件。比如FLBOOK在线制作电子杂志平台。这个工具具有强大的功能

文心智能体平台介绍和应用:制作你的智能体(运维小帮手)

这是我自己制作的智能体 大家可以了解一下! 运维小帮手!https://mbd.baidu.com/ma/s/tE19dqvr 文心智能体平台官网首页 点击跳转!https://agents.baidu.com/ 什么是智能体平台? 文心智能体平台(Wenxin Intelligent Agent Platform)是由百度开发的一个全面集成多种人工智能技术的开放平台,旨在为企业和

Linux Ubuntu 24.04制作可用systemctl操控的service

在/etc/systemd/system/目录下创建一个新的<your_service_name>.service文件,例如buda.service,里面填入以下内容: (特别要注意设置WorkingDirectory, 这将决定exe程序中的相对路径的解析结果。) [Unit]Description=buda website serverAfter=network.target[Serv