本文为 h5edu 机构官方 html5培训 教程,主要介绍:javascript强化教程 —— 内置粒子系统
从类图中我们可以看到,cocos2d-js中有内置的11种粒子,这些粒子的属性都是预先定义好的,我们也可以在程序代码中单独修改某些属性,我们在上一节的实例中都已经实现了这些属性的设置。
内置粒子系统
内置的11种粒子系统说明如下:
particleexplosion。爆炸粒子效果,属于半径模式。
particlefire。火焰粒子效果,属于重力径模式。
particlefireworks。烟花粒子效果,属于重力模式。
particleflower。花粒子效果,属于重力模式。
particlegalaxy。星系粒子效果,属于半径模式。
particlemeteor。流星粒子效果,属于重力模式。
particlespiral。漩涡粒子效果,属于半径模式。
particlesnow。雪粒子效果,属于重力模式。
particlesmoke。烟粒子效果,属于重力模式。
particlesun。太阳粒子效果,属于重力模式。
particlerain。雨粒子效果,属于重力模式。
这11种粒子的属性,根据它的发射模式不同,效果不同。
实例:内置粒子系统
下面我们通过一个实例演示一下这11种内置粒子系统。这个实例如图所示,左图是一个操作菜单场景,选择菜单可以进入到上图动作场景,在下图动作场景中演示选择的粒子系统效果,点击右下角返回按钮可以返回到菜单场景。
2.jpg
内置粒子系统实例
下面我们重点介绍一下场景myactionscene,它的myactionscene.js代码如下:
var myactionlayer = cc.layer.extend({
flagtag: 0, // 操作标志
plabel: null, ①
ctor: function (flagtag) {
this._super();
this.flagtag = flagtag;
cc.log("myactionlayer init flagtag " + this.flagtag);
var size = cc.director.getwinsize();
var backmenuitem = new cc.labelbmfont("<back", res.fnt_fnt);
var backmenuitem = new cc.menuitemlabel(backmenuitem, this.backmenu, this);
backmenuitem.x = size.width - 100;
backmenuitem.y = 100;
var mn = cc.menu.create(backmenuitem);
mn.x = 0;
mn.y = 0;
mn.anchorx = 0.5;
mn.anchory = 0.5;
this.addchild(mn);
this.plabel = new cc.labelbmfont("", res.fnt_fnt);
this.plabel.x = size.width /2;
this.plabel.y = size.height - 50;
this.addchild(this.plabel, 3);
return true;
},
backmenu: function (sender) {
cc.director.popscene();
},
onentertransitiondidfinish: function () {
cc.log("tag = " + this.flagtag);
var sprite = this.getchildbytag(sp_tag);
var size = cc.director.getwinsize();
var system;
switch (this.flagtag) { ②
case actiontypes.kexplosion:
system = new cc.particleexplosion();
this.plabel.setstring("explosion");
break;
case actiontypes.kfire:
system = new cc.particlefire();
system.texture = cc.texturecache.addimage(res.s_fire); ③
this.plabel.setstring("fire");
break;
case actiontypes.kfireworks:
system = new cc.particlefireworks();
this.plabel.setstring("fireworks");
break;
case actiontypes.kflower:
system = new cc.particleflower();
this.plabel.setstring("flower");
break;
case actiontypes.kgalaxy:
system = new cc.particlegalaxy();
this.plabel.setstring("galaxy");
break;
case actiontypes.kmeteor:
system = new cc.particlemeteor();
this.plabel.setstring("meteor");
break;
case actiontypes.krain:
system = new cc.particlerain();
this.plabel.setstring("rain");
break;
case actiontypes.ksmoke:
system = new cc.particlesmoke();
this.plabel.setstring("smoke");
break;
case actiontypes.ksnow:
system = new cc.particlesnow();
this.plabel.setstring("snow");
break;
case actiontypes.kspiral:
system = new cc.particlespiral();
this.plabel.setstring("spiral");
break;
case actiontypes.ksun:
system = new cc.particlesun();
this.plabel.setstring("sun");
break; ④
}
system.x = size.width /2;
system.y = size.height /2;
this.addchild(system);
}
});
var myactionscene = cc.scene.extend({
onenter: function () {
this._super();
}
});
在头文件中第①行代码定义了labelbmfont类型的成员变量plabel,用来在场景中显示粒子系统的名称。
我们在myactionlayer的onentertransitiondidfinish函数中创建粒子系统对象,而不是在myactionlayer的onenter函数创建,这是因为myactionlayer的onenter函数调用时,场景还没有显示,如果在该函数中创建爆炸等显示一次的粒子系统,等到场景显示的时候,爆炸已经结束了,我们会看不到效果。
代码第②~④行创建了11种粒子系统,这里创建粒子系统时候都采用了它们的默认属性值。其中this.plabel.setstring("xxx")函数是为场景中标签设置内容,这样在进入场景后可以看到粒子系统的名称。
另外,如果在web浏览器中运行还需要为粒子系统添加纹理,我们只在代码第③行添加了火粒子纹理,其它的粒子纹理添加类似。
0
0
相关文章
JavaScript中String-raw方法在处理原始字符串作用
JavaScript中!操作符对原始数据进行布尔强制转换
JavaScript内联式与外联式代码引入的优缺点对比
JavaScript数组字面量与Array构造函数的初始化差异
JavaScript数值范围检测在不同浏览器引擎中一致性
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
相关标签:
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。
49
2026.03.13
本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。
89
2026.03.12
本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。
276
2026.03.11
本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。
59
2026.03.10
本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。
99
2026.03.09
本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。
105
2026.03.06
本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。
230
2026.03.05
本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。
619
2026.03.04
2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!
173
2026.03.04
热门下载
相关下载
精品课程
最新文章

