2013-10-02 19:18:24 +00:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
2015-03-23 23:46:30 +00:00
< title > Phaser Source: src/particles/arcade/Emitter.js< / title >
2013-10-02 19:18:24 +00:00
<!-- [if lt IE 9]>
< script src = "//html5shiv.googlecode.com/svn/trunk/html5.js" > < / script >
<![endif]-->
2014-11-15 20:01:46 +00:00
< link type = "text/css" rel = "stylesheet" href = "styles/default.css" >
2013-10-02 19:18:24 +00:00
< link type = "text/css" rel = "stylesheet" href = "styles/sunlight.default.css" >
< link type = "text/css" rel = "stylesheet" href = "styles/site.cerulean.css" >
< / head >
< body >
2014-11-25 00:23:44 +00:00
2013-10-02 19:18:24 +00:00
< div class = "container-fluid" >
< div class = "navbar navbar-fixed-top navbar-inverse" >
2014-11-25 00:23:44 +00:00
< div style = "position: absolute; width: 143px; height: 31px; right: 10px; top: 10px; z-index: 1050" > < a href = "http://phaser.io" > < img src = "img/phaser.png" border = "0" / > < / a > < / div >
2013-10-02 19:18:24 +00:00
< div class = "navbar-inner" >
2014-11-25 00:23:44 +00:00
< a class = "brand" href = "index.html" > Phaser API< / a >
2013-10-02 19:18:24 +00:00
< ul class = "nav" >
2014-11-25 00:23:44 +00:00
2013-10-02 19:18:24 +00:00
< li class = "dropdown" >
2013-10-03 01:38:35 +00:00
< a href = "namespaces.list.html" class = "dropdown-toggle" data-toggle = "dropdown" > Namespaces< b
2013-10-02 19:18:24 +00:00
class="caret">< / b > < / a >
< ul class = "dropdown-menu " >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-0" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.html" > Phaser< / a >
2013-10-02 19:18:24 +00:00
< / li >
2014-11-15 20:01:46 +00:00
< li class = "class-depth-0" >
< a href = "PIXI.html" > PIXI< / a >
< / li >
2013-10-02 19:18:24 +00:00
< / ul >
< / li >
< li class = "dropdown" >
< a href = "classes.list.html" class = "dropdown-toggle" data-toggle = "dropdown" > Classes< b
class="caret">< / b > < / a >
< ul class = "dropdown-menu " >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-0" >
< a href = "Matrix.html" > Matrix< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Animation.html" > Animation< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.AnimationManager.html" > AnimationManager< / a >
2013-10-02 19:18:24 +00:00
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.AnimationParser.html" > AnimationParser< / a >
2013-10-02 19:18:24 +00:00
< / li >
2014-04-29 14:39:02 +00:00
< li class = "class-depth-1" >
< a href = "Phaser.ArrayList.html" > ArrayList< / a >
< / li >
2014-11-25 00:23:44 +00:00
< li class = "class-depth-1" >
< a href = "Phaser.ArraySet.html" > ArraySet< / a >
< / li >
2014-11-15 20:01:46 +00:00
< li class = "class-depth-1" >
< a href = "Phaser.ArrayUtils.html" > ArrayUtils< / a >
< / li >
2014-10-09 15:12:53 +00:00
< li class = "class-depth-1" >
< a href = "Phaser.AudioSprite.html" > AudioSprite< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-11-28 15:57:09 +00:00
< a href = "Phaser.BitmapData.html" > BitmapData< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-25 15:54:40 +00:00
< a href = "Phaser.BitmapText.html" > BitmapText< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-25 15:54:40 +00:00
< a href = "Phaser.Button.html" > Button< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.Cache.html" > Cache< / a >
2013-10-02 19:18:24 +00:00
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.Camera.html" > Camera< / a >
2013-10-02 19:18:24 +00:00
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.Canvas.html" > Canvas< / a >
2013-10-02 19:18:24 +00:00
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.Circle.html" > Circle< / a >
2013-10-02 19:18:24 +00:00
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.Color.html" > Color< / a >
2013-10-03 00:21:08 +00:00
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-2" >
< a href = "Phaser.Component.Angle.html" > Angle< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.Animation.html" > Animation< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.AutoCull.html" > AutoCull< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.Bounds.html" > Bounds< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.BringToTop.html" > BringToTop< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.Core.html" > Core< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.Crop.html" > Crop< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.Delta.html" > Delta< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.Destroy.html" > Destroy< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.FixedToCamera.html" > FixedToCamera< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.Health.html" > Health< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.InCamera.html" > InCamera< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.InputEnabled.html" > InputEnabled< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.InWorld.html" > InWorld< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.LifeSpan.html" > LifeSpan< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.LoadTexture.html" > LoadTexture< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.Overlap.html" > Overlap< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.PhysicsBody.html" > PhysicsBody< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.Reset.html" > Reset< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.ScaleMinMax.html" > ScaleMinMax< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Component.Smoothed.html" > Smoothed< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.Device.html" > Device< / a >
2013-10-02 19:18:24 +00:00
< / li >
2014-11-15 20:01:46 +00:00
< li class = "class-depth-1" >
< a href = "Phaser.DOM.html" > DOM< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.Easing.html" > Easing< / a >
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-2" >
< a href = "Phaser.Easing.Back.html" > Back< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Easing.Bounce.html" > Bounce< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Easing.Circular.html" > Circular< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Easing.Cubic.html" > Cubic< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Easing.Elastic.html" > Elastic< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Easing.Exponential.html" > Exponential< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Easing.Linear.html" > Linear< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Easing.Quadratic.html" > Quadratic< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Easing.Quartic.html" > Quartic< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Easing.Quintic.html" > Quintic< / a >
< / li >
< li class = "class-depth-2" >
< a href = "Phaser.Easing.Sinusoidal.html" > Sinusoidal< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2014-02-18 03:01:51 +00:00
< a href = "Phaser.Ellipse.html" > Ellipse< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-25 15:54:40 +00:00
< a href = "Phaser.Events.html" > Events< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-11-28 15:57:09 +00:00
< a href = "Phaser.Filter.html" > Filter< / a >
< / li >
2014-09-09 14:36:56 +00:00
< li class = "class-depth-1" >
< a href = "Phaser.FlexGrid.html" > FlexGrid< / a >
< / li >
< li class = "class-depth-1" >
< a href = "Phaser.FlexLayer.html" > FlexLayer< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.Frame.html" > Frame< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.FrameData.html" > FrameData< / a >
2013-10-03 00:21:08 +00:00
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Game.html" > Game< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2014-02-21 15:37:26 +00:00
< a href = "Phaser.GameObjectCreator.html" > GameObjectCreator< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-25 15:54:40 +00:00
< a href = "Phaser.GameObjectFactory.html" > GameObjectFactory< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2014-02-05 06:29:17 +00:00
< a href = "Phaser.Gamepad.html" > Gamepad< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2014-02-05 06:29:17 +00:00
< a href = "Phaser.GamepadButton.html" > GamepadButton< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-25 15:54:40 +00:00
< a href = "Phaser.Graphics.html" > Graphics< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Group.html" > Group< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2014-02-08 07:24:22 +00:00
< a href = "Phaser.Image.html" > Image< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Input.html" > Input< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.InputHandler.html" > InputHandler< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Key.html" > Key< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Keyboard.html" > Keyboard< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2014-02-05 06:29:17 +00:00
< a href = "Phaser.Line.html" > Line< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.LinkedList.html" > LinkedList< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Loader.html" > Loader< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.LoaderParser.html" > LoaderParser< / a >
2013-10-02 19:18:24 +00:00
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Math.html" > Math< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Mouse.html" > Mouse< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.MSPointer.html" > MSPointer< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Net.html" > Net< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
< a href = "Phaser.Particle.html" > Particle< / a >
< / li >
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Particles.html" > Particles< / a >
< / li >
2014-10-09 15:12:53 +00:00
< li class = "class-depth-2" >
< a href = "Phaser.Particles.Arcade.html" > Arcade< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Particles.Arcade.Emitter.html" > Emitter< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-25 15:54:40 +00:00
< a href = "Phaser.Physics.html" > Physics< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-2" >
2013-10-25 15:54:40 +00:00
< a href = "Phaser.Physics.Arcade.html" > Arcade< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.Arcade.Body.html" > Body< / a >
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-3" >
< a href = "Phaser.Physics.Arcade.html#TilemapCollision" > TilemapCollision< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-2" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.Ninja.html" > Ninja< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.Ninja.AABB.html" > AABB< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.Ninja.Body.html" > Body< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.Ninja.Circle.html" > Circle< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.Ninja.Tile.html" > Tile< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-2" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.P2.html" > P2< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.P2.Body.html" > Body< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.P2.BodyDebug.html" > BodyDebug< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.P2.CollisionGroup.html" > CollisionGroup< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.P2.ContactMaterial.html" > ContactMaterial< / a >
2014-02-21 15:37:26 +00:00
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.P2.DistanceConstraint.html" > DistanceConstraint< / a >
2014-02-21 15:37:26 +00:00
< / li >
2014-04-11 12:09:28 +00:00
< li class = "class-depth-3" >
< a href = "Phaser.Physics.P2.FixtureList.html" > FixtureList< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.P2.GearConstraint.html" > GearConstraint< / a >
2014-02-21 15:37:26 +00:00
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.P2.InversePointProxy.html" > InversePointProxy< / a >
2014-02-21 15:37:26 +00:00
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.P2.LockConstraint.html" > LockConstraint< / a >
2014-02-21 15:37:26 +00:00
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.P2.Material.html" > Material< / a >
2014-02-21 15:37:26 +00:00
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.P2.PointProxy.html" > PointProxy< / a >
2014-02-21 15:37:26 +00:00
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.P2.PrismaticConstraint.html" > PrismaticConstraint< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.P2.RevoluteConstraint.html" > RevoluteConstraint< / a >
< / li >
2014-09-09 14:36:56 +00:00
< li class = "class-depth-3" >
< a href = "Phaser.Physics.P2.RotationalSpring.html" > RotationalSpring< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-3" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.Physics.P2.Spring.html" > Spring< / a >
2014-02-21 15:37:26 +00:00
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Plugin.html" > Plugin< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.PluginManager.html" > PluginManager< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Point.html" > Point< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Pointer.html" > Pointer< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-11-07 06:10:15 +00:00
< a href = "Phaser.Polygon.html" > Polygon< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.QuadTree.html" > QuadTree< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.RandomDataGenerator.html" > RandomDataGenerator< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Rectangle.html" > Rectangle< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-25 15:54:40 +00:00
< a href = "Phaser.RenderTexture.html" > RenderTexture< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 00:21:08 +00:00
< a href = "Phaser.RequestAnimationFrame.html" > RequestAnimationFrame< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.RetroFont.html" > RetroFont< / a >
< / li >
2014-09-09 14:36:56 +00:00
< li class = "class-depth-1" >
< a href = "Phaser.Rope.html" > Rope< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2014-03-14 06:36:05 +00:00
< a href = "Phaser.ScaleManager.html" > ScaleManager< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Signal.html" > Signal< / a >
< / li >
2014-04-11 12:09:28 +00:00
< li class = "class-depth-1" >
< a href = "Phaser.SignalBinding.html" > SignalBinding< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2014-02-05 06:29:17 +00:00
< a href = "Phaser.SinglePad.html" > SinglePad< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 00:21:08 +00:00
< a href = "Phaser.Sound.html" > Sound< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 00:21:08 +00:00
< a href = "Phaser.SoundManager.html" > SoundManager< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-25 15:54:40 +00:00
< a href = "Phaser.Sprite.html" > Sprite< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2014-02-18 03:01:51 +00:00
< a href = "Phaser.SpriteBatch.html" > SpriteBatch< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Stage.html" > Stage< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.State.html" > State< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.StateManager.html" > StateManager< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-25 15:54:40 +00:00
< a href = "Phaser.Text.html" > Text< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-11-28 15:57:09 +00:00
< a href = "Phaser.Tile.html" > Tile< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-11-28 15:57:09 +00:00
< a href = "Phaser.Tilemap.html" > Tilemap< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-11-28 15:57:09 +00:00
< a href = "Phaser.TilemapLayer.html" > TilemapLayer< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-11-28 15:57:09 +00:00
< a href = "Phaser.TilemapParser.html" > TilemapParser< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-11-28 15:57:09 +00:00
< a href = "Phaser.Tileset.html" > Tileset< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-25 15:54:40 +00:00
< a href = "Phaser.TileSprite.html" > TileSprite< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.Time.html" > Time< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-11-28 15:57:09 +00:00
< a href = "Phaser.Timer.html" > Timer< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2014-02-05 06:29:17 +00:00
< a href = "Phaser.TimerEvent.html" > TimerEvent< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.Touch.html" > Touch< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.Tween.html" > Tween< / a >
< / li >
2014-11-25 00:23:44 +00:00
< li class = "class-depth-1" >
< a href = "Phaser.TweenData.html" > TweenData< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.TweenManager.html" > TweenManager< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.Utils.html" > Utils< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-2" >
2013-10-03 01:38:35 +00:00
< a href = "Phaser.Utils.Debug.html" > Debug< / a >
< / li >
2014-04-10 22:13:43 +00:00
< li class = "class-depth-1" >
2013-10-02 19:18:24 +00:00
< a href = "Phaser.World.html" > World< / a >
< / li >
2014-11-15 20:01:46 +00:00
< li class = "class-depth-1" >
< a href = "PIXI.AbstractFilter.html" > AbstractFilter< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.BaseTexture.html" > BaseTexture< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.BitmapText.html" > BitmapText< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.CanvasBuffer.html" > CanvasBuffer< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.CanvasGraphics.html" > CanvasGraphics< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.CanvasMaskManager.html" > CanvasMaskManager< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.CanvasRenderer.html" > CanvasRenderer< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.CanvasTinter.html" > CanvasTinter< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.ComplexPrimitiveShader.html" > ComplexPrimitiveShader< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.DisplayObject.html" > DisplayObject< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.DisplayObjectContainer.html" > DisplayObjectContainer< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.Event.html" > Event< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.EventTarget.html" > EventTarget< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.FilterTexture.html" > FilterTexture< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.Graphics.html" > Graphics< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.GraphicsData.html" > GraphicsData< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.PIXI.html" > PIXI< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.PixiFastShader.html" > PixiFastShader< / a >
< / li >
< li class = "class-depth-1" >
< a href = "PIXI.PixiShader.html" > PixiShader< / a >
< / li >
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.PolyK.html" > PolyK< / a >
2014-11-15 20:01:46 +00:00
< / li >
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.PrimitiveShader.html" > PrimitiveShader< / a >
2014-11-15 20:01:46 +00:00
< / li >
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.RenderTexture.html" > RenderTexture< / a >
2014-11-15 20:01:46 +00:00
< / li >
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.Rope.html" > Rope< / a >
2014-11-15 20:01:46 +00:00
< / li >
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.Sprite.html" > Sprite< / a >
2014-11-15 20:01:46 +00:00
< / li >
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.SpriteBatch.html" > SpriteBatch< / a >
2014-11-15 20:01:46 +00:00
< / li >
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.Stage.html" > Stage< / a >
2014-11-15 20:01:46 +00:00
< / li >
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.Strip.html" > Strip< / a >
2014-11-15 20:01:46 +00:00
< / li >
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.StripShader.html" > StripShader< / a >
2014-11-15 20:01:46 +00:00
< / li >
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.Text.html" > Text< / a >
2014-11-15 20:01:46 +00:00
< / li >
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.Texture.html" > Texture< / a >
2014-11-15 20:01:46 +00:00
< / li >
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.TilingSprite.html" > TilingSprite< / a >
2014-11-15 20:01:46 +00:00
< / li >
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.VideoTexture.html" > VideoTexture< / a >
2014-11-15 20:01:46 +00:00
< / li >
2014-11-25 00:23:44 +00:00
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.WebGLBlendModeManager.html" > WebGLBlendModeManager< / a >
2014-11-25 00:23:44 +00:00
< / li >
2014-11-15 20:01:46 +00:00
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.WebGLFastSpriteBatch.html" > WebGLFastSpriteBatch< / a >
2014-11-15 20:01:46 +00:00
< / li >
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.WebGLFilterManager.html" > WebGLFilterManager< / a >
2014-11-15 20:01:46 +00:00
< / li >
< li class = "class-depth-1" >
2015-03-23 23:46:30 +00:00
< a href = "PIXI.WebGLRenderer.html" > WebGLRenderer< / a >
2014-11-15 20:01:46 +00:00
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-0" >
< a href = "RoundedRectangle.html" > RoundedRectangle< / a >
2014-11-15 20:01:46 +00:00
< / li >
2015-03-23 23:46:30 +00:00
< / ul >
< / li >
< li class = "dropdown" >
< a href = "global.html" class = "dropdown-toggle" data-toggle = "dropdown" > Global< b
class="caret">< / b > < / a >
< ul class = "dropdown-menu " >
< li class = "class-depth-0" >
< a href = "global.html#append" > append< / a >
2014-11-15 20:01:46 +00:00
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-0" >
< a href = "global.html#apply" > apply< / a >
2014-11-15 20:01:46 +00:00
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-0" >
< a href = "global.html#applyInverse" > applyInverse< / a >
2014-11-15 20:01:46 +00:00
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-0" >
< a href = "global.html#blendModes" > blendModes< / a >
2014-11-15 20:01:46 +00:00
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-0" >
< a href = "global.html#clone" > clone< / a >
2014-11-15 20:01:46 +00:00
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-0" >
< a href = "global.html#contains" > contains< / a >
2014-11-15 20:01:46 +00:00
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-0" >
< a href = "global.html#fromArray" > fromArray< / a >
2014-11-15 20:01:46 +00:00
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-0" >
< a href = "global.html#identity" > identity< / a >
2014-11-15 20:01:46 +00:00
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-0" >
< a href = "global.html#rotate" > rotate< / a >
2014-11-15 20:01:46 +00:00
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-0" >
< a href = "global.html#scale" > scale< / a >
2014-11-15 20:01:46 +00:00
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-0" >
< a href = "global.html#scaleModes" > scaleModes< / a >
2014-11-15 20:01:46 +00:00
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-0" >
< a href = "global.html#sort" > sort< / a >
2014-11-15 20:01:46 +00:00
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-0" >
< a href = "global.html#toArray" > toArray< / a >
2014-11-15 20:01:46 +00:00
< / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-0" >
< a href = "global.html#translate" > translate< / a >
2014-11-15 20:01:46 +00:00
< / li >
2013-10-02 19:18:24 +00:00
< / ul >
< / li >
2014-11-25 00:23:44 +00:00
2014-11-15 20:01:46 +00:00
< li class = "dropdown" >
2014-11-25 00:23:44 +00:00
< a href = "#" class = "dropdown-toggle" data-toggle = "dropdown" > Core< b class = "caret" > < / b > < / a >
< ul class = "dropdown-menu " >
2014-12-03 10:39:11 +00:00
< li class = "class-depth-1" > < a href = "Phaser.Game.html" > Game< / a > < / li >
2014-11-25 00:23:44 +00:00
< li class = "class-depth-1" > < a href = "Phaser.Group.html" > Group< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.World.html" > World< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Loader.html" > Loader< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Time.html" > Time< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Camera.html" > Camera< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.StateManager.html" > State Manager< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.TweenManager.html" > Tween Manager< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.SoundManager.html" > Sound Manager< / a > < / li >
2015-01-06 06:57:25 +00:00
< li class = "class-depth-1" > < a href = "Phaser.Input.html" > Input Manager< / a > < / li >
2014-11-25 00:23:44 +00:00
< li class = "class-depth-1" > < a href = "Phaser.ScaleManager.html" > Scale Manager< / a > < / li >
< / ul >
< / li >
2014-11-15 20:01:46 +00:00
2014-11-25 00:23:44 +00:00
< li class = "dropdown" >
< a href = "#" class = "dropdown-toggle" data-toggle = "dropdown" > Game Objects< b class = "caret" > < / b > < / a >
2014-11-15 20:01:46 +00:00
< ul class = "dropdown-menu " >
2014-11-25 00:23:44 +00:00
< li class = "class-depth-1" > < a href = "Phaser.GameObjectFactory.html" > Factory (game.add)< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.GameObjectCreator.html" > Creator (game.make)< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Sprite.html" > Sprite< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Image.html" > Image< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Sound.html" > Sound< / a > < / li >
2015-01-06 06:57:25 +00:00
< li class = "class-depth-1" > < a href = "Phaser.Particles.Arcade.Emitter.html" > Particle Emitter< / a > < / li >
2014-12-03 10:39:11 +00:00
< li class = "class-depth-1" > < a href = "Phaser.Particle.html" > Particle< / a > < / li >
2014-11-25 00:23:44 +00:00
< li class = "class-depth-1" > < a href = "Phaser.Text.html" > Text< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Tween.html" > Tween< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.BitmapText.html" > BitmapText< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Tilemap.html" > Tilemap< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.BitmapData.html" > BitmapData< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.RetroFont.html" > RetroFont< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Button.html" > Button< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Animation.html" > Animation< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Graphics.html" > Graphics< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.RenderTexture.html" > RenderTexture< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.TileSprite.html" > TileSprite< / a > < / li >
< / ul >
< / li >
< li class = "dropdown" >
< a href = "#" class = "dropdown-toggle" data-toggle = "dropdown" > Geometry< b class = "caret" > < / b > < / a >
< ul class = "dropdown-menu " >
< li class = "class-depth-1" > < a href = "Phaser.Circle.html" > Circle< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Rectangle.html" > Rectangle< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Point.html" > Point< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Line.html" > Line< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Ellipse.html" > Ellipse< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Polygon.html" > Polygon< / a > < / li >
< / ul >
< / li >
2014-11-15 20:01:46 +00:00
2014-11-25 00:23:44 +00:00
< li class = "dropdown" >
< a href = "#" class = "dropdown-toggle" data-toggle = "dropdown" > Physics< b class = "caret" > < / b > < / a >
< ul class = "dropdown-menu " >
< li class = "class-depth-1" > < a href = "Phaser.Physics.Arcade.html" > Arcade Physics< / a > < / li >
< li class = "class-depth-2" > < a href = "Phaser.Physics.Arcade.Body.html" > Body< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Physics.P2.html" > P2 Physics< / a > < / li >
< li class = "class-depth-2" > < a href = "Phaser.Physics.P2.Body.html" > Body< / a > < / li >
< li class = "class-depth-2" > < a href = "Phaser.Physics.P2.Spring.html" > Spring< / a > < / li >
< li class = "class-depth-2" > < a href = "Phaser.Physics.P2.CollisionGroup.html" > CollisionGroup< / a > < / li >
< li class = "class-depth-2" > < a href = "Phaser.Physics.P2.ContactMaterial.html" > ContactMaterial< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Physics.Ninja.html" > Ninja Physics< / a > < / li >
< li class = "class-depth-2" > < a href = "Phaser.Physics.Body.html" > Body< / a > < / li >
2014-11-15 20:01:46 +00:00
< / ul >
< / li >
2014-11-25 00:23:44 +00:00
< li class = "dropdown" >
< a href = "#" class = "dropdown-toggle" data-toggle = "dropdown" > Input< b class = "caret" > < / b > < / a >
< ul class = "dropdown-menu " >
< li class = "class-depth-1" > < a href = "Phaser.InputHandler.html" > Input Handler< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Pointer.html" > Pointer< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Mouse.html" > Mouse< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Keyboard.html" > Keyboard< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Key.html" > Key< / a > < / li >
< li class = "class-depth-1" > < a href = "Phaser.Gamepad.html" > Gamepad< / a > < / li >
< / ul >
< / li >
< li class = "dropdown" >
< a href = "#" class = "dropdown-toggle" data-toggle = "dropdown" > Community< b class = "caret" > < / b > < / a >
< ul class = "dropdown-menu " >
2015-03-26 02:55:18 +00:00
< li class = "class-depth-1" > < a href = "http://phaser.io" > Phaser Web Site< / a > < / li >
2014-11-25 00:23:44 +00:00
< li class = "class-depth-1" > < a href = "https://github.com/photonstorm/phaser" > Phaser Github< / a > < / li >
2015-03-26 02:55:18 +00:00
< li class = "class-depth-1" > < a href = "http://phaser.io/examples" > Phaser Examples< / a > < / li >
2014-11-25 00:23:44 +00:00
< li class = "class-depth-1" > < a href = "https://github.com/photonstorm/phaser-plugins" > Phaser Plugins< / a > < / li >
< li class = "class-depth-1" > < a href = "http://www.html5gamedevs.com/forum/14-phaser/" > Forum< / a > < / li >
< li class = "class-depth-1" > < a href = "http://stackoverflow.com/questions/tagged/phaser-framework" > Stack Overflow< / a > < / li >
2015-03-26 02:55:18 +00:00
< li class = "class-depth-1" > < a href = "http://phaser.io/learn" > Weekly Coding Tips< / a > < / li >
2014-11-25 00:23:44 +00:00
< li class = "class-depth-1" > < a href = "https://confirmsubscription.com/h/r/369DE48E3E86AF1E" > Newsletter< / a > < / li >
2015-03-26 02:55:18 +00:00
< li class = "class-depth-1" > < a href = "http://phaser.io/community/twitter" > Twitter< / a > < / li >
< li class = "class-depth-1" > < a href = "http://phaser.io/community/irc" > IRC< / a > < / li >
2015-03-23 23:46:30 +00:00
< li class = "class-depth-1" > < a href = "https://www.gittip.com/photonstorm/" > Donate to the project< / a > < / li >
< li class = "class-depth-1" > < a href = "https://www.codeandweb.com/texturepacker/phaser" > Texture Packer< / a > < / li >
2014-11-25 00:23:44 +00:00
< / ul >
< / li >
2013-10-02 19:18:24 +00:00
< / ul >
< / div >
< / div >
< div class = "row-fluid" >
< div class = "span12" >
< div id = "main" >
2015-03-23 23:46:30 +00:00
< h1 class = "page-title" > Source: src/particles/arcade/Emitter.js< / h1 >
2013-10-02 19:18:24 +00:00
< section >
< article >
< pre class = "sunlight-highlight-javascript linenums" > /**
* @author Richard Davey < rich@photonstorm.com>
2015-03-23 23:46:30 +00:00
* @copyright 2015 Photon Storm Ltd.
2013-10-02 19:18:24 +00:00
* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
*/
/**
2014-10-09 15:12:53 +00:00
* Emitter is a lightweight particle emitter that uses Arcade Physics.
2014-07-10 19:31:11 +00:00
* It can be used for one-time explosions or for continuous effects like rain and fire.
2014-10-09 15:12:53 +00:00
* All it really does is launch Particle objects out at set intervals, and fixes their positions and velocities accordingly.
2014-07-10 19:31:11 +00:00
*
2014-10-09 15:12:53 +00:00
* @class Phaser.Particles.Arcade.Emitter
2013-10-02 19:18:24 +00:00
* @constructor
* @extends Phaser.Group
* @param {Phaser.Game} game - Current game instance.
2013-10-03 00:21:08 +00:00
* @param {number} [x=0] - The x coordinate within the Emitter that the particles are emitted from.
* @param {number} [y=0] - The y coordinate within the Emitter that the particles are emitted from.
2014-07-10 19:31:11 +00:00
* @param {number} [maxParticles=50] - The total number of particles in this emitter.
2013-10-02 19:18:24 +00:00
*/
Phaser.Particles.Arcade.Emitter = function (game, x, y, maxParticles) {
/**
2014-07-10 19:31:11 +00:00
* @property {number} maxParticles - The total number of particles in this emitter.
2013-10-02 19:18:24 +00:00
* @default
*/
2013-11-28 15:57:09 +00:00
this.maxParticles = maxParticles || 50;
2013-10-02 19:18:24 +00:00
2013-11-28 15:57:09 +00:00
Phaser.Group.call(this, game);
2013-10-02 19:18:24 +00:00
/**
2014-04-10 22:13:43 +00:00
* @property {string} name - A handy string name for this emitter. Can be set to anything.
2013-11-28 15:57:09 +00:00
*/
2013-10-02 19:18:24 +00:00
this.name = 'emitter' + this.game.particles.ID++;
/**
2014-02-05 06:29:17 +00:00
* @property {number} type - Internal Phaser Type value.
* @protected
2013-11-28 15:57:09 +00:00
*/
2013-10-02 19:18:24 +00:00
this.type = Phaser.EMITTER;
2015-03-23 23:46:30 +00:00
/**
* @property {number} physicsType - The const physics body type of this object.
* @readonly
*/
this.physicsType = Phaser.GROUP;
2013-10-02 19:18:24 +00:00
/**
2014-07-10 19:31:11 +00:00
* @property {Phaser.Rectangle} area - The area of the emitter. Particles can be randomly generated from anywhere within this rectangle.
2013-10-02 19:18:24 +00:00
* @default
*/
2014-07-10 19:31:11 +00:00
this.area = new Phaser.Rectangle(x, y, 1, 1);
2013-10-02 19:18:24 +00:00
/**
2014-02-05 06:29:17 +00:00
* @property {Phaser.Point} minParticleSpeed - The minimum possible velocity of a particle.
* @default
2013-10-02 19:18:24 +00:00
*/
this.minParticleSpeed = new Phaser.Point(-100, -100);
/**
2014-02-05 06:29:17 +00:00
* @property {Phaser.Point} maxParticleSpeed - The maximum possible velocity of a particle.
* @default
2013-10-02 19:18:24 +00:00
*/
this.maxParticleSpeed = new Phaser.Point(100, 100);
/**
2014-04-10 22:13:43 +00:00
* @property {number} minParticleScale - The minimum possible scale of a particle. This is applied to the X and Y axis. If you need to control each axis see minParticleScaleX.
2013-10-02 19:18:24 +00:00
* @default
*/
this.minParticleScale = 1;
/**
2014-04-10 22:13:43 +00:00
* @property {number} maxParticleScale - The maximum possible scale of a particle. This is applied to the X and Y axis. If you need to control each axis see maxParticleScaleX.
2013-11-28 15:57:09 +00:00
* @default
*/
2013-10-02 19:18:24 +00:00
this.maxParticleScale = 1;
2014-04-10 22:13:43 +00:00
/**
* @property {array} scaleData - An array of the calculated scale easing data applied to particles with scaleRates > 0.
*/
this.scaleData = null;
2013-10-02 19:18:24 +00:00
/**
2014-02-05 06:29:17 +00:00
* @property {number} minRotation - The minimum possible angular velocity of a particle.
2013-11-28 15:57:09 +00:00
* @default
*/
2013-10-02 19:18:24 +00:00
this.minRotation = -360;
/**
2014-02-05 06:29:17 +00:00
* @property {number} maxRotation - The maximum possible angular velocity of a particle.
2013-11-28 15:57:09 +00:00
* @default
*/
2013-10-02 19:18:24 +00:00
this.maxRotation = 360;
2014-04-10 22:13:43 +00:00
/**
* @property {number} minParticleAlpha - The minimum possible alpha value of a particle.
* @default
*/
this.minParticleAlpha = 1;
/**
* @property {number} maxParticleAlpha - The maximum possible alpha value of a particle.
* @default
*/
this.maxParticleAlpha = 1;
/**
* @property {array} alphaData - An array of the calculated alpha easing data applied to particles with alphaRates > 0.
*/
this.alphaData = null;
2013-10-02 19:18:24 +00:00
/**
2014-02-05 06:29:17 +00:00
* @property {number} gravity - Sets the `body.gravity.y` of each particle sprite to this value on launch.
2013-11-28 15:57:09 +00:00
* @default
*/
2014-02-05 06:29:17 +00:00
this.gravity = 100;
2013-10-02 19:18:24 +00:00
/**
2014-04-10 22:13:43 +00:00
* @property {any} particleClass - For emitting your own particle class types. They must extend Phaser.Particle.
2013-11-28 15:57:09 +00:00
* @default
*/
2014-04-10 22:13:43 +00:00
this.particleClass = Phaser.Particle;
2013-10-02 19:18:24 +00:00
/**
2014-03-24 12:41:45 +00:00
* @property {Phaser.Point} particleDrag - The X and Y drag component of particles launched from the emitter.
2013-11-28 15:57:09 +00:00
*/
2014-03-24 12:41:45 +00:00
this.particleDrag = new Phaser.Point();
2013-10-02 19:18:24 +00:00
/**
2014-02-05 06:29:17 +00:00
* @property {number} angularDrag - The angular drag component of particles launched from the emitter if they are rotating.
2013-11-28 15:57:09 +00:00
* @default
*/
2013-10-02 19:18:24 +00:00
this.angularDrag = 0;
/**
2015-01-06 06:57:25 +00:00
* @property {number} frequency - How often a particle is emitted in ms (if emitter is started with Explode === false).
2013-11-28 15:57:09 +00:00
* @default
*/
2013-10-02 19:18:24 +00:00
this.frequency = 100;
/**
2014-02-05 06:29:17 +00:00
* @property {number} lifespan - How long each particle lives once it is emitted in ms. Default is 2 seconds. Set lifespan to 'zero' for particles to live forever.
2013-11-28 15:57:09 +00:00
* @default
*/
2013-10-02 19:18:24 +00:00
this.lifespan = 2000;
/**
2014-04-10 22:13:43 +00:00
* @property {Phaser.Point} bounce - How much each particle should bounce on each axis. 1 = full bounce, 0 = no bounce.
2013-11-28 15:57:09 +00:00
*/
2013-10-02 19:18:24 +00:00
this.bounce = new Phaser.Point();
/**
2014-04-10 22:13:43 +00:00
* @property {boolean} on - Determines whether the emitter is currently emitting particles. It is totally safe to directly toggle this.
* @default
2013-11-28 15:57:09 +00:00
*/
2014-04-10 22:13:43 +00:00
this.on = false;
2013-10-02 19:18:24 +00:00
2013-11-28 15:57:09 +00:00
/**
2014-04-10 22:13:43 +00:00
* @property {Phaser.Point} particleAnchor - When a particle is created its anchor will be set to match this Point object (defaults to x/y: 0.5 to aid in rotation)
* @default
2013-11-28 15:57:09 +00:00
*/
2014-04-10 22:13:43 +00:00
this.particleAnchor = new Phaser.Point(0.5, 0.5);
2013-10-02 19:18:24 +00:00
/**
2014-04-10 22:13:43 +00:00
* @property {number} blendMode - The blendMode as set on the particle when emitted from the Emitter. Defaults to NORMAL. Needs browser capable of supporting canvas blend-modes (most not available in WebGL)
* @default
*/
this.blendMode = Phaser.blendModes.NORMAL;
/**
* The point the particles are emitted from.
* Emitter.x and Emitter.y control the containers location, which updates all current particles
* Emitter.emitX and Emitter.emitY control the emission location relative to the x/y position.
* @property {number} emitX
*/
this.emitX = x;
/**
* The point the particles are emitted from.
* Emitter.x and Emitter.y control the containers location, which updates all current particles
* Emitter.emitX and Emitter.emitY control the emission location relative to the x/y position.
* @property {number} emitY
*/
this.emitY = y;
/**
* @property {boolean} autoScale - When a new Particle is emitted this controls if it will automatically scale in size. Use Emitter.setScale to configure.
*/
this.autoScale = false;
/**
* @property {boolean} autoAlpha - When a new Particle is emitted this controls if it will automatically change alpha. Use Emitter.setAlpha to configure.
*/
this.autoAlpha = false;
/**
* @property {boolean} particleBringToTop - If this is `true` then when the Particle is emitted it will be bought to the top of the Emitters display list.
* @default
*/
this.particleBringToTop = false;
/**
* @property {boolean} particleSendToBack - If this is `true` then when the Particle is emitted it will be sent to the back of the Emitters display list.
* @default
*/
this.particleSendToBack = false;
/**
* @property {Phaser.Point} _minParticleScale - Internal particle scale var.
2013-11-28 15:57:09 +00:00
* @private
*/
2014-04-10 22:13:43 +00:00
this._minParticleScale = new Phaser.Point(1, 1);
2013-10-02 19:18:24 +00:00
/**
2014-04-10 22:13:43 +00:00
* @property {Phaser.Point} _maxParticleScale - Internal particle scale var.
2013-11-28 15:57:09 +00:00
* @private
*/
2014-04-10 22:13:43 +00:00
this._maxParticleScale = new Phaser.Point(1, 1);
2013-10-02 19:18:24 +00:00
2014-03-14 06:36:05 +00:00
/**
2014-04-10 22:13:43 +00:00
* @property {number} _quantity - Internal helper for deciding how many particles to launch.
2014-03-14 06:36:05 +00:00
* @private
*/
2014-04-10 22:13:43 +00:00
this._quantity = 0;
2014-03-14 06:36:05 +00:00
2013-10-02 19:18:24 +00:00
/**
2014-04-10 22:13:43 +00:00
* @property {number} _timer - Internal helper for deciding when to launch particles or kill them.
* @private
2013-11-28 15:57:09 +00:00
*/
2014-04-10 22:13:43 +00:00
this._timer = 0;
2013-10-02 19:18:24 +00:00
/**
2014-04-10 22:13:43 +00:00
* @property {number} _counter - Internal counter for figuring out how many particles to launch.
* @private
2013-11-28 15:57:09 +00:00
*/
2014-04-10 22:13:43 +00:00
this._counter = 0;
2013-10-02 19:18:24 +00:00
2015-03-23 23:46:30 +00:00
/**
* @property {number} _flowQuantity - Internal counter for figuring out how many particles to launch per flow update.
* @private
*/
this._flowQuantity = 0;
/**
* @property {number} _flowTotal - Internal counter for figuring out how many particles to launch in total.
* @private
*/
this._flowTotal = 0;
2013-10-02 19:18:24 +00:00
/**
2014-04-10 22:13:43 +00:00
* @property {boolean} _explode - Internal helper for the style of particle emission (all at once, or one at a time).
* @private
2013-11-28 15:57:09 +00:00
*/
2014-04-10 22:13:43 +00:00
this._explode = true;
2014-03-28 01:42:49 +00:00
2013-10-02 19:18:24 +00:00
/**
2014-04-10 22:13:43 +00:00
* @property {any} _frames - Internal helper for the particle frame.
* @private
2013-11-28 15:57:09 +00:00
*/
2014-04-10 22:13:43 +00:00
this._frames = null;
2014-03-24 12:41:45 +00:00
2013-10-02 19:18:24 +00:00
};
Phaser.Particles.Arcade.Emitter.prototype = Object.create(Phaser.Group.prototype);
Phaser.Particles.Arcade.Emitter.prototype.constructor = Phaser.Particles.Arcade.Emitter;
/**
* Called automatically by the game loop, decides when to launch particles and when to "die".
2015-01-06 06:57:25 +00:00
*
2013-10-02 19:18:24 +00:00
* @method Phaser.Particles.Arcade.Emitter#update
*/
Phaser.Particles.Arcade.Emitter.prototype.update = function () {
2015-03-23 23:46:30 +00:00
if (this.on & & this.game.time.time >= this._timer)
2013-10-02 19:18:24 +00:00
{
2015-01-06 06:57:25 +00:00
this._timer = this.game.time.time + this.frequency * this.game.time.slowMotion;
2013-10-02 19:18:24 +00:00
2015-03-23 23:46:30 +00:00
if (this._flowTotal !== 0)
2013-10-02 19:18:24 +00:00
{
2015-03-23 23:46:30 +00:00
if (this._flowQuantity > 0)
2013-11-28 15:57:09 +00:00
{
2015-03-23 23:46:30 +00:00
for (var i = 0; i < this._flowQuantity; i++)
{
if (this.emitParticle())
{
this._counter++;
if (this._flowTotal !== -1 & & this._counter >= this._flowTotal)
{
this.on = false;
break;
}
}
}
}
else
{
if (this.emitParticle())
{
this._counter++;
if (this._flowTotal !== -1 & & this._counter >= this._flowTotal)
{
this.on = false;
}
}
2013-11-28 15:57:09 +00:00
}
2013-10-02 19:18:24 +00:00
}
2015-03-23 23:46:30 +00:00
else
{
if (this.emitParticle())
{
this._counter++;
if (this._quantity > 0 & & this._counter >= this._quantity)
{
this.on = false;
}
}
}
2013-10-02 19:18:24 +00:00
}
2014-04-10 22:13:43 +00:00
var i = this.children.length;
while (i--)
{
if (this.children[i].exists)
{
this.children[i].update();
}
}
2014-03-28 01:42:49 +00:00
};
2013-10-02 19:18:24 +00:00
/**
2014-04-10 22:13:43 +00:00
* This function generates a new set of particles for use by this emitter.
* The particles are stored internally waiting to be emitted via Emitter.start.
2013-10-02 19:18:24 +00:00
*
* @method Phaser.Particles.Arcade.Emitter#makeParticles
2014-02-05 06:29:17 +00:00
* @param {array|string} keys - A string or an array of strings that the particle sprites will use as their texture. If an array one is picked at random.
2014-04-10 22:13:43 +00:00
* @param {array|number} [frames=0] - A frame number, or array of frames that the sprite will use. If an array one is picked at random.
2015-01-06 06:57:25 +00:00
* @param {number} [quantity] - The number of particles to generate. If not given it will use the value of Emitter.maxParticles. If the value is greater than Emitter.maxParticles it will use Emitter.maxParticles as the quantity.
2014-04-10 22:13:43 +00:00
* @param {boolean} [collide=false] - If you want the particles to be able to collide with other Arcade Physics bodies then set this to true.
2014-02-05 06:29:17 +00:00
* @param {boolean} [collideWorldBounds=false] - A particle can be set to collide against the World bounds automatically and rebound back into the World if this is set to true. Otherwise it will leave the World.
* @return {Phaser.Particles.Arcade.Emitter} This Emitter instance.
2013-10-02 19:18:24 +00:00
*/
Phaser.Particles.Arcade.Emitter.prototype.makeParticles = function (keys, frames, quantity, collide, collideWorldBounds) {
2014-02-05 06:29:17 +00:00
if (typeof frames === 'undefined') { frames = 0; }
if (typeof quantity === 'undefined') { quantity = this.maxParticles; }
if (typeof collide === 'undefined') { collide = false; }
if (typeof collideWorldBounds === 'undefined') { collideWorldBounds = false; }
2013-10-02 19:18:24 +00:00
var particle;
var i = 0;
var rndKey = keys;
2014-02-05 06:29:17 +00:00
var rndFrame = frames;
2014-03-14 06:36:05 +00:00
this._frames = frames;
2013-10-02 19:18:24 +00:00
2015-01-06 06:57:25 +00:00
if (quantity > this.maxParticles)
{
this.maxParticles = quantity;
}
2013-10-02 19:18:24 +00:00
while (i < quantity)
{
2014-05-20 09:12:48 +00:00
if (Array.isArray(keys))
2013-10-02 19:18:24 +00:00
{
2014-03-24 12:41:45 +00:00
rndKey = this.game.rnd.pick(keys);
}
2013-10-02 19:18:24 +00:00
2014-05-20 09:12:48 +00:00
if (Array.isArray(frames))
2014-03-24 12:41:45 +00:00
{
rndFrame = this.game.rnd.pick(frames);
2013-10-02 19:18:24 +00:00
}
2014-03-24 12:41:45 +00:00
particle = new this.particleClass(this.game, 0, 0, rndKey, rndFrame);
this.game.physics.arcade.enable(particle, false);
2013-10-02 19:18:24 +00:00
2014-02-05 06:29:17 +00:00
if (collide)
2013-10-02 19:18:24 +00:00
{
2014-02-05 06:29:17 +00:00
particle.body.checkCollision.any = true;
particle.body.checkCollision.none = false;
2013-10-02 19:18:24 +00:00
}
else
{
2014-02-05 06:29:17 +00:00
particle.body.checkCollision.none = true;
2013-10-02 19:18:24 +00:00
}
particle.body.collideWorldBounds = collideWorldBounds;
2014-11-15 20:01:46 +00:00
particle.body.skipQuadTree = true;
2013-10-02 19:18:24 +00:00
particle.exists = false;
particle.visible = false;
2014-04-10 22:13:43 +00:00
particle.anchor.copyFrom(this.particleAnchor);
2013-10-02 19:18:24 +00:00
this.add(particle);
i++;
}
return this;
2014-03-24 12:41:45 +00:00
2014-03-28 01:42:49 +00:00
};
2013-10-02 19:18:24 +00:00
/**
2014-02-05 06:29:17 +00:00
* Call this function to turn off all the particles and the emitter.
2014-04-10 22:13:43 +00:00
*
2014-02-05 06:29:17 +00:00
* @method Phaser.Particles.Arcade.Emitter#kill
*/
2013-10-02 19:18:24 +00:00
Phaser.Particles.Arcade.Emitter.prototype.kill = function () {
this.on = false;
this.alive = false;
this.exists = false;
2014-03-28 01:42:49 +00:00
};
2013-10-02 19:18:24 +00:00
/**
2014-02-05 06:29:17 +00:00
* Handy for bringing game objects "back to life". Just sets alive and exists back to true.
2014-04-10 22:13:43 +00:00
*
2014-02-05 06:29:17 +00:00
* @method Phaser.Particles.Arcade.Emitter#revive
*/
2013-10-02 19:18:24 +00:00
Phaser.Particles.Arcade.Emitter.prototype.revive = function () {
this.alive = true;
this.exists = true;
2014-03-28 01:42:49 +00:00
};
2013-10-02 19:18:24 +00:00
2014-07-10 19:31:11 +00:00
/**
* Call this function to emit the given quantity of particles at all once (an explosion)
*
* @method Phaser.Particles.Arcade.Emitter#explode
* @param {number} [lifespan=0] - How long each particle lives once emitted in ms. 0 = forever.
* @param {number} [quantity=0] - How many particles to launch.
*/
Phaser.Particles.Arcade.Emitter.prototype.explode = function (lifespan, quantity) {
2015-03-23 23:46:30 +00:00
this._flowTotal = 0;
2014-07-10 19:31:11 +00:00
this.start(true, lifespan, 0, quantity, false);
};
/**
* Call this function to start emitting a flow of particles at the given frequency.
2015-03-23 23:46:30 +00:00
* It will carry on going until the total given is reached.
* Each time the flow is run the quantity number of particles will be emitted together.
* If you set the total to be 20 and quantity to be 5 then flow will emit 4 times in total (4 x 5 = 20 total)
* If you set the total to be -1 then no quantity cap is used and it will keep emitting.
2014-07-10 19:31:11 +00:00
*
* @method Phaser.Particles.Arcade.Emitter#flow
* @param {number} [lifespan=0] - How long each particle lives once emitted in ms. 0 = forever.
2015-03-23 23:46:30 +00:00
* @param {number} [frequency=250] - Frequency is how often to emit the particles, given in ms.
* @param {number} [quantity=1] - How many particles to launch each time the frequency is met. Can never be > Emitter.maxParticles.
* @param {number} [total=-1] - How many particles to launch in total. If -1 it will carry on indefinitely.
* @param {boolean} [immediate=true] - Should the flow start immediately (true) or wait until the first frequency event? (false)
2014-07-10 19:31:11 +00:00
*/
2015-03-23 23:46:30 +00:00
Phaser.Particles.Arcade.Emitter.prototype.flow = function (lifespan, frequency, quantity, total, immediate) {
if (typeof quantity === 'undefined' || quantity === 0) { quantity = 1; }
if (typeof total === 'undefined') { total = -1; }
if (typeof immediate === 'undefined') { immediate = true; }
if (quantity > this.maxParticles)
{
quantity = this.maxParticles;
}
this._counter = 0;
this._flowQuantity = quantity;
this._flowTotal = total;
if (immediate)
{
this.start(true, lifespan, frequency, quantity);
2014-07-10 19:31:11 +00:00
2015-03-23 23:46:30 +00:00
this._counter += quantity;
this.on = true;
this._timer = this.game.time.time + frequency * this.game.time.slowMotion;
}
else
{
this.start(false, lifespan, frequency, quantity);
}
2014-07-10 19:31:11 +00:00
};
2013-10-02 19:18:24 +00:00
/**
2014-02-05 06:29:17 +00:00
* Call this function to start emitting particles.
2014-07-10 19:31:11 +00:00
*
2014-02-05 06:29:17 +00:00
* @method Phaser.Particles.Arcade.Emitter#start
2014-04-10 22:13:43 +00:00
* @param {boolean} [explode=true] - Whether the particles should all burst out at once (true) or at the frequency given (false).
* @param {number} [lifespan=0] - How long each particle lives once emitted in ms. 0 = forever.
* @param {number} [frequency=250] - Ignored if Explode is set to true. Frequency is how often to emit 1 particle. Value given in ms.
2015-01-06 06:57:25 +00:00
* @param {number} [quantity=0] - How many particles to launch. 0 = "all of the particles" which will keep emitting until Emitter.maxParticles is reached.
* @param {number} [forceQuantity=false] - If `true` and creating a particle flow, the quantity emitted will be forced to the be quantity given in this call. This can never exceed Emitter.maxParticles.
2014-02-05 06:29:17 +00:00
*/
2014-07-10 19:31:11 +00:00
Phaser.Particles.Arcade.Emitter.prototype.start = function (explode, lifespan, frequency, quantity, forceQuantity) {
2013-10-02 19:18:24 +00:00
2014-02-05 06:29:17 +00:00
if (typeof explode === 'undefined') { explode = true; }
if (typeof lifespan === 'undefined') { lifespan = 0; }
2014-04-10 22:13:43 +00:00
if (typeof frequency === 'undefined' || frequency === null) { frequency = 250; }
2014-02-05 06:29:17 +00:00
if (typeof quantity === 'undefined') { quantity = 0; }
2014-07-10 19:31:11 +00:00
if (typeof forceQuantity === 'undefined') { forceQuantity = false; }
2013-10-02 19:18:24 +00:00
2015-01-06 06:57:25 +00:00
if (quantity > this.maxParticles)
{
quantity = this.maxParticles;
}
2013-10-02 19:18:24 +00:00
this.revive();
this.visible = true;
this.lifespan = lifespan;
this.frequency = frequency;
2014-07-10 19:31:11 +00:00
if (explode || forceQuantity)
2013-10-02 19:18:24 +00:00
{
2014-11-15 20:01:46 +00:00
for (var i = 0; i < quantity; i++)
{
this.emitParticle();
}
2013-10-02 19:18:24 +00:00
}
else
{
2014-11-15 20:01:46 +00:00
this.on = true;
2013-10-02 19:18:24 +00:00
this._quantity += quantity;
2014-11-15 20:01:46 +00:00
this._counter = 0;
this._timer = this.game.time.time + frequency * this.game.time.slowMotion;
2013-10-02 19:18:24 +00:00
}
2014-03-28 01:42:49 +00:00
};
2013-10-02 19:18:24 +00:00
/**
2014-04-10 22:13:43 +00:00
* This function can be used both internally and externally to emit the next particle in the queue.
*
2014-02-05 06:29:17 +00:00
* @method Phaser.Particles.Arcade.Emitter#emitParticle
2015-01-06 06:57:25 +00:00
* @return {boolean} True if a particle was emitted, otherwise false.
2014-02-05 06:29:17 +00:00
*/
2013-10-02 19:18:24 +00:00
Phaser.Particles.Arcade.Emitter.prototype.emitParticle = function () {
var particle = this.getFirstExists(false);
2014-04-10 22:13:43 +00:00
if (particle === null)
2013-10-02 19:18:24 +00:00
{
2015-01-06 06:57:25 +00:00
return false;
2013-10-02 19:18:24 +00:00
}
if (this.width > 1 || this.height > 1)
{
2013-11-28 15:57:09 +00:00
particle.reset(this.game.rnd.integerInRange(this.left, this.right), this.game.rnd.integerInRange(this.top, this.bottom));
2013-10-02 19:18:24 +00:00
}
else
{
2013-11-28 15:57:09 +00:00
particle.reset(this.emitX, this.emitY);
2013-10-02 19:18:24 +00:00
}
2014-04-10 22:13:43 +00:00
particle.angle = 0;
2013-10-02 19:18:24 +00:00
particle.lifespan = this.lifespan;
2014-04-10 22:13:43 +00:00
if (this.particleBringToTop)
2013-10-02 19:18:24 +00:00
{
2014-04-10 22:13:43 +00:00
this.bringToTop(particle);
2013-10-02 19:18:24 +00:00
}
2014-04-10 22:13:43 +00:00
else if (this.particleSendToBack)
2013-10-02 19:18:24 +00:00
{
2014-04-10 22:13:43 +00:00
this.sendToBack(particle);
2013-10-02 19:18:24 +00:00
}
2014-04-10 22:13:43 +00:00
if (this.autoScale)
2013-10-02 19:18:24 +00:00
{
2014-04-10 22:13:43 +00:00
particle.setScaleData(this.scaleData);
2013-10-02 19:18:24 +00:00
}
2014-04-29 14:39:02 +00:00
else if (this.minParticleScale !== 1 || this.maxParticleScale !== 1)
2013-10-02 19:18:24 +00:00
{
2014-04-10 22:13:43 +00:00
particle.scale.set(this.game.rnd.realInRange(this.minParticleScale, this.maxParticleScale));
}
else if ((this._minParticleScale.x !== this._maxParticleScale.x) || (this._minParticleScale.y !== this._maxParticleScale.y))
{
particle.scale.set(this.game.rnd.realInRange(this._minParticleScale.x, this._maxParticleScale.x), this.game.rnd.realInRange(this._minParticleScale.y, this._maxParticleScale.y));
2013-10-02 19:18:24 +00:00
}
2014-04-10 22:13:43 +00:00
if (Array.isArray(this._frames === 'object'))
2013-10-02 19:18:24 +00:00
{
2014-04-10 22:13:43 +00:00
particle.frame = this.game.rnd.pick(this._frames);
2013-10-02 19:18:24 +00:00
}
2014-04-10 22:13:43 +00:00
else
2013-10-02 19:18:24 +00:00
{
2014-04-10 22:13:43 +00:00
particle.frame = this._frames;
2013-10-02 19:18:24 +00:00
}
2014-04-10 22:13:43 +00:00
if (this.autoAlpha)
2014-03-14 06:36:05 +00:00
{
2014-04-10 22:13:43 +00:00
particle.setAlphaData(this.alphaData);
2014-03-14 06:36:05 +00:00
}
else
{
2014-04-10 22:13:43 +00:00
particle.alpha = this.game.rnd.realInRange(this.minParticleAlpha, this.maxParticleAlpha);
2014-03-14 06:36:05 +00:00
}
2014-04-10 22:13:43 +00:00
particle.blendMode = this.blendMode;
particle.body.updateBounds();
particle.body.bounce.setTo(this.bounce.x, this.bounce.y);
2015-03-26 02:38:46 +00:00
particle.body.velocity.x = this.game.rnd.between(this.minParticleSpeed.x, this.maxParticleSpeed.x);
particle.body.velocity.y = this.game.rnd.between(this.minParticleSpeed.y, this.maxParticleSpeed.y);
particle.body.angularVelocity = this.game.rnd.between(this.minRotation, this.maxRotation);
2014-04-10 22:13:43 +00:00
2014-03-24 12:41:45 +00:00
particle.body.gravity.y = this.gravity;
2014-04-10 22:13:43 +00:00
2014-03-24 12:41:45 +00:00
particle.body.drag.x = this.particleDrag.x;
particle.body.drag.y = this.particleDrag.y;
2014-04-10 22:13:43 +00:00
2013-10-02 19:18:24 +00:00
particle.body.angularDrag = this.angularDrag;
2014-04-10 22:13:43 +00:00
particle.onEmit();
2015-01-06 06:57:25 +00:00
return true;
2014-03-28 01:42:49 +00:00
};
2013-10-02 19:18:24 +00:00
2015-03-26 02:38:46 +00:00
/**
* Destroys this Emitter, all associated child Particles and then removes itself from the Particle Manager.
*
* @method Phaser.Particles.Arcade.Emitter#destroy
*/
Phaser.Particles.Arcade.Emitter.prototype.destroy = function () {
this.game.particles.remove(this);
Phaser.Group.prototype.destroy.call(this, true, false);
};
2013-10-02 19:18:24 +00:00
/**
* A more compact way of setting the width and height of the emitter.
2014-07-10 19:31:11 +00:00
*
2013-10-02 19:18:24 +00:00
* @method Phaser.Particles.Arcade.Emitter#setSize
2014-02-05 06:29:17 +00:00
* @param {number} width - The desired width of the emitter (particles are spawned randomly within these dimensions).
* @param {number} height - The desired height of the emitter.
2013-10-02 19:18:24 +00:00
*/
Phaser.Particles.Arcade.Emitter.prototype.setSize = function (width, height) {
2014-07-10 19:31:11 +00:00
this.area.width = width;
this.area.height = height;
2013-10-02 19:18:24 +00:00
2014-03-28 01:42:49 +00:00
};
2013-10-02 19:18:24 +00:00
/**
* A more compact way of setting the X velocity range of the emitter.
* @method Phaser.Particles.Arcade.Emitter#setXSpeed
2014-02-05 06:29:17 +00:00
* @param {number} [min=0] - The minimum value for this range.
* @param {number} [max=0] - The maximum value for this range.
2013-10-02 19:18:24 +00:00
*/
Phaser.Particles.Arcade.Emitter.prototype.setXSpeed = function (min, max) {
2013-11-28 15:57:09 +00:00
min = min || 0;
max = max || 0;
2013-10-02 19:18:24 +00:00
this.minParticleSpeed.x = min;
this.maxParticleSpeed.x = max;
2014-03-28 01:42:49 +00:00
};
2013-10-02 19:18:24 +00:00
/**
* A more compact way of setting the Y velocity range of the emitter.
* @method Phaser.Particles.Arcade.Emitter#setYSpeed
2014-02-05 06:29:17 +00:00
* @param {number} [min=0] - The minimum value for this range.
* @param {number} [max=0] - The maximum value for this range.
2013-10-02 19:18:24 +00:00
*/
Phaser.Particles.Arcade.Emitter.prototype.setYSpeed = function (min, max) {
2013-11-28 15:57:09 +00:00
min = min || 0;
max = max || 0;
2013-10-02 19:18:24 +00:00
this.minParticleSpeed.y = min;
this.maxParticleSpeed.y = max;
2014-03-28 01:42:49 +00:00
};
2013-10-02 19:18:24 +00:00
/**
2014-04-10 22:13:43 +00:00
* A more compact way of setting the angular velocity constraints of the particles.
*
2013-10-02 19:18:24 +00:00
* @method Phaser.Particles.Arcade.Emitter#setRotation
2014-02-05 06:29:17 +00:00
* @param {number} [min=0] - The minimum value for this range.
* @param {number} [max=0] - The maximum value for this range.
2013-10-02 19:18:24 +00:00
*/
Phaser.Particles.Arcade.Emitter.prototype.setRotation = function (min, max) {
2013-11-28 15:57:09 +00:00
min = min || 0;
max = max || 0;
2013-10-02 19:18:24 +00:00
this.minRotation = min;
this.maxRotation = max;
2014-03-28 01:42:49 +00:00
};
2013-10-02 19:18:24 +00:00
2014-04-10 22:13:43 +00:00
/**
* A more compact way of setting the alpha constraints of the particles.
* The rate parameter, if set to a value above zero, lets you set the speed at which the Particle change in alpha from min to max.
* If rate is zero, which is the default, the particle won't change alpha - instead it will pick a random alpha between min and max on emit.
*
* @method Phaser.Particles.Arcade.Emitter#setAlpha
* @param {number} [min=1] - The minimum value for this range.
* @param {number} [max=1] - The maximum value for this range.
* @param {number} [rate=0] - The rate (in ms) at which the particles will change in alpha from min to max, or set to zero to pick a random alpha between the two.
2015-03-23 23:46:30 +00:00
* @param {function} [ease=Phaser.Easing.Linear.None] - If you've set a rate > 0 this is the easing formula applied between the min and max values.
2014-04-10 22:13:43 +00:00
* @param {boolean} [yoyo=false] - If you've set a rate > 0 you can set if the ease will yoyo or not (i.e. ease back to its original values)
*/
Phaser.Particles.Arcade.Emitter.prototype.setAlpha = function (min, max, rate, ease, yoyo) {
if (typeof min === 'undefined') { min = 1; }
if (typeof max === 'undefined') { max = 1; }
if (typeof rate === 'undefined') { rate = 0; }
if (typeof ease === 'undefined') { ease = Phaser.Easing.Linear.None; }
if (typeof yoyo === 'undefined') { yoyo = false; }
this.minParticleAlpha = min;
this.maxParticleAlpha = max;
this.autoAlpha = false;
2015-03-23 23:46:30 +00:00
if (rate > 0 & & min !== max)
2014-04-10 22:13:43 +00:00
{
var tweenData = { v: min };
var tween = this.game.make.tween(tweenData).to( { v: max }, rate, ease);
tween.yoyo(yoyo);
this.alphaData = tween.generateData(60);
// Inverse it so we don't have to do array length look-ups in Particle update loops
this.alphaData.reverse();
this.autoAlpha = true;
}
};
/**
* A more compact way of setting the scale constraints of the particles.
* The rate parameter, if set to a value above zero, lets you set the speed and ease which the Particle uses to change in scale from min to max across both axis.
* If rate is zero, which is the default, the particle won't change scale during update, instead it will pick a random scale between min and max on emit.
*
* @method Phaser.Particles.Arcade.Emitter#setScale
* @param {number} [minX=1] - The minimum value of Particle.scale.x.
* @param {number} [maxX=1] - The maximum value of Particle.scale.x.
* @param {number} [minY=1] - The minimum value of Particle.scale.y.
* @param {number} [maxY=1] - The maximum value of Particle.scale.y.
* @param {number} [rate=0] - The rate (in ms) at which the particles will change in scale from min to max, or set to zero to pick a random size between the two.
2015-03-23 23:46:30 +00:00
* @param {function} [ease=Phaser.Easing.Linear.None] - If you've set a rate > 0 this is the easing formula applied between the min and max values.
2014-04-10 22:13:43 +00:00
* @param {boolean} [yoyo=false] - If you've set a rate > 0 you can set if the ease will yoyo or not (i.e. ease back to its original values)
*/
Phaser.Particles.Arcade.Emitter.prototype.setScale = function (minX, maxX, minY, maxY, rate, ease, yoyo) {
if (typeof minX === 'undefined') { minX = 1; }
if (typeof maxX === 'undefined') { maxX = 1; }
if (typeof minY === 'undefined') { minY = 1; }
if (typeof maxY === 'undefined') { maxY = 1; }
if (typeof rate === 'undefined') { rate = 0; }
if (typeof ease === 'undefined') { ease = Phaser.Easing.Linear.None; }
if (typeof yoyo === 'undefined') { yoyo = false; }
// Reset these
this.minParticleScale = 1;
this.maxParticleScale = 1;
this._minParticleScale.set(minX, minY);
this._maxParticleScale.set(maxX, maxY);
this.autoScale = false;
2015-03-23 23:46:30 +00:00
if (rate > 0 & & ((minX !== maxX) || (minY !== maxY)))
2014-04-10 22:13:43 +00:00
{
var tweenData = { x: minX, y: minY };
var tween = this.game.make.tween(tweenData).to( { x: maxX, y: maxY }, rate, ease);
tween.yoyo(yoyo);
this.scaleData = tween.generateData(60);
// Inverse it so we don't have to do array length look-ups in Particle update loops
this.scaleData.reverse();
this.autoScale = true;
}
};
2013-10-02 19:18:24 +00:00
/**
2014-02-05 06:29:17 +00:00
* Change the emitters center to match the center of any object with a `center` property, such as a Sprite.
2014-04-10 22:13:43 +00:00
* If the object doesn't have a center property it will be set to object.x + object.width / 2
*
2013-10-02 19:18:24 +00:00
* @method Phaser.Particles.Arcade.Emitter#at
2014-04-10 22:13:43 +00:00
* @param {object|Phaser.Sprite|Phaser.Image|Phaser.TileSprite|Phaser.Text|PIXI.DisplayObject} object - The object that you wish to match the center with.
2013-10-02 19:18:24 +00:00
*/
Phaser.Particles.Arcade.Emitter.prototype.at = function (object) {
2014-02-05 06:29:17 +00:00
if (object.center)
{
this.emitX = object.center.x;
this.emitY = object.center.y;
}
2014-04-10 22:13:43 +00:00
else
{
this.emitX = object.world.x + (object.anchor.x * object.width);
this.emitY = object.world.y + (object.anchor.y * object.height);
}
2013-10-02 19:18:24 +00:00
2014-03-28 01:42:49 +00:00
};
2013-10-02 19:18:24 +00:00
2014-07-10 19:31:11 +00:00
/**
* @name Phaser.Particles.Arcade.Emitter#width
* @property {number} width - Gets or sets the width of the Emitter. This is the region in which a particle can be emitted.
*/
Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "width", {
get: function () {
return this.area.width;
},
set: function (value) {
this.area.width = value;
}
});
/**
* @name Phaser.Particles.Arcade.Emitter#height
* @property {number} height - Gets or sets the height of the Emitter. This is the region in which a particle can be emitted.
*/
Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "height", {
get: function () {
return this.area.height;
},
set: function (value) {
this.area.height = value;
}
});
2013-10-02 19:18:24 +00:00
/**
* @name Phaser.Particles.Arcade.Emitter#x
* @property {number} x - Gets or sets the x position of the Emitter.
*/
Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "x", {
get: function () {
return this.emitX;
},
set: function (value) {
this.emitX = value;
}
});
/**
* @name Phaser.Particles.Arcade.Emitter#y
* @property {number} y - Gets or sets the y position of the Emitter.
*/
Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "y", {
get: function () {
return this.emitY;
},
set: function (value) {
this.emitY = value;
}
});
/**
* @name Phaser.Particles.Arcade.Emitter#left
* @property {number} left - Gets the left position of the Emitter.
* @readonly
*/
Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "left", {
2014-03-28 01:42:49 +00:00
2013-10-02 19:18:24 +00:00
get: function () {
2014-07-10 19:31:11 +00:00
return Math.floor(this.x - (this.area.width / 2));
2013-10-02 19:18:24 +00:00
}
});
/**
* @name Phaser.Particles.Arcade.Emitter#right
* @property {number} right - Gets the right position of the Emitter.
* @readonly
*/
Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "right", {
2014-03-28 01:42:49 +00:00
2013-10-02 19:18:24 +00:00
get: function () {
2014-07-10 19:31:11 +00:00
return Math.floor(this.x + (this.area.width / 2));
2013-10-02 19:18:24 +00:00
}
});
/**
* @name Phaser.Particles.Arcade.Emitter#top
* @property {number} top - Gets the top position of the Emitter.
* @readonly
*/
Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "top", {
2014-03-28 01:42:49 +00:00
2013-10-02 19:18:24 +00:00
get: function () {
2014-07-10 19:31:11 +00:00
return Math.floor(this.y - (this.area.height / 2));
2013-10-02 19:18:24 +00:00
}
});
/**
* @name Phaser.Particles.Arcade.Emitter#bottom
* @property {number} bottom - Gets the bottom position of the Emitter.
* @readonly
*/
Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "bottom", {
2014-03-28 01:42:49 +00:00
2013-10-02 19:18:24 +00:00
get: function () {
2014-07-10 19:31:11 +00:00
return Math.floor(this.y + (this.area.height / 2));
2013-10-02 19:18:24 +00:00
}
});
< / pre >
< / article >
< / section >
< / div >
< div class = "clearfix" > < / div >
< footer >
< span class = "copyright" >
2015-03-23 23:46:30 +00:00
Phaser Copyright © 2012-2015 Photon Storm Ltd.
2013-10-02 19:18:24 +00:00
< / span >
< br / >
< span class = "jsdoc-message" >
2015-03-23 23:46:30 +00:00
Documentation generated by < a href = "https://github.com/jsdoc3/jsdoc" > JSDoc 3.3.0-alpha10< / a >
2015-03-26 02:55:18 +00:00
on Thu Mar 26 2015 02:53:48 GMT+0000 (GMT Standard Time) using the < a href = "https://github.com/terryweiss/docstrap" > DocStrap template< / a > .
2013-10-02 19:18:24 +00:00
< / span >
< / footer >
< / div >
< br clear = "both" >
< / div >
< / div >
< script src = "scripts/sunlight.js" > < / script >
< script src = "scripts/sunlight.javascript.js" > < / script >
< script src = "scripts/sunlight-plugin.doclinks.js" > < / script >
< script src = "scripts/sunlight-plugin.linenumbers.js" > < / script >
< script src = "scripts/sunlight-plugin.menu.js" > < / script >
< script src = "scripts/jquery.min.js" > < / script >
< script src = "scripts/jquery.scrollTo.js" > < / script >
< script src = "scripts/jquery.localScroll.js" > < / script >
< script src = "scripts/bootstrap-dropdown.js" > < / script >
< script src = "scripts/toc.js" > < / script >
< script > Sunlight . highlightAll ( { lineNumbers : true , showMenu : true , enableDoclinks : true } ) ; < / script >
< script >
$( function () {
$( "#toc" ).toc( {
2014-04-10 22:13:43 +00:00
anchorName : function(i, heading, prefix) {
2014-03-14 06:36:05 +00:00
return $(heading).attr("id") || ( prefix + i );
},
2013-10-02 19:18:24 +00:00
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : 60
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
} );
< / script >
< / body >
< / html >