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
1094 lines
28 KiB
HTML
1094 lines
28 KiB
HTML
<!DOCTYPE html>
|
|
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Phaser Source: gameobjects/BitmapFont.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: gameobjects/BitmapFont.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}
|
|
*/
|
|
|
|
/**
|
|
* @class Phaser.BitmapFont
|
|
* @extends Phaser.RenderTexture
|
|
* @constructor
|
|
* @param {Phaser.Game} game - Current game instance.
|
|
* @param {string} key - The font set graphic set as stored in the Game.Cache.
|
|
* @param {number} characterWidth - The width of each character in the font set.
|
|
* @param {number} characterHeight - The height of each character in the font set.
|
|
* @param {string} chars - The characters used in the font set, in display order. You can use the TEXT_SET consts for common font set arrangements.
|
|
* @param {number} charsPerRow - The number of characters per row in the font set.
|
|
* @param {number} [xSpacing=0] - If the characters in the font set have horizontal spacing between them set the required amount here.
|
|
* @param {number} [ySpacing=0] - If the characters in the font set have vertical spacing between them set the required amount here.
|
|
* @param {number} [xOffset=0] - If the font set doesn't start at the top left of the given image, specify the X coordinate offset here.
|
|
* @param {number} [yOffset=0] - If the font set doesn't start at the top left of the given image, specify the Y coordinate offset here.
|
|
*/
|
|
Phaser.BitmapFont = function (game, key, characterWidth, characterHeight, chars, charsPerRow, xSpacing, ySpacing, xOffset, yOffset) {
|
|
|
|
/**
|
|
* @property {number} characterWidth - The width of each character in the font set.
|
|
*/
|
|
this.characterWidth = characterWidth;
|
|
|
|
/**
|
|
* @property {number} characterHeight - The height of each character in the font set.
|
|
*/
|
|
this.characterHeight = characterHeight;
|
|
|
|
/**
|
|
* @property {number} characterSpacingX - If the characters in the font set have horizontal spacing between them set the required amount here.
|
|
*/
|
|
this.characterSpacingX = xSpacing || 0;
|
|
|
|
/**
|
|
* @property {number} characterSpacingY - If the characters in the font set have vertical spacing between them set the required amount here.
|
|
*/
|
|
this.characterSpacingY = ySpacing || 0;
|
|
|
|
/**
|
|
* @property {number} characterPerRow - The number of characters per row in the font set.
|
|
*/
|
|
this.characterPerRow = charsPerRow;
|
|
|
|
/**
|
|
* @property {number} offsetX - If the font set doesn't start at the top left of the given image, specify the X coordinate offset here.
|
|
*/
|
|
this.offsetX = xOffset || 0;
|
|
|
|
/**
|
|
* @property {number} offsetY - If the font set doesn't start at the top left of the given image, specify the Y coordinate offset here.
|
|
*/
|
|
this.offsetY = yOffset || 0;
|
|
|
|
/**
|
|
* @property {string} align - Alignment of the text when multiLine = true or a fixedWidth is set. Set to BitmapFont.ALIGN_LEFT (default), BitmapFont.ALIGN_RIGHT or BitmapFont.ALIGN_CENTER.
|
|
*/
|
|
this.align = "left";
|
|
|
|
/**
|
|
* @property {boolean} multiLine - If set to true all carriage-returns in text will form new lines (see align). If false the font will only contain one single line of text (the default)
|
|
* @default
|
|
*/
|
|
this.multiLine = false;
|
|
|
|
/**
|
|
* @property {boolean} autoUpperCase - Automatically convert any text to upper case. Lots of old bitmap fonts only contain upper-case characters, so the default is true.
|
|
* @default
|
|
*/
|
|
this.autoUpperCase = true;
|
|
|
|
/**
|
|
* @property {number} customSpacingX - Adds horizontal spacing between each character of the font, in pixels.
|
|
* @default
|
|
*/
|
|
this.customSpacingX = 0;
|
|
|
|
/**
|
|
* @property {number} customSpacingY - Adds vertical spacing between each line of multi-line text, set in pixels.
|
|
* @default
|
|
*/
|
|
this.customSpacingY = 0;
|
|
|
|
/**
|
|
* If you need this BitmapFont image to have a fixed width you can set the width in this value.
|
|
* If text is wider than the width specified it will be cropped off.
|
|
* @property {number} fixedWidth
|
|
*/
|
|
this.fixedWidth = 0;
|
|
|
|
/**
|
|
* @property {HTMLImage} fontSet - A reference to the image stored in the Game.Cache that contains the font.
|
|
*/
|
|
this.fontSet = game.cache.getImage(key);
|
|
|
|
/**
|
|
* @property {string} _text - The text of the font image.
|
|
* @private
|
|
*/
|
|
this._text = '';
|
|
|
|
/**
|
|
* @property {array} grabData - An array of rects for faster character pasting.
|
|
* @private
|
|
*/
|
|
this.grabData = [];
|
|
|
|
// Now generate our rects for faster copying later on
|
|
var currentX = this.offsetX;
|
|
var currentY = this.offsetY;
|
|
var r = 0;
|
|
var data = new Phaser.FrameData();
|
|
|
|
for (var c = 0; c < chars.length; c++)
|
|
{
|
|
var uuid = game.rnd.uuid();
|
|
|
|
var frame = data.addFrame(new Phaser.Frame(c, currentX, currentY, this.characterWidth, this.characterHeight, '', uuid));
|
|
|
|
this.grabData[chars.charCodeAt(c)] = frame.index;
|
|
|
|
PIXI.TextureCache[uuid] = new PIXI.Texture(PIXI.BaseTextureCache[key], {
|
|
x: currentX,
|
|
y: currentY,
|
|
width: this.characterWidth,
|
|
height: this.characterHeight
|
|
});
|
|
|
|
r++;
|
|
|
|
if (r == this.characterPerRow)
|
|
{
|
|
r = 0;
|
|
currentX = this.offsetX;
|
|
currentY += this.characterHeight + this.characterSpacingY;
|
|
}
|
|
else
|
|
{
|
|
currentX += this.characterWidth + this.characterSpacingX;
|
|
}
|
|
}
|
|
|
|
game.cache.updateFrameData(key, data);
|
|
|
|
this.stamp = new Phaser.Image(game, 0, 0, key, 0);
|
|
|
|
Phaser.RenderTexture.call(this, game);
|
|
|
|
/**
|
|
* @property {number} type - Base Phaser object type.
|
|
*/
|
|
this.type = Phaser.BITMAPFONT;
|
|
|
|
};
|
|
|
|
Phaser.BitmapFont.prototype = Object.create(Phaser.RenderTexture.prototype);
|
|
Phaser.BitmapFont.prototype.constructor = Phaser.BitmapFont;
|
|
|
|
/**
|
|
* Align each line of multi-line text to the left.
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
Phaser.BitmapFont.ALIGN_LEFT = "left";
|
|
|
|
/**
|
|
* Align each line of multi-line text to the right.
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
Phaser.BitmapFont.ALIGN_RIGHT = "right";
|
|
|
|
/**
|
|
* Align each line of multi-line text in the center.
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
Phaser.BitmapFont.ALIGN_CENTER = "center";
|
|
|
|
/**
|
|
* Text Set 1 = !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
Phaser.BitmapFont.TEXT_SET1 = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
|
|
|
|
/**
|
|
* Text Set 2 = !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
Phaser.BitmapFont.TEXT_SET2 = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
|
|
/**
|
|
* Text Set 3 = ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
Phaser.BitmapFont.TEXT_SET3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ";
|
|
|
|
/**
|
|
* Text Set 4 = ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
Phaser.BitmapFont.TEXT_SET4 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789";
|
|
|
|
/**
|
|
* Text Set 5 = ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
Phaser.BitmapFont.TEXT_SET5 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789";
|
|
|
|
/**
|
|
* Text Set 6 = ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.'
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
Phaser.BitmapFont.TEXT_SET6 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ";
|
|
|
|
/**
|
|
* Text Set 7 = AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
Phaser.BitmapFont.TEXT_SET7 = "AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39";
|
|
|
|
/**
|
|
* Text Set 8 = 0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
Phaser.BitmapFont.TEXT_SET8 = "0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
|
|
/**
|
|
* Text Set 9 = ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
Phaser.BitmapFont.TEXT_SET9 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!";
|
|
|
|
/**
|
|
* Text Set 10 = ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
Phaser.BitmapFont.TEXT_SET10 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
|
|
/**
|
|
* Text Set 11 = ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789
|
|
* @constant
|
|
* @type {string}
|
|
*/
|
|
Phaser.BitmapFont.TEXT_SET11 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789";
|
|
|
|
/**
|
|
* If you need this FlxSprite to have a fixed width and custom alignment you can set the width here.<br>
|
|
* If text is wider than the width specified it will be cropped off.
|
|
*
|
|
* @method Phaser.BitmapFont#setFixedWidth
|
|
* @memberof Phaser.BitmapFont
|
|
* @param {number} width - Width in pixels of this BitmapFont. Set to zero to disable and re-enable automatic resizing.
|
|
* @param {string} [lineAlignment='left'] - Align the text within this width. Set to BitmapFont.ALIGN_LEFT (default), BitmapFont.ALIGN_RIGHT or BitmapFont.ALIGN_CENTER.
|
|
*/
|
|
Phaser.BitmapFont.prototype.setFixedWidth = function (width, lineAlignment) {
|
|
|
|
if (typeof lineAlignment === 'undefined') { lineAlignment = 'left'; }
|
|
|
|
this.fixedWidth = width;
|
|
this.align = lineAlignment;
|
|
|
|
}
|
|
|
|
/**
|
|
* A helper function that quickly sets lots of variables at once, and then updates the text.
|
|
*
|
|
* @method Phaser.BitmapFont#setText
|
|
* @memberof Phaser.BitmapFont
|
|
* @param {string} content - The text of this sprite.
|
|
* @param {boolean} [multiLine=false] - Set to true if you want to support carriage-returns in the text and create a multi-line sprite instead of a single line.
|
|
* @param {number} [characterSpacing=0] - To add horizontal spacing between each character specify the amount in pixels.
|
|
* @param {number} [lineSpacing=0] - To add vertical spacing between each line of text, set the amount in pixels.
|
|
* @param {string} [lineAlignment='left'] - Align each line of multi-line text. Set to BitmapFont.ALIGN_LEFT, BitmapFont.ALIGN_RIGHT or BitmapFont.ALIGN_CENTER.
|
|
* @param {boolean} [allowLowerCase=false] - Lots of bitmap font sets only include upper-case characters, if yours needs to support lower case then set this to true.
|
|
*/
|
|
Phaser.BitmapFont.prototype.setText = function (content, multiLine, characterSpacing, lineSpacing, lineAlignment, allowLowerCase) {
|
|
|
|
this.multiLine = multiLine || false;
|
|
this.customSpacingX = characterSpacing || 0;
|
|
this.customSpacingY = lineSpacing || 0;
|
|
this.align = lineAlignment || 'left';
|
|
|
|
if (allowLowerCase)
|
|
{
|
|
this.autoUpperCase = false;
|
|
}
|
|
else
|
|
{
|
|
this.autoUpperCase = true;
|
|
}
|
|
|
|
if (content.length > 0)
|
|
{
|
|
this.text = content;
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Over rides the default PIXI.RenderTexture resize event as we need our baseTexture resized as well.
|
|
*
|
|
* @method Phaser.BitmapFont#resize
|
|
* @memberof Phaser.BitmapFont
|
|
*/
|
|
Phaser.BitmapFont.prototype.resize = function (width, height) {
|
|
|
|
this.width = width;
|
|
this.height = height;
|
|
|
|
this.frame.width = this.width;
|
|
this.frame.height = this.height;
|
|
|
|
this.baseTexture.width = this.width;
|
|
this.baseTexture.height = this.height;
|
|
|
|
if (this.renderer.type === PIXI.WEBGL_RENDERER)
|
|
{
|
|
this.projection.x = this.width / 2;
|
|
this.projection.y = -this.height / 2;
|
|
|
|
var gl = this.renderer.gl;
|
|
gl.bindTexture(gl.TEXTURE_2D, this.baseTexture._glTextures[gl.id]);
|
|
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, this.width, this.height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
|
|
}
|
|
else
|
|
{
|
|
this.textureBuffer.resize(this.width, this.height);
|
|
}
|
|
|
|
PIXI.Texture.frameUpdates.push(this);
|
|
|
|
}
|
|
|
|
/**
|
|
* Updates the BitmapData of the Sprite with the text
|
|
*
|
|
* @method Phaser.BitmapFont#buildBitmapFontText
|
|
* @memberof Phaser.BitmapFont
|
|
*/
|
|
Phaser.BitmapFont.prototype.buildBitmapFontText = function () {
|
|
|
|
var cx = 0;
|
|
var cy = 0;
|
|
|
|
if (this.multiLine)
|
|
{
|
|
var lines = this._text.split("\n");
|
|
|
|
if (this.fixedWidth > 0)
|
|
{
|
|
this.resize(fixedWidth, (lines.length * (this.characterHeight + this.customSpacingY)) - this.customSpacingY);
|
|
}
|
|
else
|
|
{
|
|
this.resize(this.getLongestLine() * (this.characterWidth + this.customSpacingX), (lines.length * (this.characterHeight + this.customSpacingY)) - this.customSpacingY);
|
|
}
|
|
|
|
this.textureBuffer.clear();
|
|
|
|
// Loop through each line of text
|
|
for (var i = 0; i < lines.length; i++)
|
|
{
|
|
// This line of text is held in lines[i] - need to work out the alignment
|
|
switch (this.align)
|
|
{
|
|
case Phaser.BitmapFont.ALIGN_LEFT:
|
|
cx = 0;
|
|
break;
|
|
|
|
case Phaser.BitmapFont.ALIGN_RIGHT:
|
|
cx = this.width - (lines[i].length * (this.characterWidth + this.customSpacingX));
|
|
break;
|
|
|
|
case Phaser.BitmapFont.ALIGN_CENTER:
|
|
cx = (this.width / 2) - ((lines[i].length * (this.characterWidth + this.customSpacingX)) / 2);
|
|
cx += this.customSpacingX / 2;
|
|
break;
|
|
}
|
|
|
|
// Sanity checks
|
|
if (cx < 0)
|
|
{
|
|
cx = 0;
|
|
}
|
|
|
|
this.pasteLine(lines[i], cx, cy, this.customSpacingX);
|
|
|
|
cy += this.characterHeight + this.customSpacingY;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.fixedWidth > 0)
|
|
{
|
|
this.resize(fixedWidth, this.characterHeight);
|
|
}
|
|
else
|
|
{
|
|
this.resize(this._text.length * (this.characterWidth + this.customSpacingX), this.characterHeight);
|
|
}
|
|
|
|
this.textureBuffer.clear();
|
|
|
|
switch (this.align)
|
|
{
|
|
case Phaser.BitmapFont.ALIGN_LEFT:
|
|
cx = 0;
|
|
break;
|
|
|
|
case Phaser.BitmapFont.ALIGN_RIGHT:
|
|
cx = this.width - (this._text.length * (this.characterWidth + this.customSpacingX));
|
|
break;
|
|
|
|
case Phaser.BitmapFont.ALIGN_CENTER:
|
|
cx = (this.width / 2) - ((this._text.length * (this.characterWidth + this.customSpacingX)) / 2);
|
|
cx += this.customSpacingX / 2;
|
|
break;
|
|
}
|
|
|
|
this.pasteLine(this._text, cx, 0, this.customSpacingX);
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Internal function that takes a single line of text (2nd parameter) and pastes it into the BitmapData at the given coordinates.
|
|
* Used by getLine and getMultiLine
|
|
*
|
|
* @method Phaser.BitmapFont#buildBitmapFontText
|
|
* @memberof Phaser.BitmapFont
|
|
* @param {string} line - The single line of text to paste.
|
|
* @param {number} x - The x coordinate.
|
|
* @param {number} y - The y coordinate.
|
|
* @param {number} customSpacingX - Custom X spacing.
|
|
*/
|
|
Phaser.BitmapFont.prototype.pasteLine = function (line, x, y, customSpacingX) {
|
|
|
|
var p = new Phaser.Point();
|
|
|
|
for (var c = 0; c < line.length; c++)
|
|
{
|
|
// If it's a space then there is no point copying, so leave a blank space
|
|
if (line.charAt(c) == " ")
|
|
{
|
|
x += this.characterWidth + this.customSpacingX;
|
|
}
|
|
else
|
|
{
|
|
// If the character doesn't exist in the font then we don't want a blank space, we just want to skip it
|
|
if (this.grabData[line.charCodeAt(c)] >= 0)
|
|
{
|
|
this.stamp.frame = this.grabData[line.charCodeAt(c)];
|
|
p.set(x, y);
|
|
this.render(this.stamp, p, false);
|
|
|
|
x += this.characterWidth + this.customSpacingX;
|
|
|
|
if (x > this.width)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Works out the longest line of text in _text and returns its length
|
|
*
|
|
* @method Phaser.BitmapFont#getLongestLine
|
|
* @memberof Phaser.BitmapFont
|
|
* @return {number} The length of the longest line of text.
|
|
*/
|
|
Phaser.BitmapFont.prototype.getLongestLine = function () {
|
|
|
|
var longestLine = 0;
|
|
|
|
if (this._text.length > 0)
|
|
{
|
|
var lines = this._text.split("\n");
|
|
|
|
for (var i = 0; i < lines.length; i++)
|
|
{
|
|
if (lines[i].length > longestLine)
|
|
{
|
|
longestLine = lines[i].length;
|
|
}
|
|
}
|
|
}
|
|
|
|
return longestLine;
|
|
}
|
|
|
|
/**
|
|
* Internal helper function that removes all unsupported characters from the _text String, leaving only characters contained in the font set.
|
|
*
|
|
* @method Phaser.BitmapFont#removeUnsupportedCharacters
|
|
* @memberof Phaser.BitmapFont
|
|
* @protected
|
|
* @param {boolean} [stripCR=true] - Should it strip carriage returns as well?
|
|
* @return {string} A clean version of the string.
|
|
*/
|
|
Phaser.BitmapFont.prototype.removeUnsupportedCharacters = function (stripCR) {
|
|
|
|
var newString = "";
|
|
|
|
for (var c = 0; c < this._text.length; c++)
|
|
{
|
|
var char = this._text[c];
|
|
var code = char.charCodeAt(0);
|
|
|
|
if (this.grabData[code] >= 0 || (!stripCR && char === "\n"))
|
|
{
|
|
newString = newString.concat(char);
|
|
}
|
|
}
|
|
|
|
return newString;
|
|
}
|
|
|
|
/**
|
|
* @name Phaser.BitmapText#text
|
|
* @property {string} text - Set this value to update the text in this sprite. Carriage returns are automatically stripped out if multiLine is false. Text is converted to upper case if autoUpperCase is true.
|
|
*/
|
|
Object.defineProperty(Phaser.BitmapFont.prototype, "text", {
|
|
|
|
get: function () {
|
|
|
|
return this._text;
|
|
|
|
},
|
|
|
|
set: function (value) {
|
|
|
|
var newText;
|
|
|
|
if (this.autoUpperCase)
|
|
{
|
|
newText = value.toUpperCase();
|
|
}
|
|
else
|
|
{
|
|
newText = value;
|
|
}
|
|
|
|
if (newText !== this._text)
|
|
{
|
|
this._text = newText;
|
|
|
|
this.removeUnsupportedCharacters(this.multiLine);
|
|
|
|
this.buildBitmapFontText();
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
</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>
|