User prompt
rename randomEasing
Code edit (3 edits merged)
Please save this source code
User prompt
update corners so the logo stays with screen boundaries
User prompt
fix x: isLogoIn ? -logo.width : 1024, y: isLogoIn ? -logo.height : 1366 to stay in screen boundaries
Code edit (1 edits merged)
Please save this source code
User prompt
in ` tween(logo, { x: isLogoIn ? logo.width / 2 : 1024, y: isLogoIn ? logo.height / 2 : 1366 } ` use a random corner
User prompt
in ` tween(logo, { x: isLogoIn ? logo.width / 2 : 1024, y: isLogoIn ? logo.height / 2 : 1366 } ` use a random corner instead of logo.width / 2, logo.height / 2
User prompt
in corners change 50 offset to 20
Code edit (2 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: corner is undefined' in or related to this line: 'corner.x = logo.x;' Line Number: 78
Code edit (7 edits merged)
Please save this source code
User prompt
Ok. clean the code
User prompt
restore the first logo entrance code : ``` tween(logo, { x: 1024, y: 1366 }, { duration: 2000, easing: tween.elasticIn, onFinish: function onFinish() { isMoving = false; // Set the flag to false when the logo stops moving logoIn = true; } }); ```
Code edit (3 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
/****
* 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 easingFunctionsOut = [tween.linear, tween.easeOut, tween.elasticOut, tween.bounceOut];
var easingFunctionsOutNames = ['linear', 'easeOut', 'elasticOut', 'bounceOut'];
var easingFunctionsInNames = ['linear', 'easeIn', 'elasticIn', 'bounceIn'];
var corners = [{
x: -logo.width,
y: -logo.height
},
// Top left
{
x: 2048 + logo.width,
y: -logo.height
},
// Top right
{
x: -logo.width,
y: 2732 + logo.height
},
// Bottom left
{
x: 2048 + logo.width,
y: 2732 + logo.height
} // 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
if (!isLogoIn) {
// If logo is out, animate it in
// Randomly select a corner for the logo to appear
var corner = corners[Math.floor(Math.random() * corners.length)];
logo.x = corner.x;
logo.y = corner.y;
selectedEasing = easingFunctionsIn[easingIndex % easingFunctionsIn.length];
easingText.setText(easingFunctionsInNames[easingIndex % easingFunctionsIn.length]);
} else {
// If logo is in, animate it out
selectedEasing = easingFunctionsOut[easingIndex % easingFunctionsOut.length];
easingText.setText(easingFunctionsOutNames[easingIndex % easingFunctionsOut.length]);
}
tween(logo, {
x: isLogoIn ? -logo.width : 1024,
y: isLogoIn ? -logo.height : 1366
}, {
duration: 2000,
easing: selectedEasing,
onFinish: function onFinish() {
isMoving = false; // Set the flag to false when the logo stops moving
if (isLogoIn) {
animateLogo(false);
}
}
});
logoIn = !isLogoIn;
easingIndex++;
}
tween(logo, {
x: 1024,
y: 1366
}, {
duration: 2000,
easing: tween.elasticIn
});
// Add a text 'Easing' in bottom center
var easingText = new Text2('Easing', {
size: 150,
fill: 0xFFFFFF
});
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 = 0xFFFFFF;
game.addChild(easingText);