Cocos2d-JS自定义粒子系统
除了使用Cocos2d-JS的11种内置粒子系统外,我们还可以通过创建ParticleSystem对象,并设置属性实现自定义粒子系统,通过这种方式完全可以实现我们说需要的各种效果的粒子系统。使用ParticleSystem自定义粒子系统至少有两种方式可以实现:代码创建和plist文件创建。
代码创建粒子系统需要手工设置这些属性,维护起来非常困难,我们推荐使用Particle Designer等粒子设计工具进行所见即所得的设计,这些工具一般会生成一个描述粒子的属性类表文件plist,然后通过类似下面的语句加载:
var particleSystem = new cc.ParticleSystem("res/snow.plist");
snow.plist是描述运动的属性文件,plist文件是一种XML文件,参考代码如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
- <plist version="1.0">
- <dict>
- <key>angle</key>
- <real>270</real>
- <key>angleVariance</key>
- <real>5</real>
- <key>blendFuncDestination</key>
- <integer>771</integer>
- <key>blendFuncSource</key>
- <integer>1</integer>
- <key>duration</key>
- <real>-1</real>
- <key>emitterType</key>
- <real>0.0</real>
- <key>finishColorAlpha</key>
- <real>1</real>
- <key>finishColorBlue</key>
- <real>1</real>
- <key>finishColorGreen</key>
- <real>1</real>
- <key>finishColorRed</key>
- <real>1</real>
- <key>finishColorVarianceAlpha</key>
- <real>0.0</real>
- <key>finishColorVarianceBlue</key>
- <real>0.0</real>
- <key>finishColorVarianceGreen</key>
- <real>0.0</real>
- <key>finishColorVarianceRed</key>
- <real>0.0</real>
- <key>finishParticleSize</key>
- <real>-1</real>
- <key>finishParticleSizeVariance</key>
- <real>0.0</real>
- <key>gravityx</key>
- <real>0.0</real>
- <key>gravityy</key>
- <real>-10</real>
- <key>maxParticles</key>
- <real>700</real>
- <key>maxRadius</key>
- <real>0.0</real>
- <key>maxRadiusVariance</key>
- <real>0.0</real>
- <key>minRadius</key>
- <real>0.0</real>
- <key>minRadiusVariance</key>
- <real>0.0</real>
- <key>particleLifespan</key>
- <real>3</real>
- <key>particleLifespanVariance</key>
- <real>1</real>
- <key>radialAccelVariance</key>
- <real>0.0</real>
- <key>radialAcceleration</key>
- <real>1</real>
- <key>rotatePerSecond</key>
- <real>0.0</real>
- <key>rotatePerSecondVariance</key>
- <real>0.0</real>
- <key>rotationEnd</key>
- <real>0.0</real>
- <key>rotationEndVariance</key>
- <real>0.0</real>
- <key>rotationStart</key>
- <real>0.0</real>
- <key>rotationStartVariance</key>
- <real>0.0</real>
- <key>sourcePositionVariancex</key>
- <real>1200</real>
- <key>sourcePositionVariancey</key>
- <real>0.0</real>
- <key>speed</key>
- <real>130</real>
- <key>speedVariance</key>
- <real>30</real>
- <key>startColorAlpha</key>
- <real>1</real>
- <key>startColorBlue</key>
- <real>1</real>
- <key>startColorGreen</key>
- <real>1</real>
- <key>startColorRed</key>
- <real>1</real>
- <key>startColorVarianceAlpha</key>
- <real>0.0</real>
- <key>startColorVarianceBlue</key>
- <real>0.0</real>
- <key>startColorVarianceGreen</key>
- <real>0.0</real>
- <key>startColorVarianceRed</key>
- <real>0.0</real>
- <key>startParticleSize</key>
- <real>10</real>
- <key>startParticleSizeVariance</key>
- <real>5</real>
- <key>tangentialAccelVariance</key>
- <real>0.0</real>
- <key>tangentialAcceleration</key>
- <real>1</real>
- <key>textureFileName</key>
- <string>snow.png</string>
- </dict>
- </plist>
在上述的plist文件描述的属性和属性值都是成对出现,其中<key>标签描述的是属性,<real>描述的属性值。
plist文件中textureFileName属性指定了纹理图片,纹理图片宽高必须是2的n次幂,大小不要超过64x64像素,在美工设计纹理图片时候,不用关注太多细节,例如:设计雪花纹理图片时候,按照雪花是有6个角的,很多人会设计为下图所示的样式,而事实上我们需要的下图所示的渐变效果的圆点。
提示 描述粒子属性的plist文件,可以通过粒子系统设计工具生成,有关粒子系统工具使用大家可以参考本系列丛书的工具卷(《Cocos2d-JS实战(卷Ⅳ):工具详解》)。
下面我们通过实现如下图所示的下雪粒子系统,介绍一下自定义粒子系统的实现。
图中所示的下雪实例,使用plist文件创建,主要代码如下:
- var HelloWorldLayer = cc.Layer.extend({
- ctor: function () {
- //////////////////////////////
- // 1. super init first
- this._super();
- var size = cc.director.getWinSize();
- var bg = new cc.Sprite("res/background-1.png");
- bg.x = size.width / 2;
- bg.y = size.height / 2;
- this.addChild(bg);
- var particleSystem = new cc.ParticleSystem("res/snow.plist");
- particleSystem.x = size.width / 2;
- particleSystem.y = size.height - 50;
- this.addChild(particleSystem);
- return true;
- }
- });
从代码可见plist文件创建粒子系统要比代码创建简单很多,这主要是因为采用了plist描述粒子属性。
本书交流讨论网站:http://www.cocoagame.net
更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com
《Cocos2d-x实战 JS卷》现已上线,各大商店均已开售:
京东:http://item.jd.com/11659698.html
欢迎关注智捷iOS课堂微信公共平台,了解最新技术文章、图书、教程信息
Cocos2d-JS自定义粒子系统的更多相关文章
- cocos2d JS 自定义事件分发器(接收与传递数据) eventManager
简而言之,它不是由系统自动触发,而是人为的干涉 较多情况用于传递数据 var _listener1 = cc.EventListener.create({ event: cc.EventListene ...
- js自定义验证码
分享一个js自定义的验证码 window.onload = function () { var code; $('.changePassword').click(function () ...
- js自定义弹出框
js自定义弹出框: 代码如下 <html> <head><title>自定义弹出对话框</title> <style type ="te ...
- 超酷HTML5 Canvas图表应用Chart.js自定义提示折线图
超酷HTML5 Canvas图表应用Chart.js自定义提示折线图 效果预览 实例代码 <div class="htmleaf-container"> <div ...
- 与你相遇好幸运,Sails.js自定义responses
在 /api/responses/ 新建文件 >serviceDBError.js 自定义的数据库错误 >serviceError.js 自定义的数据错误 >serviceSucc ...
- Cocos2d-x中自定义粒子系统
除了使用Cocos2d-x的11种内置粒子系统外,我们还可以通过创建ParticleSystemQuad对象,并设置属性实现自定义粒子系统,通过这种方式完全可以实现我们说需要的各种效果的粒子系统.使用 ...
- jquery.validate.js默认配置,jquery.validate.js自定义提示信息
jquery.validate.js默认配置,jquery.validate.js自定义提示信息 配置jQuery.validator默认的处理方法 >>>>>>& ...
- web前端对上传的文件进行类型大小判断的js自定义函数
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js自定义事件、DOM/伪DOM自定义事件
一.说明.引言 我JS还是比较薄弱的,本文的内容属于边学边想边折腾的碎碎念,可能没什么条理,可能有表述不准确的地方,可能内容比较拗口生僻.如果您时间紧迫,或者JS造诣已深,至此您就可以点击右侧广告(木 ...
随机推荐
- Codeforces Round #310 (Div. 1) B. Case of Fugitive set
B. Case of Fugitive Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/555/p ...
- Shared File System Master Slave 全配置以及测试
在本机完成2个broker的共享文件测试 2个broker的完整配置文件如下 <!-- Licensed to the Apache Software Foundation (ASF) ...
- change netbeans look and feel
change netbeans look and feel: 方法一: 下载地址:https://kenai.com/projects/nbsubstance/downloads/directory/ ...
- ThreadLocal小记
API: public class ThreadLocal<T> extends Object 该类提供了线程局部 (thread-local) 变量. 这些变量不同于它们的普通相应物.由 ...
- SQLServer恢复表级数据
最近几天,公司的技术维护人员频繁让我恢复数据库,因为他们总是少了where条件,导致update.delete出现了无法恢复的后果,加上那些库都是几十G.恢复起来少说也要十几分钟.为此,找了一些资料和 ...
- oc-15-self
// // Person.m // OC基础第三天 // // Created by apple on 15/10/17. // // #import "Person.h" @im ...
- cocos2d-x在android下的编译
$(call import-add-path,E:/cocos2d-2.0-x-2.0.3) include $(BUILD_SHARED_LIBRARY) http://www.cnblogs.co ...
- windows和linux中检查端口是否被占用
一.windows 1.查询端口占用情况 cmd > netstat -ano 2.查询8080端口是否被占用 cmd > netstat -ano|findstr 8080 3.查询哪个 ...
- 通过布赛尔曲线以及CAShapeLayer的strokeStart 、strokeEnd 属性来实现一个圆形进度条
#import <UIKit/UIKit.h> @interface CircleProgressView : UIView /**起始值(0-1)*/ @property(nonatom ...
- arcgis gdb含下划线_和%的查询 by gisoracle
XMMC LIKE '%\_%' ESCAPE '\' by gisoracle 2015.1.25 XMMC LIKE '%\%%' escape '\' ...