2021SC@SDUSC 【软件工程应用与实践】Claygl项目代码分析(六)

本文详细解析了ParticleRenderable.js中的核心函数,包括addEmitter和removeEmitter用于管理粒子发射器,addField和removeField涉及粒子领域的影响,reset用于重置粒子系统,以及isFinished判断渲染是否完成。这些函数在实现粒子效果和动画中起到关键作用。
摘要由CSDN通过智能技术生成

2021SC@SDUSC

目录

ParticleRenderable.js

4.2函数

addEmitter&removeEmitter

addField&removeField

reset

isFinished


ParticleRenderable.js

4.2函数

addEmitter&removeEmitter

    addEmitter: function(emitter) {
        this._emitters.push(emitter);
    },

    removeEmitter: function(emitter) {
        this._emitters.splice(this._emitters.indexOf(emitter), 1);
    },

将粒子发射器添加至_emitters,参数类型为Emitter.js内定义的Emitter;

根据indexOf获取参数emitter的索引,并删除当前这一个发射器;

addField&removeField

    addField: function(field) {
        this._fields.push(field);
    },

    removeField: function(field) {
        this._fields.splice(this._fields.indexOf(field), 1);
    },

与发射器类似,,将参数field添加至_emitters,参数类型为Field.js内定义的Field;(field为领域,对粒子速度造成影响的属类别,模拟现实情况)

从_field中删除参数field对应实参;

reset

    reset: function() {
        for (var i = 0; i < this._particles.length; i++) {
            var p = this._particles[i];
            p.emitter.kill(p);
        }
        this._particles.length = 0;
        this._elapsedTime = 0;
        this._emitting = true;
    },

重置该粒子系统,对于_particles内的所有粒子,使用kill()将其放回粒子池,接着重置基础设置;

isFinished

    isFinished: function() {
        return this._elapsedTime > this.duration && !this.loop;
    },

用于判断其渲染行为是否全部完成,当消逝时间(已渲染时间)超过设置的持续时间,并且其并非循环渲染用(即一次性),则判断渲染完成,返回true,否则false。

(待续)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值