mirror of
https://github.com/wassname/phaser.git
synced 2026-06-27 16:10:15 +08:00
5d5c64d22f
After defining tiles that collide on a Tilemap, you need to call Tilemap.generateCollisionData(layer) to populate the physics world with the data required. Debug.renderPhysicsBody updated to take camera location and body rotation into account. Body movement functions put back to velocity :) Updated to latest dev version of pixi and latest p2.js Updated docs
1257 lines
29 KiB
HTML
1257 lines
29 KiB
HTML
<!DOCTYPE html>
|
|
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Phaser Source: core/Game.js</title>
|
|
|
|
<!--[if lt IE 9]>
|
|
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
|
<![endif]-->
|
|
<link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
|
|
|
|
|
|
<link type="text/css" rel="stylesheet" href="styles/site.cerulean.css">
|
|
|
|
</head>
|
|
|
|
<body>
|
|
<div class="container-fluid">
|
|
<div class="navbar navbar-fixed-top navbar-inverse">
|
|
<div class="navbar-inner">
|
|
<a class="brand" href="index.html">Phaser</a>
|
|
<ul class="nav">
|
|
|
|
<li class="dropdown">
|
|
<a href="namespaces.list.html" class="dropdown-toggle" data-toggle="dropdown">Namespaces<b
|
|
class="caret"></b></a>
|
|
|
|
<ul class="dropdown-menu ">
|
|
|
|
<li>
|
|
<a href="Phaser.html">Phaser</a>
|
|
</li>
|
|
|
|
|
|
</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 ">
|
|
|
|
<li>
|
|
<a href="Phaser.Animation.html">Animation</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.AnimationManager.html">AnimationManager</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.AnimationParser.html">AnimationParser</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.BitmapData.html">BitmapData</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.BitmapFont.html">BitmapFont</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.BitmapText.html">BitmapText</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Button.html">Button</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Cache.html">Cache</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Camera.html">Camera</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Canvas.html">Canvas</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Circle.html">Circle</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Color.html">Color</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Device.html">Device</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Easing.html">Easing</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Easing.Back.html">Back</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Easing.Bounce.html">Bounce</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Easing.Circular.html">Circular</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Easing.Cubic.html">Cubic</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Easing.Elastic.html">Elastic</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Easing.Exponential.html">Exponential</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Easing.Linear.html">Linear</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Easing.Quadratic.html">Quadratic</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Easing.Quartic.html">Quartic</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Easing.Quintic.html">Quintic</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Easing.Sinusoidal.html">Sinusoidal</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Ellipse.html">Ellipse</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Events.html">Events</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Filter.html">Filter</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Frame.html">Frame</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.FrameData.html">FrameData</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Game.html">Game</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.GameObjectFactory.html">GameObjectFactory</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Gamepad.html">Gamepad</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.GamepadButton.html">GamepadButton</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Graphics.html">Graphics</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Group.html">Group</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Image.html">Image</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Input.html">Input</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.InputHandler.html">InputHandler</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Key.html">Key</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Keyboard.html">Keyboard</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Line.html">Line</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.LinkedList.html">LinkedList</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Loader.html">Loader</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.LoaderParser.html">LoaderParser</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Math.html">Math</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Mouse.html">Mouse</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.MSPointer.html">MSPointer</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Net.html">Net</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Particles.html">Particles</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Particles.Arcade.Emitter.html">Emitter</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Physics.html">Physics</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Physics.Arcade.html">Arcade</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Plugin.html">Plugin</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.PluginManager.html">PluginManager</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Point.html">Point</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Pointer.html">Pointer</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Polygon.html">Polygon</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.QuadTree.html">QuadTree</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.RandomDataGenerator.html">RandomDataGenerator</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Rectangle.html">Rectangle</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.RenderTexture.html">RenderTexture</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.RequestAnimationFrame.html">RequestAnimationFrame</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Signal.html">Signal</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.SinglePad.html">SinglePad</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Sound.html">Sound</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.SoundManager.html">SoundManager</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Sprite.html">Sprite</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.SpriteBatch.html">SpriteBatch</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Stage.html">Stage</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.StageScaleMode.html">StageScaleMode</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.State.html">State</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.StateManager.html">StateManager</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Text.html">Text</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Tile.html">Tile</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Tilemap.html">Tilemap</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.TilemapLayer.html">TilemapLayer</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.TilemapParser.html">TilemapParser</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Tileset.html">Tileset</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.TileSprite.html">TileSprite</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Time.html">Time</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Timer.html">Timer</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.TimerEvent.html">TimerEvent</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Touch.html">Touch</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Tween.html">Tween</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.TweenManager.html">TweenManager</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Utils.html">Utils</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.Utils.Debug.html">Debug</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="Phaser.World.html">World</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="SignalBinding.html">SignalBinding</a>
|
|
</li>
|
|
|
|
|
|
</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>
|
|
<a href="global.html#canUseNewCanvasBlendModes">canUseNewCanvasBlendModes</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="global.html#getBounds">getBounds</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="global.html#getNextPowerOfTwo">getNextPowerOfTwo</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="global.html#hex2rgb">hex2rgb</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="global.html#hitTest">hitTest</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="global.html#rgb2hex">rgb2hex</a>
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
</li>
|
|
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row-fluid">
|
|
|
|
|
|
<div class="span12">
|
|
|
|
<div id="main">
|
|
|
|
|
|
|
|
<h1 class="page-title">Source: core/Game.js</h1>
|
|
|
|
<section>
|
|
<article>
|
|
<pre class="sunlight-highlight-javascript linenums">/**
|
|
* @author Richard Davey <rich@photonstorm.com>
|
|
* @copyright 2014 Photon Storm Ltd.
|
|
* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
|
|
*/
|
|
|
|
/**
|
|
* Game constructor
|
|
*
|
|
* Instantiate a new <code>Phaser.Game</code> object.
|
|
* @class Phaser.Game
|
|
* @classdesc This is where the magic happens. The Game object is the heart of your game,
|
|
* providing quick access to common functions and handling the boot process.
|
|
* "Hell, there are no rules here - we're trying to accomplish something."
|
|
* Thomas A. Edison
|
|
* @constructor
|
|
* @param {number} [width=800] - The width of your game in game pixels.
|
|
* @param {number} [height=600] - The height of your game in game pixels.
|
|
* @param {number} [renderer=Phaser.AUTO] - Which renderer to use: Phaser.AUTO will auto-detect, Phaser.WEBGL, Phaser.CANVAS or Phaser.HEADLESS (no rendering at all).
|
|
* @param {string|HTMLElement} [parent=''] - The DOM element into which this games canvas will be injected. Either a DOM ID (string) or the element itself.
|
|
* @param {object} [state=null] - The default state object. A object consisting of Phaser.State functions (preload, create, update, render) or null.
|
|
* @param {boolean} [transparent=false] - Use a transparent canvas background or not.
|
|
* @param {boolean} [antialias=true] - Anti-alias graphics.
|
|
*/
|
|
Phaser.Game = function (width, height, renderer, parent, state, transparent, antialias) {
|
|
|
|
/**
|
|
* @property {number} id - Phaser Game ID (for when Pixi supports multiple instances).
|
|
*/
|
|
this.id = Phaser.GAMES.push(this) - 1;
|
|
|
|
/**
|
|
* @property {object} config - The Phaser.Game configuration object.
|
|
*/
|
|
this.config = null;
|
|
|
|
/**
|
|
* @property {HTMLElement} parent - The Games DOM parent.
|
|
* @default
|
|
*/
|
|
this.parent = '';
|
|
|
|
/**
|
|
* @property {number} width - The Game width (in pixels).
|
|
* @default
|
|
*/
|
|
this.width = 800;
|
|
|
|
/**
|
|
* @property {number} height - The Game height (in pixels).
|
|
* @default
|
|
*/
|
|
this.height = 600;
|
|
|
|
/**
|
|
* @property {boolean} transparent - Use a transparent canvas background or not.
|
|
* @default
|
|
*/
|
|
this.transparent = false;
|
|
|
|
/**
|
|
* @property {boolean} antialias - Anti-alias graphics (in WebGL this helps with edges, in Canvas2D it retains pixel-art quality).
|
|
* @default
|
|
*/
|
|
this.antialias = true;
|
|
|
|
/**
|
|
* @property {number} renderer - The Pixi Renderer
|
|
* @default
|
|
*/
|
|
this.renderer = Phaser.AUTO;
|
|
|
|
/**
|
|
* @property {number} renderType - The Renderer this Phaser.Game will use. Either Phaser.RENDERER_AUTO, Phaser.RENDERER_CANVAS or Phaser.RENDERER_WEBGL.
|
|
*/
|
|
this.renderType = Phaser.AUTO;
|
|
|
|
/**
|
|
* @property {number} state - The StateManager.
|
|
*/
|
|
this.state = null;
|
|
|
|
/**
|
|
* @property {boolean} _paused - Is game paused?
|
|
* @private
|
|
* @default
|
|
*/
|
|
this._paused = false;
|
|
|
|
/**
|
|
* @property {boolean} _loadComplete - Whether load complete loading or not.
|
|
* @private
|
|
* @default
|
|
*/
|
|
this._loadComplete = false;
|
|
|
|
/**
|
|
* @property {boolean} isBooted - Whether the game engine is booted, aka available.
|
|
* @default
|
|
*/
|
|
this.isBooted = false;
|
|
|
|
/**
|
|
* @property {boolean} id -Is game running or paused?
|
|
* @default
|
|
*/
|
|
this.isRunning = false;
|
|
|
|
/**
|
|
* @property {Phaser.RequestAnimationFrame} raf - Automatically handles the core game loop via requestAnimationFrame or setTimeout
|
|
*/
|
|
this.raf = null;
|
|
|
|
/**
|
|
* @property {Phaser.GameObjectFactory} add - Reference to the GameObject Factory.
|
|
*/
|
|
this.add = null;
|
|
|
|
/**
|
|
* @property {Phaser.Cache} cache - Reference to the assets cache.
|
|
* @default
|
|
*/
|
|
this.cache = null;
|
|
|
|
/**
|
|
* @property {Phaser.Input} input - Reference to the input manager
|
|
* @default
|
|
*/
|
|
this.input = null;
|
|
|
|
/**
|
|
* @property {Phaser.Loader} load - Reference to the assets loader.
|
|
* @default
|
|
*/
|
|
this.load = null;
|
|
|
|
/**
|
|
* @property {Phaser.Math} math - Reference to the math helper.
|
|
*/
|
|
this.math = null;
|
|
|
|
/**
|
|
* @property {Phaser.Net} net - Reference to the network class.
|
|
*/
|
|
this.net = null;
|
|
|
|
/**
|
|
* @property {Phaser.StageScaleMode} scale - The game scale manager.
|
|
*/
|
|
this.scale = null;
|
|
|
|
/**
|
|
* @property {Phaser.SoundManager} sound - Reference to the sound manager.
|
|
*/
|
|
this.sound = null;
|
|
|
|
/**
|
|
* @property {Phaser.Stage} stage - Reference to the stage.
|
|
*/
|
|
this.stage = null;
|
|
|
|
/**
|
|
* @property {Phaser.TimeManager} time - Reference to game clock.
|
|
*/
|
|
this.time = null;
|
|
|
|
/**
|
|
* @property {Phaser.TweenManager} tweens - Reference to the tween manager.
|
|
*/
|
|
this.tweens = null;
|
|
|
|
/**
|
|
* @property {Phaser.World} world - Reference to the world.
|
|
*/
|
|
this.world = null;
|
|
|
|
/**
|
|
* @property {Phaser.Physics.World} physics - Reference to the physics world.
|
|
*/
|
|
this.physics = null;
|
|
|
|
/**
|
|
* @property {Phaser.RandomDataGenerator} rnd - Instance of repeatable random data generator helper.
|
|
*/
|
|
this.rnd = null;
|
|
|
|
/**
|
|
* @property {Phaser.Device} device - Contains device information and capabilities.
|
|
*/
|
|
this.device = null;
|
|
|
|
/**
|
|
* @property {Phaser.Physics.PhysicsManager} camera - A handy reference to world.camera.
|
|
*/
|
|
this.camera = null;
|
|
|
|
/**
|
|
* @property {HTMLCanvasElement} canvas - A handy reference to renderer.view, the canvas that the game is being rendered in to.
|
|
*/
|
|
this.canvas = null;
|
|
|
|
/**
|
|
* @property {Context} context - A handy reference to renderer.context (only set for CANVAS games, not WebGL)
|
|
*/
|
|
this.context = null;
|
|
|
|
/**
|
|
* @property {Phaser.Utils.Debug} debug - A set of useful debug utilitie.
|
|
*/
|
|
this.debug = null;
|
|
|
|
/**
|
|
* @property {Phaser.Particles} particles - The Particle Manager.
|
|
*/
|
|
this.particles = null;
|
|
|
|
/**
|
|
* @property {boolean} stepping - Enable core loop stepping with Game.enableStep().
|
|
* @default
|
|
* @readonly
|
|
*/
|
|
this.stepping = false;
|
|
|
|
/**
|
|
* @property {boolean} stepping - An internal property used by enableStep, but also useful to query from your own game objects.
|
|
* @default
|
|
* @readonly
|
|
*/
|
|
this.pendingStep = false;
|
|
|
|
/**
|
|
* @property {number} stepCount - When stepping is enabled this contains the current step cycle.
|
|
* @default
|
|
* @readonly
|
|
*/
|
|
this.stepCount = 0;
|
|
|
|
// Parse the configuration object (if any)
|
|
if (arguments.length === 1 && typeof arguments[0] === 'object')
|
|
{
|
|
this.parseConfig(arguments[0]);
|
|
}
|
|
else
|
|
{
|
|
if (typeof width !== 'undefined')
|
|
{
|
|
this.width = width;
|
|
}
|
|
|
|
if (typeof height !== 'undefined')
|
|
{
|
|
this.height = height;
|
|
}
|
|
|
|
if (typeof renderer !== 'undefined')
|
|
{
|
|
this.renderer = renderer;
|
|
this.renderType = renderer;
|
|
}
|
|
|
|
if (typeof parent !== 'undefined')
|
|
{
|
|
this.parent = parent;
|
|
}
|
|
|
|
if (typeof transparent !== 'undefined')
|
|
{
|
|
this.transparent = transparent;
|
|
}
|
|
|
|
if (typeof antialias !== 'undefined')
|
|
{
|
|
this.antialias = antialias;
|
|
}
|
|
|
|
this.state = new Phaser.StateManager(this, state);
|
|
}
|
|
|
|
var _this = this;
|
|
|
|
this._onBoot = function () {
|
|
return _this.boot();
|
|
}
|
|
|
|
if (document.readyState === 'complete' || document.readyState === 'interactive')
|
|
{
|
|
window.setTimeout(this._onBoot, 0);
|
|
}
|
|
else
|
|
{
|
|
document.addEventListener('DOMContentLoaded', this._onBoot, false);
|
|
window.addEventListener('load', this._onBoot, false);
|
|
}
|
|
|
|
return this;
|
|
|
|
};
|
|
|
|
Phaser.Game.prototype = {
|
|
|
|
/**
|
|
* Parses a Game configuration object.
|
|
*
|
|
* @method Phaser.Game#parseConfig
|
|
* @protected
|
|
*/
|
|
parseConfig: function (config) {
|
|
|
|
this.config = config;
|
|
|
|
if (config['width'])
|
|
{
|
|
this.width = this.parseDimension(config['width'], 0);
|
|
}
|
|
|
|
if (config['height'])
|
|
{
|
|
this.height = this.parseDimension(config['height'], 1);
|
|
}
|
|
|
|
if (config['renderer'])
|
|
{
|
|
this.renderer = config['renderer'];
|
|
this.renderType = config['renderer'];
|
|
}
|
|
|
|
if (config['parent'])
|
|
{
|
|
this.parent = config['parent'];
|
|
}
|
|
|
|
if (config['transparent'])
|
|
{
|
|
this.transparent = config['transparent'];
|
|
}
|
|
|
|
if (config['antialias'])
|
|
{
|
|
this.antialias = config['antialias'];
|
|
}
|
|
|
|
var state = null;
|
|
|
|
if (config['state'])
|
|
{
|
|
state = config['state'];
|
|
}
|
|
|
|
this.state = new Phaser.StateManager(this, state);
|
|
|
|
},
|
|
|
|
/**
|
|
* Get dimension.
|
|
*
|
|
* @method Phaser.Game#parseDimension
|
|
* @protected
|
|
*/
|
|
parseDimension: function (size, dimension) {
|
|
|
|
var f = 0;
|
|
var px = 0;
|
|
|
|
if (typeof size === 'string')
|
|
{
|
|
// %?
|
|
if (size.substr(-1) === '%')
|
|
{
|
|
f = parseInt(size, 10) / 100;
|
|
|
|
if (dimension === 0)
|
|
{
|
|
px = window.innerWidth * f;
|
|
}
|
|
else
|
|
{
|
|
px = window.innerHeight * f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
px = parseInt(size, 10);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
px = size;
|
|
}
|
|
|
|
return px;
|
|
|
|
},
|
|
|
|
/**
|
|
* Initialize engine sub modules and start the game.
|
|
*
|
|
* @method Phaser.Game#boot
|
|
* @protected
|
|
*/
|
|
boot: function () {
|
|
|
|
if (this.isBooted)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (!document.body)
|
|
{
|
|
window.setTimeout(this._onBoot, 20);
|
|
}
|
|
else
|
|
{
|
|
document.removeEventListener('DOMContentLoaded', this._onBoot);
|
|
window.removeEventListener('load', this._onBoot);
|
|
|
|
this.onPause = new Phaser.Signal();
|
|
this.onResume = new Phaser.Signal();
|
|
|
|
this.isBooted = true;
|
|
|
|
this.device = new Phaser.Device();
|
|
this.math = Phaser.Math;
|
|
this.rnd = new Phaser.RandomDataGenerator([(Date.now() * Math.random()).toString()]);
|
|
|
|
this.stage = new Phaser.Stage(this, this.width, this.height);
|
|
this.scale = new Phaser.StageScaleMode(this, this.width, this.height);
|
|
|
|
this.setUpRenderer();
|
|
|
|
this.world = new Phaser.World(this);
|
|
this.add = new Phaser.GameObjectFactory(this);
|
|
this.cache = new Phaser.Cache(this);
|
|
this.load = new Phaser.Loader(this);
|
|
this.time = new Phaser.Time(this);
|
|
this.tweens = new Phaser.TweenManager(this);
|
|
this.input = new Phaser.Input(this);
|
|
this.sound = new Phaser.SoundManager(this);
|
|
this.physics = new Phaser.Physics.World(this);
|
|
this.particles = new Phaser.Particles(this);
|
|
this.plugins = new Phaser.PluginManager(this, this);
|
|
this.net = new Phaser.Net(this);
|
|
this.debug = new Phaser.Utils.Debug(this);
|
|
|
|
this.time.boot();
|
|
this.stage.boot();
|
|
this.world.boot();
|
|
this.input.boot();
|
|
this.sound.boot();
|
|
this.state.boot();
|
|
|
|
this.load.onLoadComplete.add(this.loadComplete, this);
|
|
|
|
this.showDebugHeader();
|
|
|
|
this.isRunning = true;
|
|
this._loadComplete = false;
|
|
|
|
this.raf = new Phaser.RequestAnimationFrame(this);
|
|
this.raf.start();
|
|
}
|
|
|
|
},
|
|
|
|
/**
|
|
* Displays a Phaser version debug header in the console.
|
|
*
|
|
* @method Phaser.Game#showDebugHeader
|
|
* @protected
|
|
*/
|
|
showDebugHeader: function () {
|
|
|
|
var v = Phaser.DEV_VERSION;
|
|
var r = 'Canvas';
|
|
var a = 'HTML Audio';
|
|
|
|
if (this.renderType == Phaser.WEBGL)
|
|
{
|
|
r = 'WebGL';
|
|
}
|
|
else if (this.renderType == Phaser.HEADLESS)
|
|
{
|
|
r = 'Headless';
|
|
}
|
|
|
|
if (this.device.webAudio)
|
|
{
|
|
a = 'WebAudio';
|
|
}
|
|
|
|
if (this.device.chrome)
|
|
{
|
|
var args = [
|
|
'%c %c %c Phaser v' + v + ' - Renderer: ' + r + ' - Audio: ' + a + ' %c %c ',
|
|
'background: #00bff3',
|
|
'background: #0072bc',
|
|
'color: #ffffff; background: #003471',
|
|
'background: #0072bc',
|
|
'background: #00bff3'
|
|
];
|
|
|
|
console.log.apply(console, args);
|
|
}
|
|
else
|
|
{
|
|
console.log('Phaser v' + v + ' - Renderer: ' + r + ' - Audio: ' + a);
|
|
}
|
|
|
|
},
|
|
|
|
/**
|
|
* Checks if the device is capable of using the requested renderer and sets it up or an alternative if not.
|
|
*
|
|
* @method Phaser.Game#setUpRenderer
|
|
* @protected
|
|
*/
|
|
setUpRenderer: function () {
|
|
|
|
/*
|
|
if (this.device.trident)
|
|
{
|
|
// Pixi WebGL renderer on IE11 doesn't work correctly with masks, if you need them you may want to comment this block out
|
|
this.renderType = Phaser.CANVAS;
|
|
}
|
|
*/
|
|
|
|
if (this.renderType === Phaser.HEADLESS || this.renderType === Phaser.CANVAS || (this.renderType === Phaser.AUTO && this.device.webGL === false))
|
|
{
|
|
if (this.device.canvas)
|
|
{
|
|
if (this.renderType === Phaser.AUTO)
|
|
{
|
|
this.renderType = Phaser.CANVAS;
|
|
}
|
|
|
|
this.renderer = new PIXI.CanvasRenderer(this.width, this.height, this.canvas, this.transparent);
|
|
Phaser.Canvas.setSmoothingEnabled(this.renderer.context, this.antialias);
|
|
// this.canvas = this.renderer.view;
|
|
this.context = this.renderer.context;
|
|
}
|
|
else
|
|
{
|
|
throw new Error('Phaser.Game - cannot create Canvas or WebGL context, aborting.');
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// They requested WebGL, and their browser supports it
|
|
this.renderType = Phaser.WEBGL;
|
|
this.renderer = new PIXI.WebGLRenderer(this.width, this.height, this.canvas, this.transparent, this.antialias);
|
|
// this.canvas = this.renderer.view;
|
|
this.context = null;
|
|
}
|
|
|
|
// Phaser.Canvas.addToDOM(this.renderer.view, this.parent, true);
|
|
// Phaser.Canvas.setTouchAction(this.renderer.view);
|
|
|
|
Phaser.Canvas.addToDOM(this.canvas, this.parent, true);
|
|
Phaser.Canvas.setTouchAction(this.canvas);
|
|
|
|
},
|
|
|
|
/**
|
|
* Called when the load has finished, after preload was run.
|
|
*
|
|
* @method Phaser.Game#loadComplete
|
|
* @protected
|
|
*/
|
|
loadComplete: function () {
|
|
|
|
this._loadComplete = true;
|
|
|
|
this.state.loadComplete();
|
|
|
|
},
|
|
|
|
/**
|
|
* The core game loop.
|
|
*
|
|
* @method Phaser.Game#update
|
|
* @protected
|
|
* @param {number} time - The current time as provided by RequestAnimationFrame.
|
|
*/
|
|
update: function (time) {
|
|
|
|
this.time.update(time);
|
|
|
|
if (this._paused)
|
|
{
|
|
this.renderer.render(this.stage);
|
|
this.plugins.render();
|
|
this.state.render();
|
|
}
|
|
else
|
|
{
|
|
if (!this.pendingStep)
|
|
{
|
|
if (this.stepping)
|
|
{
|
|
this.pendingStep = true;
|
|
}
|
|
|
|
this.plugins.preUpdate();
|
|
this.stage.preUpdate();
|
|
|
|
this.stage.update();
|
|
this.tweens.update();
|
|
this.sound.update();
|
|
this.input.update();
|
|
this.state.update();
|
|
this.physics.update();
|
|
this.particles.update();
|
|
this.plugins.update();
|
|
|
|
this.stage.postUpdate();
|
|
this.plugins.postUpdate();
|
|
}
|
|
|
|
if (this.renderType !== Phaser.HEADLESS)
|
|
{
|
|
this.renderer.render(this.stage);
|
|
this.plugins.render();
|
|
this.state.render();
|
|
|
|
this.plugins.postRender();
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
/**
|
|
* Enable core game loop stepping. When enabled you must call game.step() directly (perhaps via a DOM button?)
|
|
* Calling step will advance the game loop by one frame. This is extremely useful to hard to track down errors!
|
|
*
|
|
* @method Phaser.Game#enableStep
|
|
*/
|
|
enableStep: function () {
|
|
|
|
this.stepping = true;
|
|
this.pendingStep = false;
|
|
this.stepCount = 0;
|
|
|
|
},
|
|
|
|
/**
|
|
* Disables core game loop stepping.
|
|
*
|
|
* @method Phaser.Game#disableStep
|
|
*/
|
|
disableStep: function () {
|
|
|
|
this.stepping = false;
|
|
this.pendingStep = false;
|
|
|
|
},
|
|
|
|
/**
|
|
* When stepping is enabled you must call this function directly (perhaps via a DOM button?) to advance the game loop by one frame.
|
|
* This is extremely useful to hard to track down errors! Use the internal stepCount property to monitor progress.
|
|
*
|
|
* @method Phaser.Game#step
|
|
*/
|
|
step: function () {
|
|
|
|
this.pendingStep = false;
|
|
this.stepCount++;
|
|
|
|
},
|
|
|
|
/**
|
|
* Nuke the entire game from orbit
|
|
*
|
|
* @method Phaser.Game#destroy
|
|
*/
|
|
destroy: function () {
|
|
|
|
this.raf.stop();
|
|
|
|
this.input.destroy();
|
|
|
|
this.state.destroy();
|
|
|
|
this.state = null;
|
|
this.cache = null;
|
|
this.input = null;
|
|
this.load = null;
|
|
this.sound = null;
|
|
this.stage = null;
|
|
this.time = null;
|
|
this.world = null;
|
|
this.isBooted = false;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
Phaser.Game.prototype.constructor = Phaser.Game;
|
|
|
|
/**
|
|
* The paused state of the Game. A paused game doesn't update any of its subsystems.
|
|
* When a game is paused the onPause event is dispatched. When it is resumed the onResume event is dispatched.
|
|
* @name Phaser.Game#paused
|
|
* @property {boolean} paused - Gets and sets the paused state of the Game.
|
|
*/
|
|
Object.defineProperty(Phaser.Game.prototype, "paused", {
|
|
|
|
get: function () {
|
|
return this._paused;
|
|
},
|
|
|
|
set: function (value) {
|
|
|
|
if (value === true)
|
|
{
|
|
if (this._paused === false)
|
|
{
|
|
this._paused = true;
|
|
this.onPause.dispatch(this);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this._paused)
|
|
{
|
|
this._paused = false;
|
|
this.onResume.dispatch(this);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
/**
|
|
* "Deleted code is debugged code." - Jeff Sickel
|
|
*/
|
|
</pre>
|
|
</article>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<div class="clearfix"></div>
|
|
<footer>
|
|
|
|
|
|
<span class="copyright">
|
|
Phaser Copyright © 2012-2014 Photon Storm Ltd.
|
|
</span>
|
|
<br />
|
|
|
|
<span class="jsdoc-message">
|
|
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-dev</a>
|
|
on Tue Feb 18 2014 03:01:16 GMT-0000 (GMT) using the <a href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
|
|
</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( {
|
|
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>
|