Hilo/build/cmd/hilo/game/ParticleSystem.min.js
2020-07-03 14:37:19 +08:00

6 lines
2.9 KiB
JavaScript

/**
* hilojs 2.0.1 for cmd
* Copyright 2016 alibaba.com
* Licensed under the MIT License
*/
define(function(t,i,s){var e=t("hilo/core/Hilo"),h=t("hilo/core/Class"),a=t("hilo/view/View"),r=t("hilo/view/Container"),n=t("hilo/view/Drawable"),o=t("hilo/util/util"),m=function(){function t(t,i){return i?t+2*(Math.random()-.5)*i:t}for(var i=["x","y","vx","vy","ax","ay","rotation","rotationV","scale","scaleV","alpha","alphaV","life"],s=[],m=0,l=i.length;m<l;m++){var c=i[m];s.push(c),s.push(c+"Var")}var u={x:0,y:0,vx:0,vy:0,ax:0,ay:0,scale:1,scaleV:0,alpha:1,alphaV:0,rotation:0,rotationV:0,life:1},d=[],v=h.create({Extends:r,constructor:function(t){this.id=this.id||t.id||e.getUid("ParticleSystem"),this.emitterX=0,this.emitterY=0,this.gx=0,this.gy=0,this.totalTime=1/0,this.emitNum=10,this.emitNumVar=0,this.emitTime=.2,this.emitTimeVar=0,this.particle={},v.superclass.constructor.call(this,t),this.reset(t)},Statics:{PROPS:s,PROPS_DEFAULT:u,diedParticles:d},reset:function(t){o.copy(this,t),this.particle.system=this,this.totalTime<=0&&(this.totalTime=1/0)},onUpdate:function(i){i*=.001,this._isRun&&(this._totalRunTime+=i,this._currentRunTime+=i,this._currentRunTime>=this._emitTime&&(this._currentRunTime=0,this._emitTime=t(this.emitTime,this.emitTimeVar),this._emit()),this._totalRunTime>=this.totalTime&&this.stop())},_emit:function(){for(var i=t(this.emitNum,this.emitNumVar)>>0,s=0;s<i;s++)this.addChild(p.create(this.particle))},start:function(){this.stop(!0),this._currentRunTime=0,this._totalRunTime=0,this._isRun=!0,this._emitTime=t(this.emitTime,this.emitTimeVar)},stop:function(t){if(this._isRun=!1,t)for(var i=this.children.length-1;i>=0;i--)this.children[i].destroy()}}),p=h.create({Extends:a,constructor:function(t){this.id=this.id||t.id||e.getUid("Particle"),p.superclass.constructor.call(this,t),this.init(t)},onUpdate:function(t){if(t*=.001,this._died)return!1;var i=this.ax+this.system.gx,s=this.ay+this.system.gy;return this.vx+=i*t,this.vy+=s*t,this.x+=this.vx*t,this.y+=this.vy*t,this.rotation+=this.rotationV,this._time>.1&&(this.alpha+=this.alphaV),this.scale+=this.scaleV,this.scaleX=this.scaleY=this.scale,this._time+=t,this._time>=this.life||this.alpha<=0?(this.destroy(),!1):void 0},setImage:function(t,i){this.drawable=this.drawable||new n,i=i||[0,0,t.width,t.height],this.width=i[2],this.height=i[3],this.drawable.rect=i,this.drawable.image=t},destroy:function(){this._died=!0,this.alpha=0,this.removeFromParent(),d.push(this)},init:function(i){this.system=i.system,this._died=!1,this._time=0,this.alpha=1;for(var e=0,h=s.length;e<h;e++){var a=s[e],r=void 0===i[a]?u[a]:i[a];this[a]=t(r,i[a+"Var"])}if(this.x+=this.system.emitterX,this.y+=this.system.emitterY,i.image){var n=i.frame;n&&n[0].length&&(n=n[Math.random()*n.length>>0]),this.setImage(i.image,n),void 0!==i.pivotX&&(this.pivotX=i.pivotX*n[2]),void 0!==i.pivotY&&(this.pivotY=i.pivotY*n[3])}},Statics:{create:function(t){if(d.length>0){var i=d.pop();return i.init(t),i}return new p(t)}}});return v}();return m});