- 浏览: 26502 次
最新评论
本文为 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浏览器中运行还需要为粒子系统添加纹理,我们只在代码第③行添加了火粒子纹理,其它的粒子纹理添加类似。
从类图中我们可以看到,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浏览器中运行还需要为粒子系统添加纹理,我们只在代码第③行添加了火粒子纹理,其它的粒子纹理添加类似。
发表评论
-
JavaScript强化教程 —— 对象创建模式
2016-10-09 17:12 712本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
AngularJs 基础教程 —— 依赖注入
2016-09-28 17:10 645本文为 H5EDU 机构官方 HT ... -
AngularJs 基础教程 —— Select(选择框)
2016-09-23 17:14 828本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
AngularJs 基础教程 —— 控制器
2016-09-21 17:22 597本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
AngularJs 基础教程 —— 简介(10)
2016-09-14 17:41 531本文为 H5EDU 机构官方 HT ... -
AngularJs 基础教程 —— 与php服务器
2016-09-12 17:49 1291本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
JavaScript强化教程 —— Cocos2d-JS自动JSB绑定规则修改
2016-09-09 18:08 1190本文为 H5EDU 机构官方 HT ... -
JavaScript强化教程 —— 资源打包工具的使用及资源的异步加载处理
2016-09-08 17:45 775本文为 HTML5培训 机构官方 HTML5培训 教程,主要介 ... -
JavaScript强化教程 —— Cocos2d-JS极速调试技巧
2016-09-05 16:18 874本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
JavaScript强化教程 —— Cocos2d-JS游戏快速接入微信JS-SDK
2016-09-02 16:07 1045本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
JavaScript强化教程——JavaScript Math(算数) 对象
2016-08-26 16:33 561本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
JavaScript强化教程 —— Cocos2d-JS的屏幕适配方案
2016-08-25 16:25 1211本文为 H5EDU 机构官方 HT ... -
JavaScript强化教程 -- cocosjs场景切换
2016-08-24 16:11 1381本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
CSS基础教程 -- 媒体查询屏幕适配
2016-08-22 15:15 1103本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
JQuery强化教程 —— jQuery Easing
2016-08-18 14:54 813本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
fullPage教程 -- 整屏滚动效果插件 fullpage详解
2016-08-17 15:21 834本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
JavaScript强化教程——获取内容和属性
2016-08-15 15:35 470本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
JavaScript强化教程——jQuery 动画2
2016-08-12 14:12 631本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
bootstrap教程(二) —— 列表组listgroup
2016-08-11 14:46 644本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ... -
bootstrap教程(二)——导航条
2016-08-08 16:22 549本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍: ...
相关推荐
在Cocos Creator中,编辑好的贝塞尔曲线可以作为精灵、粒子系统或者其他游戏对象的路径,使它们按照预定的轨迹运动。 标签中的"cocos-js"表明这个编辑器可能使用了Cocos JavaScript API,这使得开发者可以在浏览器...
- 学习和掌握JavaScript表达式,可以更高效地操控Plexus粒子系统。 - 利用Plexus的光照互动,可以模拟真实的光照和阴影效果,提升粒子的真实感。 6. **学习资源** - 在线教程和社区:互联网上有许多免费的教程和...
### 《学习Three.js——用于WebGL的JavaScript 3D库》第二版 #### 一、书籍概述 《学习Three.js——用于WebGL的JavaScript 3D库》第二版是一本深入探讨如何利用Three.js这一强大的JavaScript库创建引人入胜的三维...
4. 多语言支持:内置多语言系统,方便游戏本地化。 5. 网络通信:提供网络接口,可用于实现在线对战、数据同步等功能。 通过深入学习和实践Cocos2d-x的C++ API,开发者能够熟练地创建各种类型的游戏,从简单的2D...
2. **粒子系统**:利用粒子系统创建烟火、水波、雪花等特效。 3. **网络编程**:学习如何在cocos2d-x中实现网络通信,例如实现多人在线游戏。 4. **UI设计**:创建用户界面,如菜单、对话框等,提升用户体验。 5. **...
5. **动画效果**:为了增加游戏的趣味性和视觉吸引力,开发者通常会使用JavaScript配合Cocos Creator的动画系统创建各种过渡效果,如足球飞行轨迹的粒子特效、进球后的庆祝动画等。 四、微信小游戏接口集成 “任意...
- **粒子系统**:Unity的粒子系统能够模拟火焰、水花、烟雾等效果,增加场景的真实感。 6. **优化技巧**: - **资源加载管理**:合理安排资源加载顺序,减少内存占用,提高游戏性能。 - **性能监控**:使用Unity...
- 功能强大:内置物理引擎、粒子系统等功能。 #### 二、跨平台能力 - **优势**: - 只需编写一次代码即可部署于多个平台,如iOS、Android、Windows、OS X等。 - 节省开发者的时间和成本。 - 适应了当前移动市场...
7. **粒子系统(ParticleSystem)**:在Three.js中,粒子系统常用来创建复杂的特效,如雨、雪、烟雾等。通过控制大量微小粒子的行为,可以模拟出逼真的天气效果。 8. **动画(Animation)**:为了使场景更生动,...
- **粒子系统**:创建多个小的动画对象,模拟火花、烟雾等效果。 **5. 进阶使用** - **自定义渲染逻辑**:覆盖默认的渲染方法,实现个性化的对象绘制。 - **时间线和动画组合**:通过时间线管理多个动画,实现...
它支持多种平台,提供了丰富的内置工具,包括粒子系统、物理引擎、动画编辑器等,使得开发者能够轻松创建各种复杂的游戏场景和效果。在这个项目中,Godot 3.3的粒子着色器被用于实现洛伦兹吸引人的动态效果,这不仅...
它提供了丰富的功能,包括精灵、动画、物理引擎、碰撞检测、粒子系统等,使得开发者能够高效地创建各种类型的游戏。在这款Flappy Bird的克隆版中,我们能看到Phaser.js的诸多特性得以充分利用。 首先,游戏的核心...
Cocos2d-x提供了一套完整的2D游戏开发工具集,包括精灵、动画、物理引擎、粒子系统等,使得开发者能够快速构建游戏场景和交互逻辑。 2. **JavaScript在游戏开发中的应用** JavaScript作为Cocos2d-x的脚本语言之一...
2. **2D渲染引擎**:lufylegend.js提供了高效的2D渲染系统,可以创建复杂的动画效果和动态场景,同时支持精灵、图块地图、粒子系统等游戏常用元素。 3. **物理引擎集成**:内建Box2D物理引擎,让开发者可以轻松实现...
5. **物理模拟与粒子系统**:Armory内置了强大的物理引擎和粒子系统,开发者可以轻松创建复杂的物理效果,如重力、碰撞检测等,同时也能设计出绚丽的粒子特效,如爆炸、火花、烟雾等。 6. **光照与材质系统**:...
- **粒子系统**:创建绚丽的粒子效果,如爆炸、火花、烟雾等。 3. **梅伦JS-master文件结构** - `doc`:包含了梅伦JS的官方文档,方便开发者查阅API和教程。 - `examples`:包含了一系列示例代码,展示如何使用...
2. **图形增强**:此版本可能包含对图形渲染的优化,比如改进的光照、阴影效果和粒子系统,以提高游戏的视觉质量。Unity的Shader系统也使得开发者能轻松实现复杂的视觉效果。 3. **物理引擎**:Unity内置的Box2D和...
2.4.2版本是其一个稳定且功能完善的版本,优化了性能,增加了新的特性,如粒子系统、光照系统等。 2. **游戏结构设计** 像素小鸟的游戏结构主要包括游戏场景、角色、碰撞检测和分数计算等部分。在Cocos Creator中...
此外,JavaScript还可以与WebGL或其他可视化库结合,根据音频信号生成动态的视觉效果,如波形图、粒子系统或者色彩丰富的几何形状,从而将听觉体验转化为直观的视觉艺术。 在“soundtable-master”这个文件夹中,...
粒子系统能模拟出各种复杂效果,如爆炸、火焰、烟雾,当然也包括激光。粒子发射器、生命周期、颜色渐变、速度变化等都是粒子系统的关键参数。"com.pa.domdom.laser_unit_effects"可能包含一套定制化的粒子系统配置,...