mirror of
https://github.com/wassname/phaser.git
synced 2026-08-07 11:26:10 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
361b8e5779 | ||
|
|
364492d786 |
@@ -0,0 +1,31 @@
|
||||
module.exports = function (grunt) {
|
||||
grunt.loadNpmTasks('grunt-typescript');
|
||||
grunt.loadNpmTasks('grunt-contrib-watch');
|
||||
grunt.loadNpmTasks('grunt-contrib-copy');
|
||||
|
||||
grunt.initConfig({
|
||||
pkg: grunt.file.readJSON('package.json'),
|
||||
typescript: {
|
||||
base: {
|
||||
src: ['Phaser/**/*.ts'],
|
||||
dest: 'build/phaser.js',
|
||||
options: {
|
||||
target: 'ES5'
|
||||
}
|
||||
}
|
||||
},
|
||||
copy: {
|
||||
main: {
|
||||
files: [
|
||||
{src: 'build/phaser.js', dest: 'Tests/phaser.js'}
|
||||
]}
|
||||
},
|
||||
watch: {
|
||||
files: '**/*.ts',
|
||||
tasks: ['typescript', 'copy']
|
||||
}
|
||||
});
|
||||
|
||||
grunt.registerTask('default', ['watch']);
|
||||
|
||||
}
|
||||
@@ -100,8 +100,18 @@ module Phaser {
|
||||
|
||||
if (this._anims[name])
|
||||
{
|
||||
this.currentAnim = this._anims[name];
|
||||
this.currentAnim.play(frameRate, loop);
|
||||
if (this.currentAnim == this._anims[name])
|
||||
{
|
||||
if (this.currentAnim.isPlaying == false)
|
||||
{
|
||||
this.currentAnim.play(frameRate, loop);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.currentAnim = this._anims[name];
|
||||
this.currentAnim.play(frameRate, loop);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -202,7 +202,20 @@ module Phaser {
|
||||
|
||||
if (this.onInitCallback !== null)
|
||||
{
|
||||
this.loader.reset();
|
||||
|
||||
this.onInitCallback.call(this.callbackContext);
|
||||
|
||||
// Is the loader empty?
|
||||
if (this.loader.queueSize == 0)
|
||||
{
|
||||
if (this.onCreateCallback !== null)
|
||||
{
|
||||
this.onCreateCallback.call(this.callbackContext);
|
||||
}
|
||||
|
||||
this._loadComplete = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+33
-26
@@ -18,6 +18,7 @@ module Phaser {
|
||||
this._keys = [];
|
||||
this._fileList = {};
|
||||
this._xhr = new XMLHttpRequest();
|
||||
this._queueSize = 0;
|
||||
|
||||
}
|
||||
|
||||
@@ -29,20 +30,18 @@ module Phaser {
|
||||
private _onFileLoad;
|
||||
private _progressChunk: number;
|
||||
private _xhr: XMLHttpRequest;
|
||||
private _queueSize: number;
|
||||
|
||||
public hasLoaded: bool;
|
||||
public progress: number;
|
||||
|
||||
private checkKeyExists(key: string): bool {
|
||||
public reset() {
|
||||
this._queueSize = 0;
|
||||
}
|
||||
|
||||
if (this._fileList[key])
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public get queueSize(): number {
|
||||
|
||||
return this._queueSize;
|
||||
|
||||
}
|
||||
|
||||
@@ -50,6 +49,7 @@ module Phaser {
|
||||
|
||||
if (this.checkKeyExists(key) === false)
|
||||
{
|
||||
this._queueSize++;
|
||||
this._fileList[key] = { type: 'image', key: key, url: url, data: null, error: false, loaded: false };
|
||||
this._keys.push(key);
|
||||
}
|
||||
@@ -60,6 +60,7 @@ module Phaser {
|
||||
|
||||
if (this.checkKeyExists(key) === false)
|
||||
{
|
||||
this._queueSize++;
|
||||
this._fileList[key] = { type: 'spritesheet', key: key, url: url, data: null, frameWidth: frameWidth, frameHeight: frameHeight, frameMax: frameMax, error: false, loaded: false };
|
||||
this._keys.push(key);
|
||||
}
|
||||
@@ -68,15 +69,12 @@ module Phaser {
|
||||
|
||||
public addTextureAtlas(key: string, url: string, jsonURL?: string = null, jsonData? = null) {
|
||||
|
||||
//console.log('addTextureAtlas');
|
||||
//console.log(typeof jsonData);
|
||||
|
||||
if (this.checkKeyExists(key) === false)
|
||||
{
|
||||
if (jsonURL !== null)
|
||||
{
|
||||
//console.log('A URL to a json file has been given');
|
||||
// A URL to a json file has been given
|
||||
this._queueSize++;
|
||||
this._fileList[key] = { type: 'textureatlas', key: key, url: url, data: null, jsonURL: jsonURL, jsonData: null, error: false, loaded: false };
|
||||
this._keys.push(key);
|
||||
}
|
||||
@@ -85,24 +83,21 @@ module Phaser {
|
||||
// A json string or object has been given
|
||||
if (typeof jsonData === 'string')
|
||||
{
|
||||
//console.log('A json string has been given');
|
||||
var data = JSON.parse(jsonData);
|
||||
//console.log(data);
|
||||
// Malformed?
|
||||
if (data['frames'])
|
||||
{
|
||||
//console.log('frames array found');
|
||||
this._queueSize++;
|
||||
this._fileList[key] = { type: 'textureatlas', key: key, url: url, data: null, jsonURL: null, jsonData: data['frames'], error: false, loaded: false };
|
||||
this._keys.push(key);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//console.log('A json object has been given', jsonData);
|
||||
// Malformed?
|
||||
if (jsonData['frames'])
|
||||
{
|
||||
//console.log('frames array found');
|
||||
this._queueSize++;
|
||||
this._fileList[key] = { type: 'textureatlas', key: key, url: url, data: null, jsonURL: null, jsonData: jsonData['frames'], error: false, loaded: false };
|
||||
this._keys.push(key);
|
||||
}
|
||||
@@ -118,6 +113,7 @@ module Phaser {
|
||||
|
||||
if (this.checkKeyExists(key) === false)
|
||||
{
|
||||
this._queueSize++;
|
||||
this._fileList[key] = { type: 'audio', key: key, url: url, data: null, buffer: null, error: false, loaded: false };
|
||||
this._keys.push(key);
|
||||
}
|
||||
@@ -128,6 +124,7 @@ module Phaser {
|
||||
|
||||
if (this.checkKeyExists(key) === false)
|
||||
{
|
||||
this._queueSize++;
|
||||
this._fileList[key] = { type: 'text', key: key, url: url, data: null, error: false, loaded: false };
|
||||
this._keys.push(key);
|
||||
}
|
||||
@@ -243,7 +240,6 @@ module Phaser {
|
||||
break;
|
||||
|
||||
case 'textureatlas':
|
||||
//console.log('texture atlas loaded');
|
||||
if (file.jsonURL == null)
|
||||
{
|
||||
this._game.cache.addTextureAtlas(file.key, file.url, file.data, file.jsonData);
|
||||
@@ -251,7 +247,6 @@ module Phaser {
|
||||
else
|
||||
{
|
||||
// Load the JSON before carrying on with the next file
|
||||
//console.log('Loading the JSON before carrying on with the next file');
|
||||
loadNext = false;
|
||||
this._xhr.open("GET", file.jsonURL, true);
|
||||
this._xhr.responseType = "text";
|
||||
@@ -281,12 +276,8 @@ module Phaser {
|
||||
|
||||
private jsonLoadComplete(key: string) {
|
||||
|
||||
//console.log('json load complete');
|
||||
|
||||
var data = JSON.parse(this._xhr.response);
|
||||
|
||||
//console.log(data);
|
||||
|
||||
// Malformed?
|
||||
if (data['frames'])
|
||||
{
|
||||
@@ -300,8 +291,6 @@ module Phaser {
|
||||
|
||||
private jsonLoadError(key: string) {
|
||||
|
||||
//console.log('json load error');
|
||||
|
||||
var file = this._fileList[key];
|
||||
file.error = true;
|
||||
this.nextFile(key, true);
|
||||
@@ -311,6 +300,11 @@ module Phaser {
|
||||
private nextFile(previousKey: string, success: bool) {
|
||||
|
||||
this.progress = Math.round(this.progress + this._progressChunk);
|
||||
|
||||
if (this.progress > 1)
|
||||
{
|
||||
this.progress = 1;
|
||||
}
|
||||
|
||||
if (this._onFileLoad)
|
||||
{
|
||||
@@ -335,6 +329,19 @@ module Phaser {
|
||||
|
||||
}
|
||||
|
||||
private checkKeyExists(key: string): bool {
|
||||
|
||||
if (this._fileList[key])
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Phaser
|
||||
*
|
||||
* v0.9.1 - April 19th 2013
|
||||
* v0.9.2 - April 20th 2013
|
||||
*
|
||||
* A small and feature-packed 2D canvas game framework born from the firey pits of Flixel and Kiwi.
|
||||
*
|
||||
@@ -16,6 +16,6 @@
|
||||
|
||||
module Phaser {
|
||||
|
||||
export var VERSION: string = 'Phaser version 0.9.1';
|
||||
export var VERSION: string = 'Phaser version 0.9.2';
|
||||
|
||||
}
|
||||
|
||||
@@ -520,6 +520,14 @@ module Phaser {
|
||||
this._angle = this._game.math.wrap(value, 360, 0);
|
||||
}
|
||||
|
||||
public set width(value:number) {
|
||||
this.bounds.width = value;
|
||||
}
|
||||
|
||||
public set height(value:number) {
|
||||
this.bounds.height = value;
|
||||
}
|
||||
|
||||
public get width(): number {
|
||||
return this.bounds.width;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/// <reference path="../Game.ts" />
|
||||
/// <reference path="../AnimationManager.ts" />
|
||||
/// <reference path="GameObject.ts" />
|
||||
/// <reference path="../system/Camera.ts" />
|
||||
|
||||
/**
|
||||
* Phaser - Sprite
|
||||
@@ -51,6 +52,7 @@ module Phaser {
|
||||
public renderDebug: bool = false;
|
||||
public renderDebugColor: string = 'rgba(0,255,0,0.5)';
|
||||
public renderDebugPointColor: string = 'rgba(255,255,255,1)';
|
||||
public flipped: bool = false;
|
||||
|
||||
public loadGraphic(key: string): Sprite {
|
||||
|
||||
@@ -125,7 +127,7 @@ module Phaser {
|
||||
|
||||
}
|
||||
|
||||
public set frame(value?: number) {
|
||||
public set frame(value: number) {
|
||||
this.animations.frame = value;
|
||||
}
|
||||
|
||||
@@ -133,7 +135,7 @@ module Phaser {
|
||||
return this.animations.frame;
|
||||
}
|
||||
|
||||
public set frameName(value?: string) {
|
||||
public set frameName(value: string) {
|
||||
this.animations.frameName = value;
|
||||
}
|
||||
|
||||
@@ -156,13 +158,6 @@ module Phaser {
|
||||
this._game.stage.context.globalAlpha = this.alpha;
|
||||
}
|
||||
|
||||
//if (this.flip === true)
|
||||
//{
|
||||
// this.context.save();
|
||||
// this.context.translate(game.canvas.width, 0);
|
||||
// this.context.scale(-1, 1);
|
||||
//}
|
||||
|
||||
this._sx = 0;
|
||||
this._sy = 0;
|
||||
this._sw = this.bounds.width;
|
||||
@@ -228,15 +223,24 @@ module Phaser {
|
||||
this._dy -= (camera.worldView.y * this.scrollFactor.y);
|
||||
}
|
||||
|
||||
// Rotation
|
||||
if (this.angle !== 0)
|
||||
// Rotation - needs to work from origin point really, but for now from center
|
||||
if (this.angle !== 0 || this.flipped == true)
|
||||
{
|
||||
this._game.stage.context.save();
|
||||
//this._game.stage.context.translate(this._dx + (this._dw / 2) - this.origin.x, this._dy + (this._dh / 2) - this.origin.y);
|
||||
this._game.stage.context.translate(this._dx + (this._dw / 2), this._dy + (this._dh / 2));
|
||||
this._game.stage.context.rotate(this.angle * (Math.PI / 180));
|
||||
|
||||
if (this.angle !== 0)
|
||||
{
|
||||
this._game.stage.context.rotate(this.angle * (Math.PI / 180));
|
||||
}
|
||||
|
||||
this._dx = -(this._dw / 2);
|
||||
this._dy = -(this._dh / 2);
|
||||
|
||||
if (this.flipped == true)
|
||||
{
|
||||
this._game.stage.context.scale(-1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
this._sx = Math.round(this._sx);
|
||||
@@ -285,16 +289,15 @@ module Phaser {
|
||||
this._game.stage.context.fillRect(this._dx, this._dy, this._dw, this._dh);
|
||||
}
|
||||
|
||||
if (this.renderDebug)
|
||||
if (this.flipped === true || this.rotation !== 0)
|
||||
{
|
||||
this.renderBounds();
|
||||
//this._game.stage.context.translate(0, 0);
|
||||
this._game.stage.context.restore();
|
||||
}
|
||||
|
||||
//if (this.flip === true || this.rotation !== 0)
|
||||
if (this.rotation !== 0)
|
||||
if (this.renderDebug)
|
||||
{
|
||||
this._game.stage.context.translate(0, 0);
|
||||
this._game.stage.context.restore();
|
||||
this.renderBounds(camera, cameraOffsetX, cameraOffsetY);
|
||||
}
|
||||
|
||||
if (globalAlpha > -1)
|
||||
@@ -306,7 +309,11 @@ module Phaser {
|
||||
|
||||
}
|
||||
|
||||
private renderBounds() {
|
||||
// Renders the bounding box around this Sprite and the contact points. Useful for visually debugging.
|
||||
private renderBounds(camera:Camera, cameraOffsetX:number, cameraOffsetY:number) {
|
||||
|
||||
this._dx = cameraOffsetX + (this.bounds.topLeft.x - camera.worldView.x);
|
||||
this._dy = cameraOffsetY + (this.bounds.topLeft.y - camera.worldView.y);
|
||||
|
||||
this._game.stage.context.fillStyle = this.renderDebugColor;
|
||||
this._game.stage.context.fillRect(this._dx, this._dy, this._dw, this._dh);
|
||||
|
||||
+19
-19
@@ -1,19 +1,19 @@
|
||||
/**
|
||||
* Phaser
|
||||
*
|
||||
* v0.9.1 - April 19th 2013
|
||||
*
|
||||
* A small and feature-packed 2D canvas game framework born from the firey pits of Flixel and Kiwi.
|
||||
*
|
||||
* Richard Davey (@photonstorm)
|
||||
*
|
||||
* Many thanks to Adam Saltsman (@ADAMATOMIC) for the original Flixel AS3 code on which Phaser is based.
|
||||
*
|
||||
* "If you want your children to be intelligent, read them fairy tales."
|
||||
* "If you want them to be more intelligent, read them more fairy tales."
|
||||
* -- Albert Einstein
|
||||
*/
|
||||
var Phaser;
|
||||
(function (Phaser) {
|
||||
Phaser.VERSION = 'Phaser version 0.9.1';
|
||||
})(Phaser || (Phaser = {}));
|
||||
/**
|
||||
* Phaser
|
||||
*
|
||||
* v0.9.2 - April 20th 2013
|
||||
*
|
||||
* A small and feature-packed 2D canvas game framework born from the firey pits of Flixel and Kiwi.
|
||||
*
|
||||
* Richard Davey (@photonstorm)
|
||||
*
|
||||
* Many thanks to Adam Saltsman (@ADAMATOMIC) for the original Flixel AS3 code on which Phaser is based.
|
||||
*
|
||||
* "If you want your children to be intelligent, read them fairy tales."
|
||||
* "If you want them to be more intelligent, read them more fairy tales."
|
||||
* -- Albert Einstein
|
||||
*/
|
||||
var Phaser;
|
||||
(function (Phaser) {
|
||||
Phaser.VERSION = 'Phaser version 0.9.2';
|
||||
})(Phaser || (Phaser = {}));
|
||||
|
||||
@@ -529,8 +529,6 @@ module Phaser {
|
||||
this._game.stage.context.clip();
|
||||
}
|
||||
|
||||
//this.totalSpritesRendered = this._game.world.renderSpritesInCamera(this.worldView, sx, sy);
|
||||
//this._game.world.group.render(this.worldView, this.worldView.x, this.worldView.y, sx, sy);
|
||||
this._game.world.group.render(this, this._sx, this._sy);
|
||||
|
||||
if (this.showBorder)
|
||||
|
||||
@@ -87,11 +87,16 @@ module Phaser {
|
||||
|
||||
}
|
||||
|
||||
private onComplete() {
|
||||
public restart() {
|
||||
|
||||
this.isPlaying = false;
|
||||
this.isFinished = true;
|
||||
// callback
|
||||
this.isPlaying = true;
|
||||
this.isFinished = false;
|
||||
|
||||
this._timeLastFrame = this._game.time.now;
|
||||
this._timeNextFrame = this._game.time.now + this.delay;
|
||||
|
||||
this._frameIndex = 0;
|
||||
this.currentFrame = this._frameData.getFrame(this._frames[this._frameIndex]);
|
||||
|
||||
}
|
||||
|
||||
@@ -146,6 +151,14 @@ module Phaser {
|
||||
|
||||
}
|
||||
|
||||
private onComplete() {
|
||||
|
||||
this.isPlaying = false;
|
||||
this.isFinished = true;
|
||||
// callback
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
Phaser
|
||||
======
|
||||
|
||||
Version 0.9.1
|
||||
Version 0.9.2
|
||||
|
||||
19th April 2013
|
||||
20th April 2013
|
||||
|
||||
By Richard Davey, [Photon Storm](http://www.photonstorm.com)
|
||||
|
||||
@@ -18,6 +18,13 @@ For support post to the Phaser board on the [HTML5 Game Devs forum](http://www.h
|
||||
Change Log
|
||||
----------
|
||||
|
||||
V0.9.2
|
||||
|
||||
Fixed issue with create not being called if there was an empty init method.<br />
|
||||
Added ability to flip a sprite (Sprite.flipped = true) + a test case for it.<br />
|
||||
Added ability to restart a sprite animation.<br />
|
||||
Sprite animations don't restart if you call play on them when they are already running.<br />
|
||||
|
||||
V0.9.1
|
||||
|
||||
Added the new align property to GameObjects that controls placement when rendering.<br />
|
||||
|
||||
@@ -104,6 +104,10 @@
|
||||
<Content Include="sprites\align.js">
|
||||
<DependentUpon>align.ts</DependentUpon>
|
||||
</Content>
|
||||
<TypeScriptCompile Include="sprites\flipped.ts" />
|
||||
<Content Include="sprites\flipped.js">
|
||||
<DependentUpon>flipped.ts</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="tweens\bounce.js">
|
||||
<DependentUpon>bounce.ts</DependentUpon>
|
||||
</Content>
|
||||
|
||||
+854
-818
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,36 @@
|
||||
/// <reference path="../../Phaser/Game.ts" />
|
||||
(function () {
|
||||
var myGame = new Phaser.Game(this, 'game', 800, 600, init, create, update);
|
||||
function init() {
|
||||
myGame.loader.addTextureAtlas('bot', 'assets/sprites/running_bot.png', 'assets/sprites/running_bot.json');
|
||||
myGame.loader.load();
|
||||
}
|
||||
var bot;
|
||||
var bot2;
|
||||
function create() {
|
||||
// This bot will flip properly when he reaches the edge
|
||||
bot = myGame.createSprite(myGame.stage.width, 300, 'bot');
|
||||
bot.animations.add('run');
|
||||
bot.animations.play('run', 10, true);
|
||||
bot.velocity.x = -200;
|
||||
// This one won't
|
||||
bot2 = myGame.createSprite(myGame.stage.width, 200, 'bot');
|
||||
bot2.animations.add('run');
|
||||
bot2.animations.play('run', 10, true);
|
||||
bot2.velocity.x = -150;
|
||||
}
|
||||
function update() {
|
||||
if(bot.x < -bot.width) {
|
||||
bot.flipped = true;
|
||||
bot.velocity.x = 200;
|
||||
} else if(bot.x > myGame.stage.width) {
|
||||
bot.flipped = false;
|
||||
bot.velocity.x = -200;
|
||||
}
|
||||
if(bot2.x < -bot2.width) {
|
||||
bot2.velocity.x = 200;
|
||||
} else if(bot2.x > myGame.stage.width) {
|
||||
bot2.velocity.x = -200;
|
||||
}
|
||||
}
|
||||
})();
|
||||
@@ -0,0 +1,57 @@
|
||||
/// <reference path="../../Phaser/Game.ts" />
|
||||
|
||||
(function () {
|
||||
|
||||
var myGame = new Phaser.Game(this, 'game', 800, 600, init, create, update);
|
||||
|
||||
function init() {
|
||||
|
||||
myGame.loader.addTextureAtlas('bot', 'assets/sprites/running_bot.png', 'assets/sprites/running_bot.json');
|
||||
myGame.loader.load();
|
||||
|
||||
}
|
||||
|
||||
var bot: Phaser.Sprite;
|
||||
var bot2: Phaser.Sprite;
|
||||
|
||||
function create() {
|
||||
|
||||
// This bot will flip properly when he reaches the edge
|
||||
bot = myGame.createSprite(myGame.stage.width, 300, 'bot');
|
||||
bot.animations.add('run');
|
||||
bot.animations.play('run', 10, true);
|
||||
bot.velocity.x = -200;
|
||||
|
||||
// This one won't
|
||||
bot2 = myGame.createSprite(myGame.stage.width, 200, 'bot');
|
||||
bot2.animations.add('run');
|
||||
bot2.animations.play('run', 10, true);
|
||||
bot2.velocity.x = -150;
|
||||
|
||||
}
|
||||
|
||||
function update() {
|
||||
|
||||
if (bot.x < -bot.width)
|
||||
{
|
||||
bot.flipped = true;
|
||||
bot.velocity.x = 200;
|
||||
}
|
||||
else if (bot.x > myGame.stage.width)
|
||||
{
|
||||
bot.flipped = false;
|
||||
bot.velocity.x = -200;
|
||||
}
|
||||
|
||||
if (bot2.x < -bot2.width)
|
||||
{
|
||||
bot2.velocity.x = 200;
|
||||
}
|
||||
else if (bot2.x > myGame.stage.width)
|
||||
{
|
||||
bot2.velocity.x = -200;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
})();
|
||||
@@ -10,6 +10,7 @@
|
||||
teddy = myGame.createSprite(0, 0, 'teddy');
|
||||
teddy.x = myGame.stage.centerX - teddy.width / 2;
|
||||
teddy.y = myGame.stage.centerY - teddy.height / 2;
|
||||
teddy.renderDebug = true;
|
||||
}
|
||||
function update() {
|
||||
if(myGame.input.keyboard.isDown(Phaser.Keyboard.LEFT)) {
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
teddy = myGame.createSprite(0, 0, 'teddy');
|
||||
teddy.x = myGame.stage.centerX - teddy.width / 2;
|
||||
teddy.y = myGame.stage.centerY - teddy.height / 2;
|
||||
teddy.renderDebug = true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Vendored
+1
File diff suppressed because one or more lines are too long
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"name": "Phaser",
|
||||
"version": "0.9.1",
|
||||
"description": "html5 game framework",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://photonstorm@github.com/photonstorm/phaser.git"
|
||||
},
|
||||
"keywords": [
|
||||
"HTML5",
|
||||
"game",
|
||||
"canvas",
|
||||
"2d"
|
||||
],
|
||||
"author": "Richard Davey",
|
||||
"license": "BSD",
|
||||
"readmeFilename": "README.md",
|
||||
"gitHead": "1217bf4722768514fe15ff904dab59f848d146f4",
|
||||
"devDependencies": {
|
||||
"grunt": "~0.4.1",
|
||||
"typescript": "~0.8.3",
|
||||
"grunt-typescript": "~0.1.4",
|
||||
"grunt-contrib-watch": "~0.3.1",
|
||||
"grunt-contrib-connect": "~0.3.0",
|
||||
"grunt-open": "~0.2.0",
|
||||
"grunt-contrib-copy": "~0.4.1"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user