cocos2dx 子弹飞作为一个例子来解释解酒效果类CCMotionStreak
感谢点评与关注,欢迎转载与分享。
勤奋努力,持之以恒!
在游戏开发中,有时会须要在某个游戏对象上的运动轨迹上实现渐隐效果。比方子弹的运动轨迹,假设不借助引擎的帮助。这样的效果则须要通过大量的图片来实现。而Cocos2D-x的拖动渐隐效果类CCMotionStreak就帮助我们实现这个效果。以下是子弹飞行火焰拖尾的效果实现。。
#include "HelloWorldScene.h"
#include "SimpleAudioEngine.h" using namespace cocos2d;
using namespace CocosDenshion; CCScene* HelloWorld::scene()
{
CCScene *scene = CCScene::create();
HelloWorld *layer = HelloWorld::create();
scene->addChild(layer);
return scene;
}
bool HelloWorld::init()
{
if ( !CCLayer::init() )
{
return false;
}
size = CCDirector::sharedDirector()->getWinSize(); CCLayerColor* background = CCLayerColor::create(ccc4(255, 200, 255, 255), size.width, size.height);
this->addChild(background); //存储子弹节点
bulltArr = CCArray::create();
CC_SAFE_RETAIN(bulltArr);
//存储 CCMotionStreak
streakArr = CCArray::create();
CC_SAFE_RETAIN(streakArr); scheduleUpdate(); return true;
} void HelloWorld::update(float delta)
{
for (int i = 0; i < bulltArr->count(); i++) {
CCSprite* bullt = (CCSprite*)bulltArr->objectAtIndex(i);
bullt->setPositionY(bullt->getPositionY()+2); CCMotionStreak* streak = (CCMotionStreak*)streakArr->objectAtIndex(i);
//每次调用setPosition函数又一次设置对象位置时。“影子”将被创建而且慢慢渐隐 注:对于CCMotionStreak对象不可用getPosition()等方法。 。
streak->setPosition(bullt->getPosition());
} for (int i = 0; i < bulltArr->count(); i++) {
CCSprite* bullt = (CCSprite*)bulltArr->objectAtIndex(i);
//删除超出屏幕节点
if (bullt->getPositionY() >= size.height+bullt->getContentSize().height) {
this->removeChild(bullt);
bulltArr->removeObject(bullt); CCSprite* streak = (CCSprite*)streakArr->objectAtIndex(i);
this->removeChild(streak);
streakArr->removeObject(streak); break;
}
}
} //拖尾效果类CCMotionStreak
//创建 子弹节点 和 CCMotionStreak对象
void HelloWorld::createBullt(CCPoint startPoint)
{
CCSprite* bullt = CCSprite::create("bullet3.png");
bullt->setPosition(startPoint);
this->addChild(bullt,2);
bulltArr->addObject(bullt); //第一个參数是间隐的时间,第二个參数是间隐片断的大小,第三个參数是贴图的宽高,第四个參数是颜色值RGB。第五个參数是贴图的路径或者贴图对象
CCMotionStreak* streak = CCMotionStreak::create(0.8, 10, 10, ccRED, "bullet3.png");
streak->setPosition(startPoint);
this->addChild(streak,1);
streakArr->addObject(streak);
} bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
{
createBullt(pTouch->getLocation());
return true;
} void HelloWorld::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent){}
void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent){}
void HelloWorld::onEnter()
{
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, false);
CCLayer::onEnter();
}
void HelloWorld::onExit()
{
CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
CCLayer::onExit();
} HelloWorld::~HelloWorld()
{
CC_SAFE_RELEASE(bulltArr);
CC_SAFE_RELEASE(streakArr);
}
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc29uZ19odWlfeGlhbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
版权声明:本文博客原创文章,博客,未经同意,不得转载。
cocos2dx 子弹飞作为一个例子来解释解酒效果类CCMotionStreak的更多相关文章
- cocos2dx 以子弹飞行为例解说拖尾效果类CCMotionStreak
在游戏开发中,有时会须要在某个游戏对象上的运动轨迹上实现渐隐效果.比方子弹的运动轨迹,假设不借助引擎的帮助,这样的效果则须要通过大量的图片来实现.而Cocos2D-x的拖动渐隐效果类CCMotionS ...
- 一个Java例子,解释清楚注解的作用
原文出处:码农登陆 写在前面 今天聊的是注解,但其实单纯说注解,注解本身没有任何的作用.简单说和注释没啥区别,而它有作用的原因是:注解解释类,也就是相关对代码进行解释的特定类.一般这些类使用反射是可以 ...
- spring笔记--使用springAPI以及自定义类 实现AOP的一个例子
Spring的另一个重要思想是AOP,面向切面的编程,它提供了一种机制,可以在执行业务前后执行另外的代码,Servlet中的Filter就是一种AOP思想的体现,下面通过一个例子来感受一下. 假设我们 ...
- Webpack入门——使用Webpack打包Angular项目的一个例子
2016.1.22,对大多数人来说,这是一个非常平常的日子,但这却是我决定在博客园写博客的日子.虽然注册博客园的博客已有4年8个月,却一直没有动手写过一篇博客,原因是觉得自己水平不行,写不出好东西,所 ...
- 一个例子搞清楚Java程序执行顺序
当我们new一个GirlFriend时,我们都做了什么? 一个例子搞懂Java程序运行顺序 public class Girl { Person person = new Person("G ...
- ReCap 360 photo照片建模技术的又一个例子
这是我做的又一个利用Autodesk ReCap 360 照片建模技术做的一个例子.你可以下载模型自己把玩,或者下载原始照片自己试一试. 拍摄工具: 小米手机 照片数量:约120张 后期处理工具: p ...
- 从一个例子中体会React的基本面
[起初的准备工作] npm init npm install --save react react-dom npm install --save-dev html-webpack-plugin web ...
- 用thinkphp写的一个例子:抓取网站的内容并且保存到本地
我需要写这么一个例子,到电子课本网下载一本电子书. 电子课本网的电子书,是把书的每一页当成一个图片,然后一本书就是有很多张图片,我需要批量的进行下载图片操作. 下面是代码部分: public func ...
- Erlang 程序引发共享内存 bug 的一个例子
虽然 Erlang 的广告说得非常好,functional.share-nothing.消息传递,blah blah 的,好像用 Erlang 写并发程序就高枕无忧了,但是由于 Erlang 信奉高度 ...
随机推荐
- Android该HTTP下载
今天学习了Android开发中比較难的一个环节,就是断点续传下载,非常多人看到这个标题就感觉头大.的确,假设没有良好的逻辑思维,这块的确非常难搞明确.以下我就将自己学到的知识和一些见解写下供那些在这个 ...
- 划分树 静态第k大
划分树是保存了快速排序的过程的树,可以用来求静态第k小的数 如果,划分树可以看做是线段树,它的左孩子保存了mid-L+1 个 小于等于 a[mid] 的数字, 右孩子保存了 R-mid个大于等于a[ ...
- uva10635 LCS映射转LIS
题目给定 2个序列,要我们求LCS,但是序列的长度最长是250*250, LCS的时间复杂度是O(N*N),所以无法解决 我们可以第一个序列的数字,按位置,映射为1.2.3.4.5.6.7.8.9 那 ...
- 状态压缩dp(hdu2167,poj2411)
hdu2167 http://acm.hdu.edu.cn/showproblem.php?pid=2167 给定一个N*N的板子,里面有N*N个数字,选中一些数字,使得和最大 要求任意两个选中的数字 ...
- hdu 2191 悼念512四川汶川大地震遇难者——如今宝,感恩生活
悼念512四川汶川大地震遇难者--如今宝,感恩生活 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- lambda Join /Group by/ Contains
1.Join Contains
- Code-Based Configuration (EF6 onwards)
https://msdn.microsoft.com/en-us/data/jj680699#Using
- Windows 8 应用开发 - 本地数据存储
原文:Windows 8 应用开发 - 本地数据存储 在应用中通常会遇到用户主动或被动存储信息的情况,当应用关闭后这些数据仍然会存储在本地设备上,用户下次重新激活应用时会自动加载这些数据.下 ...
- 重新想象 Windows 8 Store Apps (12) - 控件之 GridView 特性: 拖动项, 项尺寸可变, 分组显示
原文:重新想象 Windows 8 Store Apps (12) - 控件之 GridView 特性: 拖动项, 项尺寸可变, 分组显示 [源码下载] 重新想象 Windows 8 Store Ap ...
- 【Android开发经验】使用反射,得到的类的字段、方法、并实现了简单的调用
本文后推出Android的ICO框架做准备,所以,假设你想要一个最近的一项研究Android的ICO学生框架.你可以稍微看一下. 首先,简介一下Java里面的反射. JAVA反射机制是在执行状态中,对 ...