/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Logo class
var Logo = Container.expand(function () {
var self = Container.call(this);
var logoGraphics = self.attachAsset('logo', {
anchorX: 0.5,
anchorY: 0.5
});
});
/****
* Initialize Game
****/
//<Write entity 'classes' with empty functions for important behavior here>
var game = new LK.Game({
backgroundColor: 0x5D92B1 //Change background color to pastel dark blue
});
/****
* Game Code
****/
var logo = game.addChild(new Logo());
logo.x = -logo.width;
logo.y = -logo.height;
var logoIn = false; // Track the state of the logo (in or out)
var easingIndex = 0;
var easingFunctionsIn = [tween.linear, tween.easeIn, tween.elasticIn, tween.bounceIn];
var easingFunctionsInNames = ['linear', 'easeIn', 'elasticIn', 'bounceIn'];
var easingFunctionsOut = [tween.linear, tween.easeOut, tween.elasticOut, tween.bounceOut];
var easingFunctionsOutNames = ['linear', 'easeOut', 'elasticOut', 'bounceOut'];
var corners = [{
x: logo.width / 2 + 20,
y: logo.height / 2 + 20
},
// Top left
{
x: 2048 - logo.width / 2 - 20,
y: logo.height / 2 + 20
},
// Top right
{
x: logo.width / 2 + 20,
y: 2732 - logo.height / 2 - 20
},
// Bottom left
{
x: 2048 - logo.width / 2 - 20,
y: 2732 - logo.height / 2 - 20
} // Bottom right
];
var isMoving = false; // Flag to check if the logo is moving
game.down = function (x, y, obj) {
if (isMoving) {
return;
} // If the logo is moving, ignore the click
animateLogo(logoIn);
//easingText.setText(logoIn ? easingFunctionsInNames[easingIndex % easingFunctionsIn.length] : easingFunctionsOutNames[easingIndex % easingFunctionsOut.length]);
};
function animateLogo(isLogoIn) {
isMoving = true; // Set the flag to true when the logo starts moving
var corner;
if (isLogoIn) {
// If logo is in, animate it out
selectedEasing = easingFunctionsOut[easingIndex % easingFunctionsOut.length];
easingText.setText(easingFunctionsOutNames[easingIndex % easingFunctionsOut.length]);
// Randomly select a corner for the logo to appear
corner = corners[Math.floor(Math.random() * corners.length)];
} else {
// If logo is out, animate it in
selectedEasing = easingFunctionsIn[easingIndex % easingFunctionsIn.length];
easingText.setText(easingFunctionsInNames[easingIndex % easingFunctionsIn.length]);
corner = corners[Math.floor(Math.random() * corners.length)];
}
tween(logo, {
x: isLogoIn ? corner.x : 1024,
y: isLogoIn ? corner.y : 1366
}, {
duration: 2000,
easing: selectedEasing,
onFinish: function onFinish() {
isMoving = false; // Set the flag to false when the logo stops moving
if (isLogoIn) {
animateLogo(false);
} else {
easingIndex++;
}
}
});
logoIn = !isLogoIn;
}
// Add a text 'Easing' in bottom center
var easingText = new Text2('Easing', {
size: 150,
fill: 0x0000FF
});
easingText.anchor.set(0.5, 1); // Sets anchor to the center of the bottom edge of the text.
easingText.x = 1024; // Center of the game width
easingText.y = 2632; // Bottom of the game height
easingText.tint = 0xFF0000;
game.addChild(easingText);
animateLogo(true);