User prompt
The eraser button not fitting in the right corner of the colorpanel so fix it
User prompt
Move back the clear button next to save button
User prompt
I asked from you that the eraser place is the right corner of the colorpanel and not in the toolpanel
User prompt
Could you add an eraser button to the top right corner of the colortools? If this button is selected, a black slider will pop up on the right side of the screen, which can be used to choose the thickness of the eraser, how much area the player can erase when they touch the screen with their finger or click with the mouse.
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'savedEggs.push(newEggData);' Line Number: 517 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
This last vertical line color should be e6e6fa colorcode
User prompt
The rotate left and rotate right buttons touch each other. Divide them two with a thin grey vertical line so they don't touch each other
User prompt
Decrease the distance between left and right rotate button
User prompt
But at now this is to much distance
User prompt
The rotate left and rotate right buttons touch each other. Divide the two so they don't touch each other
User prompt
Ensure that the egg is upper in the display order than the basket
User prompt
Move down the colorpanel by 5 units
User prompt
Move down the colorpanel by 3 units
User prompt
The toolbar buttons have slipped together. Put the buttons 15 units apart
User prompt
The toolbar buttons have slipped together. Put the buttons 25 units apart
User prompt
Move all colors left by 10 units
User prompt
Bring the colors next to each other in a row a little closer to each other, the same distance as the distance between the colors below each other
User prompt
Edit the distance between two colors from 25 units to 10 units
User prompt
Move all colors left by 10 units
User prompt
Move up the upper color row by 10 units
User prompt
Move all colors left by 10 units
User prompt
Move all colors left by 10 units
User prompt
Move all colors left by 50 units
User prompt
Move all colors left by 50 units
User prompt
Add them to the colopanel
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { savedEggs: [] }); /**** * Classes ****/ var BrushStroke = Container.expand(function (color, size) { var self = Container.call(this); var stroke = self.attachAsset('brushStroke', { anchorX: 0.5, anchorY: 0.5, scaleX: size / 30, scaleY: size / 30 }); stroke.tint = color; return self; }); var Button = Container.expand(function (label, color) { var self = Container.call(this); var background = self.attachAsset('buttonBg', { anchorX: 0.5, anchorY: 0.5 }); var text = new Text2(label, { size: 30, fill: 0xFFFFFF }); text.anchor.set(0.5, 0.5); self.addChild(text); if (color !== undefined) { background.tint = color; } self.down = function () { tween(background, { scaleX: 0.9, scaleY: 0.9 }, { duration: 100 }); }; self.up = function () { tween(background, { scaleX: 1, scaleY: 1 }, { duration: 100 }); }; return self; }); var ColorButton = Container.expand(function (color) { var self = Container.call(this); var button = self.attachAsset('colorButton', { anchorX: 0.5, anchorY: 0.5 }); button.tint = color; self.color = color; self.down = function () { tween(button, { scaleX: 0.9, scaleY: 0.9 }, { duration: 100 }); }; self.up = function () { tween(button, { scaleX: 1, scaleY: 1 }, { duration: 100 }); }; return self; }); var CompletedEgg = Container.expand(function (baseColor) { var self = Container.call(this); var eggGraphic = self.attachAsset('completedEgg', { anchorX: 0.5, anchorY: 0.5 }); eggGraphic.tint = baseColor || 0xFFFFFF; // Add some random decoration to make each egg look unique for (var i = 0; i < 5; i++) { var glitter = self.attachAsset('glitter', { anchorX: 0.5, anchorY: 0.5, x: (Math.random() - 0.5) * 80, y: (Math.random() - 0.5) * 120 }); glitter.tint = 0xFFD700 + Math.floor(Math.random() * 0x555555); } return self; }); var EasterEgg = Container.expand(function () { var self = Container.call(this); var eggBase = self.attachAsset('eggBase', { anchorX: 0.5, anchorY: 0.5 }); var designContainer = new Container(); self.addChild(designContainer); self.addDesign = function (x, y, designElement) { var localPosition = designContainer.toLocal({ x: x, y: y }, game); designElement.x = localPosition.x; designElement.y = localPosition.y; designContainer.addChild(designElement); }; self.clearDesigns = function () { while (designContainer.children.length > 0) { designContainer.removeChild(designContainer.children[0]); } }; self.rotate = function (angle) { eggBase.rotation += angle; designContainer.rotation += angle; }; self.captureDesign = function () { // In a real implementation, this would create a snapshot of the egg // For this simplified version, we just create a new completed egg with the same tint var completedEgg = new CompletedEgg(eggBase.tint); return completedEgg; }; return self; }); var Sticker = Container.expand(function (type, scale) { var self = Container.call(this); var stickerAsset; if (type === 'star') { stickerAsset = self.attachAsset('stickerStar', { anchorX: 0.5, anchorY: 0.5, scaleX: scale, scaleY: scale }); } else if (type === 'heart') { stickerAsset = self.attachAsset('stickerHeart', { anchorX: 0.5, anchorY: 0.5, scaleX: scale, scaleY: scale }); } self.down = function () { tween(stickerAsset, { scaleX: scale * 0.9, scaleY: scale * 0.9 }, { duration: 100 }); }; self.up = function () { tween(stickerAsset, { scaleX: scale, scaleY: scale }, { duration: 100 }); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xAFEEEE // Light turquoise background color }); /**** * Game Code ****/ // Define color palette var colors = [0xFF0000, // Red 0xFF7F00, // Orange 0xFFFF00, // Yellow 0x00FF00, // Green 0x0000FF, // Blue 0x4B0082, // Indigo 0x9400D3, // Violet 0xFFFFFF, // White 0x000000, // Black 0xFF69B4, // Hot Pink 0x00FFFF, // Cyan 0x8A2BE2, // Blue Violet 0xA52A2A, // Brown 0x808080, // Gray 0x32CD32, // Lime Green 0x008080, // Teal 0xFFD700, // Gold 0x000080, // Navy Blue 0x808000, // Olive 0x800000 // Maroon ]; // Define brush sizes var brushSizes = [10, 20, 30]; // Initialize game variables var currentColor = colors[0]; var currentBrushSize = brushSizes[1]; var currentEraserSize = 50; var currentTool = 'brush'; var isPainting = false; var lastX, lastY; var eraserSliderVisible = false; // Ensure savedEggs is properly initialized in storage var savedEggs = []; if (storage.savedEggs && Array.isArray(storage.savedEggs)) { savedEggs = storage.savedEggs; } else { storage.savedEggs = []; } // Create main egg var easterEgg = new EasterEgg(); easterEgg.x = 2048 / 2; easterEgg.y = 2732 / 2 - 200; game.addChild(easterEgg); // Create UI components // Tool panel var toolPanel = LK.getAsset('toolPanel', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2 - 5, y: 2732 - 100 // Moved up by 20 units }); game.addChild(toolPanel); // Color panel var colorPanel = LK.getAsset('colorPanel', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 - 345 // Moved down by 5 units }); game.addChild(colorPanel); // Add color buttons var colorButtons = []; for (var i = 0; i < colors.length; i++) { var colorButton = new ColorButton(colors[i]); // Position in two rows (10 in first row, 10 in second row) if (i < 10) { // First row colorButton.x = i * 130 + 160; // Changed spacing from 145 to 130, moved left by 10 units colorButton.y = 2732 - 410; // First row - moved up by 10 units } else { // Second row colorButton.x = (i - 10) * 130 + 160; // Changed spacing from 145 to 130, moved left by 10 units colorButton.y = 2732 - 280; // Second row } game.addChild(colorButton); colorButtons.push(colorButton); // Scale up by 2x tween(colorButton, { scaleX: 2, scaleY: 2 }, { duration: 300 }); // Add click handler (function (color) { colorButton.down = function () { tween(colorButton, { scaleX: 1.8, scaleY: 1.8 }, { duration: 100 }); currentColor = color; }; colorButton.up = function () { tween(colorButton, { scaleX: 2, scaleY: 2 }, { duration: 100 }); }; })(colors[i]); } // Create tool buttons // Calculate button width including scale factor var buttonWidth = 120 * 2; // 120px width * 2 scale var buttonSpacing = 25; // 25 units apart var startX = 300; // Starting X position // Create tool buttons var brushButton = new Button("Brush", 0x6495ED); brushButton.x = startX - 75; // Moved left by 25 more units brushButton.y = 2732 - 100; // Moved up by 20 units game.addChild(brushButton); tween(brushButton, { scaleX: 2.2, scaleY: 2 }, { duration: 300 }); brushButton.down = function () { tween(brushButton, { scaleX: 1.98, scaleY: 1.8 }, { duration: 100 }); }; brushButton.up = function () { tween(brushButton, { scaleX: 2.2, scaleY: 2 }, { duration: 100 }); currentTool = 'brush'; toggleEraserThicknessSlider(false); }; var stickerStarButton = new Button("Star", 0xFFD700); stickerStarButton.x = startX + (buttonWidth + buttonSpacing) * 1 - 75; // Moved left by 25 more units stickerStarButton.y = 2732 - 100; // Moved up by 20 units game.addChild(stickerStarButton); tween(stickerStarButton, { scaleX: 2.2, scaleY: 2 }, { duration: 300 }); stickerStarButton.down = function () { tween(stickerStarButton, { scaleX: 1.98, scaleY: 1.8 }, { duration: 100 }); }; stickerStarButton.up = function () { tween(stickerStarButton, { scaleX: 2.2, scaleY: 2 }, { duration: 100 }); currentTool = 'star'; toggleEraserThicknessSlider(false); }; var stickerHeartButton = new Button("Heart", 0xFF0000); stickerHeartButton.x = startX + (buttonWidth + buttonSpacing) * 2 - 75; // Moved left by 25 more units stickerHeartButton.y = 2732 - 100; // Moved up by 20 units game.addChild(stickerHeartButton); tween(stickerHeartButton, { scaleX: 2.2, scaleY: 2 }, { duration: 300 }); stickerHeartButton.down = function () { tween(stickerHeartButton, { scaleX: 1.98, scaleY: 1.8 }, { duration: 100 }); }; stickerHeartButton.up = function () { tween(stickerHeartButton, { scaleX: 2.2, scaleY: 2 }, { duration: 100 }); currentTool = 'heart'; toggleEraserThicknessSlider(false); }; var rotateLeftButton = new Button("< Rotate", 0x9370DB); rotateLeftButton.x = startX + (buttonWidth + buttonSpacing) * 3 - 75; // Moved left by 25 more units rotateLeftButton.y = 2732 - 100; // Moved up by 20 units game.addChild(rotateLeftButton); tween(rotateLeftButton, { scaleX: 2.2, scaleY: 2 }, { duration: 300 }); rotateLeftButton.down = function () { tween(rotateLeftButton, { scaleX: 1.98, scaleY: 1.8 }, { duration: 100 }); }; rotateLeftButton.up = function () { tween(rotateLeftButton, { scaleX: 2.2, scaleY: 2 }, { duration: 100 }); easterEgg.rotate(-Math.PI / 8); }; // Add a thin grey vertical divider between rotate buttons var divider = LK.getAsset('buttonBg', { anchorX: 0.5, anchorY: 0.5, x: startX + (buttonWidth + buttonSpacing) * 3.5 - 75, // Position between the two rotate buttons y: 2732 - 100, // Same Y as buttons scaleX: 0.05, // Make it thin scaleY: 2 // Same height as buttons }); divider.tint = 0xe6e6fa; // Light lavender color game.addChild(divider); var rotateRightButton = new Button("Rotate >", 0x9370DB); rotateRightButton.x = startX + (buttonWidth + buttonSpacing) * 4 - 75; // Moved left by 25 more units rotateRightButton.y = 2732 - 100; // Moved up by 20 units game.addChild(rotateRightButton); tween(rotateRightButton, { scaleX: 2.2, scaleY: 2 }, { duration: 300 }); rotateRightButton.down = function () { tween(rotateRightButton, { scaleX: 1.98, scaleY: 1.8 }, { duration: 100 }); }; rotateRightButton.up = function () { tween(rotateRightButton, { scaleX: 2.2, scaleY: 2 }, { duration: 100 }); easterEgg.rotate(Math.PI / 8); }; var saveButton = new Button("Save", 0x32CD32); saveButton.x = startX + (buttonWidth + buttonSpacing) * 5 - 75; // Moved left by 25 more units saveButton.y = 2732 - 100; // Moved up by 20 units game.addChild(saveButton); tween(saveButton, { scaleX: 2.2, scaleY: 2 }, { duration: 300 }); saveButton.down = function () { tween(saveButton, { scaleX: 1.98, scaleY: 1.8 }, { duration: 100 }); }; saveButton.up = function () { tween(saveButton, { scaleX: 2.2, scaleY: 2 }, { duration: 100 }); // Save the current egg design var completedEgg = easterEgg.captureDesign(); // Add to saved eggs var newEggData = { x: 150 + savedEggs.length % 4 * 180, y: 2732 - 600 - Math.floor(savedEggs.length / 4) * 220, color: currentColor }; // Ensure savedEggs is properly initialized as an array if (!Array.isArray(savedEggs)) { savedEggs = []; } // Add the new egg data to our array savedEggs.push(newEggData); // Update storage with a copy of the array storage.savedEggs = savedEggs.slice(); // Play save sound LK.getSound('saveSound').play(); // Add the egg to the basket display displaySavedEggs(); // Increment score LK.setScore(LK.getScore() + 1); // Clear the current egg for a new design easterEgg.clearDesigns(); }; var eraserButton = new Button("Eraser", 0x808080); eraserButton.x = startX + (buttonWidth + buttonSpacing) * 6 - 75; // Moved left by 25 more units eraserButton.y = 2732 - 100; // Moved up by 20 units game.addChild(eraserButton); tween(eraserButton, { scaleX: 2.2, scaleY: 2 }, { duration: 300 }); eraserButton.down = function () { tween(eraserButton, { scaleX: 1.98, scaleY: 1.8 }, { duration: 100 }); }; eraserButton.up = function () { tween(eraserButton, { scaleX: 2.2, scaleY: 2 }, { duration: 100 }); currentTool = 'eraser'; toggleEraserThicknessSlider(true); }; var clearButton = new Button("Clear", 0xFF6347); clearButton.x = startX + (buttonWidth + buttonSpacing) * 7 - 75; // Moved to next position clearButton.y = 2732 - 100; // Moved up by 20 units game.addChild(clearButton); tween(clearButton, { scaleX: 2.2, scaleY: 2 }, { duration: 300 }); clearButton.down = function () { tween(clearButton, { scaleX: 1.98, scaleY: 1.8 }, { duration: 100 }); }; clearButton.up = function () { tween(clearButton, { scaleX: 2.2, scaleY: 2 }, { duration: 100 }); easterEgg.clearDesigns(); LK.getSound('clearSound').play(); toggleEraserThicknessSlider(false); }; // Create eraser thickness slider var sliderContainer = new Container(); sliderContainer.x = 2048 - 100; sliderContainer.y = 2732 / 2 - 400; sliderContainer.visible = false; game.addChild(sliderContainer); var sliderTrack = LK.getAsset('buttonBg', { anchorX: 0.5, anchorY: 0.5, x: 0, y: 0, scaleX: 0.5, scaleY: 6 }); sliderTrack.tint = 0xCCCCCC; sliderContainer.addChild(sliderTrack); var sliderThumb = LK.getAsset('buttonBg', { anchorX: 0.5, anchorY: 0.5, x: 0, y: 0, scaleX: 1.2, scaleY: 0.5 }); sliderThumb.tint = 0x000000; sliderContainer.addChild(sliderThumb); // Size label var sizeLabel = new Text2(currentEraserSize.toString(), { size: 40, fill: 0x000000 }); sizeLabel.anchor.set(0.5, 0.5); sizeLabel.x = 0; sizeLabel.y = -400; sliderContainer.addChild(sizeLabel); // Function to update eraser size from slider position function updateEraserSize(y) { // Constrain y position to slider track bounds var trackHeight = sliderTrack.height * sliderTrack.scale.y; var halfTrackHeight = trackHeight / 2; var constrainedY = Math.max(-halfTrackHeight, Math.min(halfTrackHeight, y)); // Update thumb position sliderThumb.y = constrainedY; // Calculate eraser size (10 to 100) var percentage = (halfTrackHeight - constrainedY) / trackHeight; currentEraserSize = Math.round(10 + percentage * 90); sizeLabel.setText(currentEraserSize.toString()); } // Set initial thumb position updateEraserSize(0); // Function to toggle eraser thickness slider visibility function toggleEraserThicknessSlider(visible) { eraserSliderVisible = visible; sliderContainer.visible = visible; // Reset other tools when showing slider if (visible) { currentTool = 'eraser'; } } // Event handlers for slider thumb sliderThumb.interactive = true; sliderThumb.down = function (x, y, obj) { sliderThumb.dragging = true; sliderThumb.lastY = y; }; sliderThumb.move = function (x, y, obj) { if (sliderThumb.dragging) { var localY = y - sliderThumb.lastY; updateEraserSize(sliderThumb.y + localY); sliderThumb.lastY = y; } }; sliderThumb.up = function () { sliderThumb.dragging = false; }; // Create basket display var basket = LK.getAsset('basket', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 - 800 // Moved up by 60 units to make room for two rows of color buttons }); game.addChild(basket); // Title text var titleText = new Text2("Easter Egg Artist", { size: 100, fill: 0x8B4513 // Dark brown }); titleText.anchor.set(0.5, 0); titleText.x = 2048 / 2; titleText.y = 50; game.addChild(titleText); // Score display var scoreText = new Text2("Eggs: 0", { size: 60, fill: 0x4B0082 // Indigo }); scoreText.anchor.set(0, 0); scoreText.x = 120; scoreText.y = 120; game.addChild(scoreText); // Function to display saved eggs function displaySavedEggs() { // Remove any existing displayed eggs for (var i = game.children.length - 1; i >= 0; i--) { if (game.children[i].isCompletedEgg) { game.removeChild(game.children[i]); } } // Display saved eggs for (var i = 0; i < savedEggs.length; i++) { var eggData = savedEggs[i]; var displayedEgg = new CompletedEgg(eggData.color); displayedEgg.x = eggData.x; displayedEgg.y = eggData.y; displayedEgg.isCompletedEgg = true; game.addChild(displayedEgg); } } // Display any saved eggs displaySavedEggs(); // Game event handlers game.down = function (x, y) { if (y < 2732 - 350) { isPainting = true; lastX = x; lastY = y; if (currentTool === 'brush') { var brushStroke = new BrushStroke(currentColor, currentBrushSize); easterEgg.addDesign(x, y, brushStroke); LK.getSound('brushSound').play(); } else if (currentTool === 'star' || currentTool === 'heart') { var sticker = new Sticker(currentTool, 1.2); easterEgg.addDesign(x, y, sticker); LK.getSound('stickerSound').play(); } else if (currentTool === 'eraser') { var eraserStroke = new BrushStroke(0xFFFFFF, currentEraserSize); eraserStroke.alpha = 0; // Make the eraser invisible easterEgg.addDesign(x, y, eraserStroke); } } }; game.move = function (x, y) { if (isPainting && (currentTool === 'brush' || currentTool === 'eraser')) { // Calculate distance between last point and current point var dx = x - lastX; var dy = y - lastY; var distance = Math.sqrt(dx * dx + dy * dy); // Get current size based on tool var currentSize = currentTool === 'brush' ? currentBrushSize : currentEraserSize; // Get current color based on tool var strokeColor = currentTool === 'brush' ? currentColor : 0xFFFFFF; // Get alpha based on tool (0 for eraser to make it invisible) var strokeAlpha = currentTool === 'brush' ? 1 : 0; // If distance is greater than half the size, add intermediate points if (distance > currentSize / 2) { var steps = Math.ceil(distance / (currentSize / 2)); for (var i = 1; i <= steps; i++) { var pointX = lastX + dx * i / steps; var pointY = lastY + dy * i / steps; var stroke = new BrushStroke(strokeColor, currentSize); stroke.alpha = strokeAlpha; easterEgg.addDesign(pointX, pointY, stroke); } } else { var stroke = new BrushStroke(strokeColor, currentSize); stroke.alpha = strokeAlpha; easterEgg.addDesign(x, y, stroke); } lastX = x; lastY = y; } }; game.up = function () { isPainting = false; }; // Update function game.update = function () { // Update score display scoreText.setText("Eggs: " + LK.getScore()); }; // Start background music LK.playMusic('easterMusic', { fade: { start: 0, end: 0.2, duration: 1000 } });
===================================================================
--- original.js
+++ change.js
@@ -224,11 +224,13 @@
var brushSizes = [10, 20, 30];
// Initialize game variables
var currentColor = colors[0];
var currentBrushSize = brushSizes[1];
+var currentEraserSize = 50;
var currentTool = 'brush';
var isPainting = false;
var lastX, lastY;
+var eraserSliderVisible = false;
// Ensure savedEggs is properly initialized in storage
var savedEggs = [];
if (storage.savedEggs && Array.isArray(storage.savedEggs)) {
savedEggs = storage.savedEggs;
@@ -332,8 +334,9 @@
}, {
duration: 100
});
currentTool = 'brush';
+ toggleEraserThicknessSlider(false);
};
var stickerStarButton = new Button("Star", 0xFFD700);
stickerStarButton.x = startX + (buttonWidth + buttonSpacing) * 1 - 75; // Moved left by 25 more units
stickerStarButton.y = 2732 - 100; // Moved up by 20 units
@@ -359,8 +362,9 @@
}, {
duration: 100
});
currentTool = 'star';
+ toggleEraserThicknessSlider(false);
};
var stickerHeartButton = new Button("Heart", 0xFF0000);
stickerHeartButton.x = startX + (buttonWidth + buttonSpacing) * 2 - 75; // Moved left by 25 more units
stickerHeartButton.y = 2732 - 100; // Moved up by 20 units
@@ -386,8 +390,9 @@
}, {
duration: 100
});
currentTool = 'heart';
+ toggleEraserThicknessSlider(false);
};
var rotateLeftButton = new Button("< Rotate", 0x9370DB);
rotateLeftButton.x = startX + (buttonWidth + buttonSpacing) * 3 - 75; // Moved left by 25 more units
rotateLeftButton.y = 2732 - 100; // Moved up by 20 units
@@ -505,10 +510,38 @@
LK.setScore(LK.getScore() + 1);
// Clear the current egg for a new design
easterEgg.clearDesigns();
};
+var eraserButton = new Button("Eraser", 0x808080);
+eraserButton.x = startX + (buttonWidth + buttonSpacing) * 6 - 75; // Moved left by 25 more units
+eraserButton.y = 2732 - 100; // Moved up by 20 units
+game.addChild(eraserButton);
+tween(eraserButton, {
+ scaleX: 2.2,
+ scaleY: 2
+}, {
+ duration: 300
+});
+eraserButton.down = function () {
+ tween(eraserButton, {
+ scaleX: 1.98,
+ scaleY: 1.8
+ }, {
+ duration: 100
+ });
+};
+eraserButton.up = function () {
+ tween(eraserButton, {
+ scaleX: 2.2,
+ scaleY: 2
+ }, {
+ duration: 100
+ });
+ currentTool = 'eraser';
+ toggleEraserThicknessSlider(true);
+};
var clearButton = new Button("Clear", 0xFF6347);
-clearButton.x = startX + (buttonWidth + buttonSpacing) * 6 - 75; // Moved left by 25 more units
+clearButton.x = startX + (buttonWidth + buttonSpacing) * 7 - 75; // Moved to next position
clearButton.y = 2732 - 100; // Moved up by 20 units
game.addChild(clearButton);
tween(clearButton, {
scaleX: 2.2,
@@ -532,9 +565,85 @@
duration: 100
});
easterEgg.clearDesigns();
LK.getSound('clearSound').play();
+ toggleEraserThicknessSlider(false);
};
+// Create eraser thickness slider
+var sliderContainer = new Container();
+sliderContainer.x = 2048 - 100;
+sliderContainer.y = 2732 / 2 - 400;
+sliderContainer.visible = false;
+game.addChild(sliderContainer);
+var sliderTrack = LK.getAsset('buttonBg', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 0,
+ y: 0,
+ scaleX: 0.5,
+ scaleY: 6
+});
+sliderTrack.tint = 0xCCCCCC;
+sliderContainer.addChild(sliderTrack);
+var sliderThumb = LK.getAsset('buttonBg', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 0,
+ y: 0,
+ scaleX: 1.2,
+ scaleY: 0.5
+});
+sliderThumb.tint = 0x000000;
+sliderContainer.addChild(sliderThumb);
+// Size label
+var sizeLabel = new Text2(currentEraserSize.toString(), {
+ size: 40,
+ fill: 0x000000
+});
+sizeLabel.anchor.set(0.5, 0.5);
+sizeLabel.x = 0;
+sizeLabel.y = -400;
+sliderContainer.addChild(sizeLabel);
+// Function to update eraser size from slider position
+function updateEraserSize(y) {
+ // Constrain y position to slider track bounds
+ var trackHeight = sliderTrack.height * sliderTrack.scale.y;
+ var halfTrackHeight = trackHeight / 2;
+ var constrainedY = Math.max(-halfTrackHeight, Math.min(halfTrackHeight, y));
+ // Update thumb position
+ sliderThumb.y = constrainedY;
+ // Calculate eraser size (10 to 100)
+ var percentage = (halfTrackHeight - constrainedY) / trackHeight;
+ currentEraserSize = Math.round(10 + percentage * 90);
+ sizeLabel.setText(currentEraserSize.toString());
+}
+// Set initial thumb position
+updateEraserSize(0);
+// Function to toggle eraser thickness slider visibility
+function toggleEraserThicknessSlider(visible) {
+ eraserSliderVisible = visible;
+ sliderContainer.visible = visible;
+ // Reset other tools when showing slider
+ if (visible) {
+ currentTool = 'eraser';
+ }
+}
+// Event handlers for slider thumb
+sliderThumb.interactive = true;
+sliderThumb.down = function (x, y, obj) {
+ sliderThumb.dragging = true;
+ sliderThumb.lastY = y;
+};
+sliderThumb.move = function (x, y, obj) {
+ if (sliderThumb.dragging) {
+ var localY = y - sliderThumb.lastY;
+ updateEraserSize(sliderThumb.y + localY);
+ sliderThumb.lastY = y;
+ }
+};
+sliderThumb.up = function () {
+ sliderThumb.dragging = false;
+};
// Create basket display
var basket = LK.getAsset('basket', {
anchorX: 0.5,
anchorY: 0.5,
@@ -593,29 +702,41 @@
} else if (currentTool === 'star' || currentTool === 'heart') {
var sticker = new Sticker(currentTool, 1.2);
easterEgg.addDesign(x, y, sticker);
LK.getSound('stickerSound').play();
+ } else if (currentTool === 'eraser') {
+ var eraserStroke = new BrushStroke(0xFFFFFF, currentEraserSize);
+ eraserStroke.alpha = 0; // Make the eraser invisible
+ easterEgg.addDesign(x, y, eraserStroke);
}
}
};
game.move = function (x, y) {
- if (isPainting && currentTool === 'brush') {
+ if (isPainting && (currentTool === 'brush' || currentTool === 'eraser')) {
// Calculate distance between last point and current point
var dx = x - lastX;
var dy = y - lastY;
var distance = Math.sqrt(dx * dx + dy * dy);
- // If distance is greater than half the brush size, add intermediate points
- if (distance > currentBrushSize / 2) {
- var steps = Math.ceil(distance / (currentBrushSize / 2));
+ // Get current size based on tool
+ var currentSize = currentTool === 'brush' ? currentBrushSize : currentEraserSize;
+ // Get current color based on tool
+ var strokeColor = currentTool === 'brush' ? currentColor : 0xFFFFFF;
+ // Get alpha based on tool (0 for eraser to make it invisible)
+ var strokeAlpha = currentTool === 'brush' ? 1 : 0;
+ // If distance is greater than half the size, add intermediate points
+ if (distance > currentSize / 2) {
+ var steps = Math.ceil(distance / (currentSize / 2));
for (var i = 1; i <= steps; i++) {
var pointX = lastX + dx * i / steps;
var pointY = lastY + dy * i / steps;
- var brushStroke = new BrushStroke(currentColor, currentBrushSize);
- easterEgg.addDesign(pointX, pointY, brushStroke);
+ var stroke = new BrushStroke(strokeColor, currentSize);
+ stroke.alpha = strokeAlpha;
+ easterEgg.addDesign(pointX, pointY, stroke);
}
} else {
- var brushStroke = new BrushStroke(currentColor, currentBrushSize);
- easterEgg.addDesign(x, y, brushStroke);
+ var stroke = new BrushStroke(strokeColor, currentSize);
+ stroke.alpha = strokeAlpha;
+ easterEgg.addDesign(x, y, stroke);
}
lastX = x;
lastY = y;
}