/**** * Classes ****/ var Explosion = Container.expand(function () { var self = Container.call(this); var explosionGraphics = self.attachAsset('orbs', { anchorX: 0.5, anchorY: 0.5 }); self.update = function () { if (explosionGraphics.scale.x < 2) { explosionGraphics.scale.x += 0.04; explosionGraphics.scale.y += 0.04; explosionGraphics.alpha -= 0.04; } else { self.destroy(); } }; }); var SpinningSquare = Container.expand(function () { var self = Container.call(this); var squareGraphics = self.attachAsset('square', { anchorX: 0.5, anchorY: 0.5 }); squareGraphics.tint = Math.floor(Math.random() * 0xFFFFFF); self.score = squareGraphics.tint / 0x222222 * 10; squareGraphics.blendMode = 1; self.rotationSpeed = 0.01; self.rotate = function () { self.rotation += self.rotationSpeed; }; self.originalX = 0; self.originalY = 0; self.velocityX = 0; self.velocityY = 0; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ LK.setScore(0); var spinningSquares = []; var lastTouchTime = LK.ticks; for (var i = 0; i < 420; i++) { var spinningSquare = game.addChild(new SpinningSquare()); spinningSquare.x = Math.random() * 2048; spinningSquare.y = Math.random() * 2732 * 0.85 + 2732 * 0.15; spinningSquare.rotation = Math.atan2(spinningSquare.y - 2732 / 2, spinningSquare.x - 2048 / 2); spinningSquare.originalX = spinningSquare.x; spinningSquare.originalY = spinningSquare.y; spinningSquares.push(spinningSquare); } game.drag = function (obj) { var event = obj.event; var pos = game.toLocal(event.global); lastTouchTime = LK.ticks; for (var i = 0; i < spinningSquares.length; i++) { var dx = spinningSquares[i].x - pos.x; var dy = spinningSquares[i].y - pos.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance < 200) { spinningSquares[i].bounceBack = true; spinningSquares[i].bounceBackX = dx * 1.5; spinningSquares[i].bounceBackY = dy * 1.5; if (spinningSquares[i].squareGraphics && spinningSquares[i].squareGraphics.tint == 0xFF0000) { LK.setScore(LK.getScore() - 2); } else { LK.setScore(LK.getScore() + 1); } scoreBar.setText(LK.getScore().toString()); var explosion = game.addChild(new Explosion()); explosion.x = spinningSquares[i].x; explosion.y = spinningSquares[i].y; spinningSquares[i].destroy(); spinningSquares.splice(i, 1); LK.setTimeout(function () { var spinningSquare = game.addChild(new SpinningSquare()); spinningSquare.x = Math.random() * 2048; spinningSquare.y = Math.random() * 2732 * 0.85 + 2732 * 0.15; spinningSquare.rotation = Math.atan2(spinningSquare.y - 2732 / 2, spinningSquare.x - 2048 / 2); spinningSquare.originalX = spinningSquare.x; spinningSquare.originalY = spinningSquare.y; spinningSquares.push(spinningSquare); }, Math.random() * 1000); } } }; // Create a black filter for the score var scoreFilter = LK.getAsset('square', { anchorX: 0.5, anchorY: 0, scaleX: 2, scaleY: 0.1, tint: 0x000000 }); LK.gui.top.addChild(scoreFilter); // Create a score bar var scoreBar = new Text2('0', { size: 128, fill: 0xFFFFFF }); scoreBar.anchor.set(0.5, 0); LK.gui.top.addChild(scoreBar); game.on('down', function (x, y, obj) { obj.event = obj; game.drag(obj); }); game.on('move', function (x, y, obj) { obj.event = obj; game.drag(obj); }); LK.on('tick', function () { for (var i = 0; i < spinningSquares.length; i++) { spinningSquares[i].rotationSpeed = 0.007; spinningSquares[i].rotate(); if (spinningSquares[i].bounceBack) { spinningSquares[i].x += spinningSquares[i].bounceBackX * 0.1; spinningSquares[i].y += spinningSquares[i].bounceBackY * 0.1; spinningSquares[i].bounceBackX *= 0.9; spinningSquares[i].bounceBackY *= 0.9; if (Math.abs(spinningSquares[i].bounceBackX) < .025 && Math.abs(spinningSquares[i].bounceBackY) < .025) { if (LK.ticks - lastTouchTime > 60) { spinningSquares[i].bounceBack = false; } } } if (!spinningSquares[i].bounceBack) { var dx = spinningSquares[i].originalX - spinningSquares[i].x; var dy = spinningSquares[i].originalY - spinningSquares[i].y; spinningSquares[i].velocityX += dx * 0.01; spinningSquares[i].velocityY += dy * 0.01; spinningSquares[i].x += spinningSquares[i].velocityX; spinningSquares[i].y += spinningSquares[i].velocityY; spinningSquares[i].velocityX *= 0.9; spinningSquares[i].velocityY *= 0.9; } } });
/****
* Classes
****/
var Explosion = Container.expand(function () {
var self = Container.call(this);
var explosionGraphics = self.attachAsset('orbs', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
if (explosionGraphics.scale.x < 2) {
explosionGraphics.scale.x += 0.04;
explosionGraphics.scale.y += 0.04;
explosionGraphics.alpha -= 0.04;
} else {
self.destroy();
}
};
});
var SpinningSquare = Container.expand(function () {
var self = Container.call(this);
var squareGraphics = self.attachAsset('square', {
anchorX: 0.5,
anchorY: 0.5
});
squareGraphics.tint = Math.floor(Math.random() * 0xFFFFFF);
self.score = squareGraphics.tint / 0x222222 * 10;
squareGraphics.blendMode = 1;
self.rotationSpeed = 0.01;
self.rotate = function () {
self.rotation += self.rotationSpeed;
};
self.originalX = 0;
self.originalY = 0;
self.velocityX = 0;
self.velocityY = 0;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
LK.setScore(0);
var spinningSquares = [];
var lastTouchTime = LK.ticks;
for (var i = 0; i < 420; i++) {
var spinningSquare = game.addChild(new SpinningSquare());
spinningSquare.x = Math.random() * 2048;
spinningSquare.y = Math.random() * 2732 * 0.85 + 2732 * 0.15;
spinningSquare.rotation = Math.atan2(spinningSquare.y - 2732 / 2, spinningSquare.x - 2048 / 2);
spinningSquare.originalX = spinningSquare.x;
spinningSquare.originalY = spinningSquare.y;
spinningSquares.push(spinningSquare);
}
game.drag = function (obj) {
var event = obj.event;
var pos = game.toLocal(event.global);
lastTouchTime = LK.ticks;
for (var i = 0; i < spinningSquares.length; i++) {
var dx = spinningSquares[i].x - pos.x;
var dy = spinningSquares[i].y - pos.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < 200) {
spinningSquares[i].bounceBack = true;
spinningSquares[i].bounceBackX = dx * 1.5;
spinningSquares[i].bounceBackY = dy * 1.5;
if (spinningSquares[i].squareGraphics && spinningSquares[i].squareGraphics.tint == 0xFF0000) {
LK.setScore(LK.getScore() - 2);
} else {
LK.setScore(LK.getScore() + 1);
}
scoreBar.setText(LK.getScore().toString());
var explosion = game.addChild(new Explosion());
explosion.x = spinningSquares[i].x;
explosion.y = spinningSquares[i].y;
spinningSquares[i].destroy();
spinningSquares.splice(i, 1);
LK.setTimeout(function () {
var spinningSquare = game.addChild(new SpinningSquare());
spinningSquare.x = Math.random() * 2048;
spinningSquare.y = Math.random() * 2732 * 0.85 + 2732 * 0.15;
spinningSquare.rotation = Math.atan2(spinningSquare.y - 2732 / 2, spinningSquare.x - 2048 / 2);
spinningSquare.originalX = spinningSquare.x;
spinningSquare.originalY = spinningSquare.y;
spinningSquares.push(spinningSquare);
}, Math.random() * 1000);
}
}
};
// Create a black filter for the score
var scoreFilter = LK.getAsset('square', {
anchorX: 0.5,
anchorY: 0,
scaleX: 2,
scaleY: 0.1,
tint: 0x000000
});
LK.gui.top.addChild(scoreFilter);
// Create a score bar
var scoreBar = new Text2('0', {
size: 128,
fill: 0xFFFFFF
});
scoreBar.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreBar);
game.on('down', function (x, y, obj) {
obj.event = obj;
game.drag(obj);
});
game.on('move', function (x, y, obj) {
obj.event = obj;
game.drag(obj);
});
LK.on('tick', function () {
for (var i = 0; i < spinningSquares.length; i++) {
spinningSquares[i].rotationSpeed = 0.007;
spinningSquares[i].rotate();
if (spinningSquares[i].bounceBack) {
spinningSquares[i].x += spinningSquares[i].bounceBackX * 0.1;
spinningSquares[i].y += spinningSquares[i].bounceBackY * 0.1;
spinningSquares[i].bounceBackX *= 0.9;
spinningSquares[i].bounceBackY *= 0.9;
if (Math.abs(spinningSquares[i].bounceBackX) < .025 && Math.abs(spinningSquares[i].bounceBackY) < .025) {
if (LK.ticks - lastTouchTime > 60) {
spinningSquares[i].bounceBack = false;
}
}
}
if (!spinningSquares[i].bounceBack) {
var dx = spinningSquares[i].originalX - spinningSquares[i].x;
var dy = spinningSquares[i].originalY - spinningSquares[i].y;
spinningSquares[i].velocityX += dx * 0.01;
spinningSquares[i].velocityY += dy * 0.01;
spinningSquares[i].x += spinningSquares[i].velocityX;
spinningSquares[i].y += spinningSquares[i].velocityY;
spinningSquares[i].velocityX *= 0.9;
spinningSquares[i].velocityY *= 0.9;
}
}
});