
Fixed issue where alpha not being set correctly in canvas spriteBatch Fixed issue where previous stage events did not get removed correctly
386 lines
14 KiB
HTML
386 lines
14 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>src/pixi/loaders/AtlasLoader.js - pixi.js</title>
|
|
<link rel="stylesheet" href="http://yui.yahooapis.com/3.9.1/build/cssgrids/cssgrids-min.css">
|
|
<link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
|
|
<link rel="stylesheet" href="../assets/css/main.css" id="site_styles">
|
|
<link rel="shortcut icon" type="image/png" href="../assets/favicon.png">
|
|
<script src="http://yui.yahooapis.com/combo?3.9.1/build/yui/yui-min.js"></script>
|
|
</head>
|
|
<body class="yui3-skin-sam">
|
|
|
|
<div id="doc">
|
|
<div id="hd" class="yui3-g header">
|
|
<div class="yui3-u-3-4">
|
|
|
|
<h1><img src="http://www.goodboydigital.com/pixijs/logo_small.png" title="pixi.js"></h1>
|
|
|
|
</div>
|
|
<div class="yui3-u-1-4 version">
|
|
<em>API Docs for: 1.4.3</em>
|
|
</div>
|
|
</div>
|
|
<div id="bd" class="yui3-g">
|
|
|
|
<div class="yui3-u-1-4">
|
|
<div id="docs-sidebar" class="sidebar apidocs">
|
|
<div id="api-list">
|
|
<h2 class="off-left">APIs</h2>
|
|
<div id="api-tabview" class="tabview">
|
|
<ul class="tabs">
|
|
<li><a href="#api-classes">Classes</a></li>
|
|
<li><a href="#api-modules">Modules</a></li>
|
|
</ul>
|
|
|
|
<div id="api-tabview-filter">
|
|
<input type="search" id="api-filter" placeholder="Type to filter APIs">
|
|
</div>
|
|
|
|
<div id="api-tabview-panel">
|
|
<ul id="api-classes" class="apis classes">
|
|
|
|
<li><a href="../classes/AbstractFilter.html">AbstractFilter</a></li>
|
|
|
|
<li><a href="../classes/AlphaMaskFilter.html">AlphaMaskFilter</a></li>
|
|
|
|
<li><a href="../classes/AssetLoader.html">AssetLoader</a></li>
|
|
|
|
<li><a href="../classes/AtlasLoader.html">AtlasLoader</a></li>
|
|
|
|
<li><a href="../classes/BaseTexture.html">BaseTexture</a></li>
|
|
|
|
<li><a href="../classes/BitmapFontLoader.html">BitmapFontLoader</a></li>
|
|
|
|
<li><a href="../classes/BitmapText.html">BitmapText</a></li>
|
|
|
|
<li><a href="../classes/BlurFilter.html">BlurFilter</a></li>
|
|
|
|
<li><a href="../classes/CanvasGraphics.html">CanvasGraphics</a></li>
|
|
|
|
<li><a href="../classes/CanvasRenderer.html">CanvasRenderer</a></li>
|
|
|
|
<li><a href="../classes/Circle.html">Circle</a></li>
|
|
|
|
<li><a href="../classes/ColorMatrixFilter.html">ColorMatrixFilter</a></li>
|
|
|
|
<li><a href="../classes/ColorStepFilter.html">ColorStepFilter</a></li>
|
|
|
|
<li><a href="../classes/DisplacementFilter.html">DisplacementFilter</a></li>
|
|
|
|
<li><a href="../classes/DisplayObject.html">DisplayObject</a></li>
|
|
|
|
<li><a href="../classes/DisplayObjectContainer.html">DisplayObjectContainer</a></li>
|
|
|
|
<li><a href="../classes/DotScreenFilter.html">DotScreenFilter</a></li>
|
|
|
|
<li><a href="../classes/Ellipse.html">Ellipse</a></li>
|
|
|
|
<li><a href="../classes/EventTarget.html">EventTarget</a></li>
|
|
|
|
<li><a href="../classes/Graphics.html">Graphics</a></li>
|
|
|
|
<li><a href="../classes/GrayFilter.html">GrayFilter</a></li>
|
|
|
|
<li><a href="../classes/ImageLoader.html">ImageLoader</a></li>
|
|
|
|
<li><a href="../classes/InvertFilter.html">InvertFilter</a></li>
|
|
|
|
<li><a href="../classes/JsonLoader.html">JsonLoader</a></li>
|
|
|
|
<li><a href="../classes/MovieClip.html">MovieClip</a></li>
|
|
|
|
<li><a href="../classes/PixelateFilter.html">PixelateFilter</a></li>
|
|
|
|
<li><a href="../classes/PIXI.PixiFastShader.html">PIXI.PixiFastShader</a></li>
|
|
|
|
<li><a href="../classes/PIXI.PixiShader.html">PIXI.PixiShader</a></li>
|
|
|
|
<li><a href="../classes/Point.html">Point</a></li>
|
|
|
|
<li><a href="../classes/Polygon.html">Polygon</a></li>
|
|
|
|
<li><a href="../classes/PolyK._convex.html">PolyK._convex</a></li>
|
|
|
|
<li><a href="../classes/PolyK._PointInTriangle.html">PolyK._PointInTriangle</a></li>
|
|
|
|
<li><a href="../classes/PolyK.AjaxRequest.html">PolyK.AjaxRequest</a></li>
|
|
|
|
<li><a href="../classes/PolyK.InteractionData.html">PolyK.InteractionData</a></li>
|
|
|
|
<li><a href="../classes/PolyK.InteractionManager.html">PolyK.InteractionManager</a></li>
|
|
|
|
<li><a href="../classes/Rectangle.html">Rectangle</a></li>
|
|
|
|
<li><a href="../classes/RenderTexture.html">RenderTexture</a></li>
|
|
|
|
<li><a href="../classes/SepiaFilter.html">SepiaFilter</a></li>
|
|
|
|
<li><a href="../classes/Spine.html">Spine</a></li>
|
|
|
|
<li><a href="../classes/Sprite.html">Sprite</a></li>
|
|
|
|
<li><a href="../classes/SpriteSheetLoader.html">SpriteSheetLoader</a></li>
|
|
|
|
<li><a href="../classes/Stage.html">Stage</a></li>
|
|
|
|
<li><a href="../classes/Text.html">Text</a></li>
|
|
|
|
<li><a href="../classes/Texture.html">Texture</a></li>
|
|
|
|
<li><a href="../classes/TilingSprite.html">TilingSprite</a></li>
|
|
|
|
<li><a href="../classes/TwistFilter.html">TwistFilter</a></li>
|
|
|
|
<li><a href="../classes/WebGLRenderer.html">WebGLRenderer</a></li>
|
|
|
|
</ul>
|
|
|
|
<ul id="api-modules" class="apis modules">
|
|
|
|
<li><a href="../modules/PIXI.html">PIXI</a></li>
|
|
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="yui3-u-3-4">
|
|
<div id="api-options">
|
|
Show:
|
|
<label for="api-show-inherited">
|
|
<input type="checkbox" id="api-show-inherited" checked>
|
|
Inherited
|
|
</label>
|
|
|
|
<label for="api-show-protected">
|
|
<input type="checkbox" id="api-show-protected">
|
|
Protected
|
|
</label>
|
|
|
|
<label for="api-show-private">
|
|
<input type="checkbox" id="api-show-private">
|
|
Private
|
|
</label>
|
|
<label for="api-show-deprecated">
|
|
<input type="checkbox" id="api-show-deprecated">
|
|
Deprecated
|
|
</label>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="apidocs">
|
|
<div id="docs-main">
|
|
<div class="content">
|
|
<h1 class="file-heading">File: src/pixi/loaders/AtlasLoader.js</h1>
|
|
|
|
<div class="file">
|
|
<pre class="code prettyprint linenums">
|
|
/**
|
|
* @author Martin Kelm http://mkelm.github.com
|
|
*/
|
|
|
|
/**
|
|
* The atlas file loader is used to load in Atlas data and parse it
|
|
* When loaded this class will dispatch a 'loaded' event
|
|
* If loading fails this class will dispatch an 'error' event
|
|
* @class AtlasLoader
|
|
* @extends EventTarget
|
|
* @constructor
|
|
* @param {String} url the url of the JSON file
|
|
* @param {Boolean} crossorigin
|
|
*/
|
|
|
|
PIXI.AtlasLoader = function (url, crossorigin) {
|
|
PIXI.EventTarget.call(this);
|
|
this.url = url;
|
|
this.baseUrl = url.replace(/[^\/]*$/, '');
|
|
this.crossorigin = crossorigin;
|
|
this.loaded = false;
|
|
|
|
};
|
|
|
|
// constructor
|
|
PIXI.AtlasLoader.constructor = PIXI.AtlasLoader;
|
|
|
|
/**
|
|
* This will begin loading the JSON file
|
|
*/
|
|
PIXI.AtlasLoader.prototype.load = function () {
|
|
this.ajaxRequest = new PIXI.AjaxRequest();
|
|
this.ajaxRequest.onreadystatechange = this.onAtlasLoaded.bind(this);
|
|
|
|
this.ajaxRequest.open('GET', this.url, true);
|
|
if (this.ajaxRequest.overrideMimeType) this.ajaxRequest.overrideMimeType('application/json');
|
|
this.ajaxRequest.send(null);
|
|
};
|
|
|
|
/**
|
|
* Invoke when JSON file is loaded
|
|
* @private
|
|
*/
|
|
PIXI.AtlasLoader.prototype.onAtlasLoaded = function () {
|
|
if (this.ajaxRequest.readyState === 4) {
|
|
if (this.ajaxRequest.status === 200 || window.location.href.indexOf('http') === -1) {
|
|
this.atlas = {
|
|
meta : {
|
|
image : []
|
|
},
|
|
frames : []
|
|
};
|
|
var result = this.ajaxRequest.responseText.split(/\r?\n/);
|
|
var lineCount = -3;
|
|
|
|
var currentImageId = 0;
|
|
var currentFrame = null;
|
|
var nameInNextLine = false;
|
|
|
|
var i = 0,
|
|
j = 0,
|
|
selfOnLoaded = this.onLoaded.bind(this);
|
|
|
|
// parser without rotation support yet!
|
|
for (i = 0; i < result.length; i++) {
|
|
result[i] = result[i].replace(/^\s+|\s+$/g, '');
|
|
if (result[i] === '') {
|
|
nameInNextLine = i+1;
|
|
}
|
|
if (result[i].length > 0) {
|
|
if (nameInNextLine === i) {
|
|
this.atlas.meta.image.push(result[i]);
|
|
currentImageId = this.atlas.meta.image.length - 1;
|
|
this.atlas.frames.push({});
|
|
lineCount = -3;
|
|
} else if (lineCount > 0) {
|
|
if (lineCount % 7 === 1) { // frame name
|
|
if (currentFrame != null) { //jshint ignore:line
|
|
this.atlas.frames[currentImageId][currentFrame.name] = currentFrame;
|
|
}
|
|
currentFrame = { name: result[i], frame : {} };
|
|
} else {
|
|
var text = result[i].split(' ');
|
|
if (lineCount % 7 === 3) { // position
|
|
currentFrame.frame.x = Number(text[1].replace(',', ''));
|
|
currentFrame.frame.y = Number(text[2]);
|
|
} else if (lineCount % 7 === 4) { // size
|
|
currentFrame.frame.w = Number(text[1].replace(',', ''));
|
|
currentFrame.frame.h = Number(text[2]);
|
|
} else if (lineCount % 7 === 5) { // real size
|
|
var realSize = {
|
|
x : 0,
|
|
y : 0,
|
|
w : Number(text[1].replace(',', '')),
|
|
h : Number(text[2])
|
|
};
|
|
|
|
if (realSize.w > currentFrame.frame.w || realSize.h > currentFrame.frame.h) {
|
|
currentFrame.trimmed = true;
|
|
currentFrame.realSize = realSize;
|
|
} else {
|
|
currentFrame.trimmed = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
lineCount++;
|
|
}
|
|
}
|
|
|
|
if (currentFrame != null) { //jshint ignore:line
|
|
this.atlas.frames[currentImageId][currentFrame.name] = currentFrame;
|
|
}
|
|
|
|
if (this.atlas.meta.image.length > 0) {
|
|
this.images = [];
|
|
for (j = 0; j < this.atlas.meta.image.length; j++) {
|
|
// sprite sheet
|
|
var textureUrl = this.baseUrl + this.atlas.meta.image[j];
|
|
var frameData = this.atlas.frames[j];
|
|
this.images.push(new PIXI.ImageLoader(textureUrl, this.crossorigin));
|
|
|
|
for (i in frameData) {
|
|
var rect = frameData[i].frame;
|
|
if (rect) {
|
|
PIXI.TextureCache[i] = new PIXI.Texture(this.images[j].texture.baseTexture, {
|
|
x: rect.x,
|
|
y: rect.y,
|
|
width: rect.w,
|
|
height: rect.h
|
|
});
|
|
if (frameData[i].trimmed) {
|
|
PIXI.TextureCache[i].realSize = frameData[i].realSize;
|
|
// trim in pixi not supported yet, todo update trim properties if it is done ...
|
|
PIXI.TextureCache[i].trim.x = 0;
|
|
PIXI.TextureCache[i].trim.y = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
this.currentImageId = 0;
|
|
for (j = 0; j < this.images.length; j++) {
|
|
this.images[j].addEventListener('loaded', selfOnLoaded);
|
|
}
|
|
this.images[this.currentImageId].load();
|
|
|
|
} else {
|
|
this.onLoaded();
|
|
}
|
|
|
|
} else {
|
|
this.onError();
|
|
}
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Invoke when json file loaded
|
|
* @private
|
|
*/
|
|
PIXI.AtlasLoader.prototype.onLoaded = function () {
|
|
if (this.images.length - 1 > this.currentImageId) {
|
|
this.currentImageId++;
|
|
this.images[this.currentImageId].load();
|
|
} else {
|
|
this.loaded = true;
|
|
this.dispatchEvent({
|
|
type: 'loaded',
|
|
content: this
|
|
});
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Invoke when error occured
|
|
* @private
|
|
*/
|
|
PIXI.AtlasLoader.prototype.onError = function () {
|
|
this.dispatchEvent({
|
|
type: 'error',
|
|
content: this
|
|
});
|
|
};
|
|
|
|
</pre>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script src="../assets/vendor/prettify/prettify-min.js"></script>
|
|
<script>prettyPrint();</script>
|
|
<script src="../assets/js/yui-prettify.js"></script>
|
|
<script src="../assets/../api.js"></script>
|
|
<script src="../assets/js/api-filter.js"></script>
|
|
<script src="../assets/js/api-list.js"></script>
|
|
<script src="../assets/js/api-search.js"></script>
|
|
<script src="../assets/js/apidocs.js"></script>
|
|
</body>
|
|
</html>
|