//# Using a sprite sheet
//This file demonstrates how to set the source location of the image within an image map.
//This example demonstrates how to set the source location of the image within an image map.
//It uses an image `resources/images/stars.png` which contains nine separate images
//in a grid. Each of the nine images is displayed in a loop.
//Import the `ui.ImageView` class.
import ui.ImageView as ImageView;
//## Class: Application
//An application with default settings is defined.
exports = Class(GC.Application, function () {
this.initUI = function() {
//The SheetView class is instantiated with the root view as the parent.
new SheetView({
superview: this.view,
x: 10,
y: 10,
width: 26 * 3,
height: 26 * 3,
image: "resources/images/stars.png"
});
};
this.launchUI = function () {};
});
//## Class: SheetView
//Create a class to display an image from a sprite map:
var SheetView = Class(ImageView, function(supr) {
this.init = function(opts) {
supr(this, "init", [opts]);
// The map contains three rows and three columns of images...
var map = this.getImage().getMap();
// Get the initial location,
// if the image is packed in a sprite sheet then the left top
// position is probably not (0, 0)
this._offsetX = map.x;
this._offsetY = map.y;
// Get the size of the image in the sprite sheet, it is posible that the image is scaled.
this._sizeX = (map.width / 3) | 0;
this._sizeY = (map.height / 3) | 0;
this._index = 0;
this._dt = 500;
};
//The tick function is called each frame.
this.tick = function (dt) {
this._dt += dt;
if (this._dt > 500) {
this._dt %= 500;
// Change the index, there are nine images.
this._index = (this._index + 1) % 9;
var map = this.getImage().getMap();
// Use the values from the initial map.
map.width = this._sizeX;
map.height = this._sizeY;
map.x = this._offsetX + ((this._index / 3) | 0) * this._sizeX;
map.y = this._offsetY + (this._index % 3) * this._sizeY;
}
};
});
//A screenshot of one of the sprites on screen:
//