`
周大帅
  • 浏览: 27159 次
社区版块
存档分类
最新评论

JavaScript强化教程—— 内置粒子系统

阅读更多
本文为 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浏览器中运行还需要为粒子系统添加纹理,我们只在代码第③行添加了火粒子纹理,其它的粒子纹理添加类似。
分享到:
评论

相关推荐

    贝塞尔曲线编辑器——个人版

    在Cocos Creator中,编辑好的贝塞尔曲线可以作为精灵、粒子系统或者其他游戏对象的路径,使它们按照预定的轨迹运动。 标签中的"cocos-js"表明这个编辑器可能使用了Cocos JavaScript API,这使得开发者可以在浏览器...

    AE三维粒子插件:Plexus 2.0.10 (Win64位).rar

    - 学习和掌握JavaScript表达式,可以更高效地操控Plexus粒子系统。 - 利用Plexus的光照互动,可以模拟真实的光照和阴影效果,提升粒子的真实感。 6. **学习资源** - 在线教程和社区:互联网上有许多免费的教程和...

    Learning Three.js The JavaScript 3D Library for WebGL, Second Edition

    ### 《学习Three.js——用于WebGL的JavaScript 3D库》第二版 #### 一、书籍概述 《学习Three.js——用于WebGL的JavaScript 3D库》第二版是一本深入探讨如何利用Three.js这一强大的JavaScript库创建引人入胜的三维...

    Cocos2d-x学习笔记——完全掌握C++ API与游戏项目开发.zip

    4. 多语言支持:内置多语言系统,方便游戏本地化。 5. 网络通信:提供网络接口,可用于实现在线对战、数据同步等功能。 通过深入学习和实践Cocos2d-x的C++ API,开发者能够熟练地创建各种类型的游戏,从简单的2D...

    cocos2d-x教程

    2. **粒子系统**:利用粒子系统创建烟火、水波、雪花等特效。 3. **网络编程**:学习如何在cocos2d-x中实现网络通信,例如实现多人在线游戏。 4. **UI设计**:创建用户界面,如菜单、对话框等,提升用户体验。 5. **...

    任意球达人源码-cocosCreator js

    5. **动画效果**:为了增加游戏的趣味性和视觉吸引力,开发者通常会使用JavaScript配合Cocos Creator的动画系统创建各种过渡效果,如足球飞行轨迹的粒子特效、进球后的庆祝动画等。 四、微信小游戏接口集成 “任意...

    Unity游戏源码unity3dRPG游戏(完整的RPGdemo)完整源码下载

    - **粒子系统**:Unity的粒子系统能够模拟火焰、水花、烟雾等效果,增加场景的真实感。 6. **优化技巧**: - **资源加载管理**:合理安排资源加载顺序,减少内存占用,提高游戏性能。 - **性能监控**:使用Unity...

    Cocos2d-x高级开发教程.pdf

    - 功能强大:内置物理引擎、粒子系统等功能。 #### 二、跨平台能力 - **优势**: - 只需编写一次代码即可部署于多个平台,如iOS、Android、Windows、OS X等。 - 节省开发者的时间和成本。 - 适应了当前移动市场...

    一个包含晴天,阴天,下雨,下雪,火灾的three场景的项目

    7. **粒子系统(ParticleSystem)**:在Three.js中,粒子系统常用来创建复杂的特效,如雨、雪、烟雾等。通过控制大量微小粒子的行为,可以模拟出逼真的天气效果。 8. **动画(Animation)**:为了使场景更生动,...

    elCanvas一种轻量级动画引擎可在Canvas上制作动画

    - **粒子系统**:创建多个小的动画对象,模拟火花、烟雾等效果。 **5. 进阶使用** - **自定义渲染逻辑**:覆盖默认的渲染方法,实现个性化的对象绘制。 - **时间线和动画组合**:通过时间线管理多个动画,实现...

    attractor-godot:https

    它支持多种平台,提供了丰富的内置工具,包括粒子系统、物理引擎、动画编辑器等,使得开发者能够轻松创建各种复杂的游戏场景和效果。在这个项目中,Godot 3.3的粒子着色器被用于实现洛伦兹吸引人的动态效果,这不仅...

    Flappy-bird:使用Phaser用javascript重新创建了著名的Flappy-Bird游戏

    它提供了丰富的功能,包括精灵、动画、物理引擎、碰撞检测、粒子系统等,使得开发者能够高效地创建各种类型的游戏。在这款Flappy Bird的克隆版中,我们能看到Phaser.js的诸多特性得以充分利用。 首先,游戏的核心...

    FruitNijia:水果忍者Cocos版本

    Cocos2d-x提供了一套完整的2D游戏开发工具集,包括精灵、动画、物理引擎、粒子系统等,使得开发者能够快速构建游戏场景和交互逻辑。 2. **JavaScript在游戏开发中的应用** JavaScript作为Cocos2d-x的脚本语言之一...

    lufylegend.js-lufylegend-1.9.9

    2. **2D渲染引擎**:lufylegend.js提供了高效的2D渲染系统,可以创建复杂的动画效果和动态场景,同时支持精灵、图块地图、粒子系统等游戏常用元素。 3. **物理引擎集成**:内建Box2D物理引擎,让开发者可以轻松实现...

    armory_tools

    5. **物理模拟与粒子系统**:Armory内置了强大的物理引擎和粒子系统,开发者可以轻松创建复杂的物理效果,如重力、碰撞检测等,同时也能设计出绚丽的粒子特效,如爆炸、火花、烟雾等。 6. **光照与材质系统**:...

    前端项目-melonjs.zip

    - **粒子系统**:创建绚丽的粒子效果,如爆炸、火花、烟雾等。 3. **梅伦JS-master文件结构** - `doc`:包含了梅伦JS的官方文档,方便开发者查阅API和教程。 - `examples`:包含了一系列示例代码,展示如何使用...

    Unity 4.7.2 Pro patch For mac

    2. **图形增强**:此版本可能包含对图形渲染的优化,比如改进的光照、阴影效果和粒子系统,以提高游戏的视觉质量。Unity的Shader系统也使得开发者能轻松实现复杂的视觉效果。 3. **物理引擎**:Unity内置的Box2D和...

    像素小鸟(flappy bird) cocos creator 完整源码

    2.4.2版本是其一个稳定且功能完善的版本,优化了性能,增加了新的特性,如粒子系统、光照系统等。 2. **游戏结构设计** 像素小鸟的游戏结构主要包括游戏场景、角色、碰撞检测和分数计算等部分。在Cocos Creator中...

    soundtable:使用 Leap Motion 协作创建声音和可视化。 HackGT 秋季 2014

    此外,JavaScript还可以与WebGL或其他可视化库结合,根据音频信号生成动态的视觉效果,如波形图、粒子系统或者色彩丰富的几何形状,从而将听觉体验转化为直观的视觉艺术。 在“soundtable-master”这个文件夹中,...

    com.pa.domdom.laser_unit_effects

    粒子系统能模拟出各种复杂效果,如爆炸、火焰、烟雾,当然也包括激光。粒子发射器、生命周期、颜色渐变、速度变化等都是粒子系统的关键参数。"com.pa.domdom.laser_unit_effects"可能包含一套定制化的粒子系统配置,...

Global site tag (gtag.js) - Google Analytics