User prompt
Please fix the bug: 'Timeout.tick error: undefined is not an object (evaluating 'labelText.style.fill = "#ffffff"')' in or related to this line: 'labelText.style.fill = "#ffffff";' Line Number: 237
Code edit (1 edits merged)
Please save this source code
User prompt
Where's Ginger? Hidden Object Adventure
Initial prompt
Toca hide and seek (2014-2018). Have you seen ginger 🐱. Have you seen her in level 1 safari, level 2 train, level 3 snow, level 4 kids bedroom, or level 5 banana land. Tap on a level to get started, tap on ginger 🐱 when you spot her.
/**** * Plugins ****/ var storage = LK.import("@upit/storage.v1", { unlockedLevel: 1 }); var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var GameLevel = Container.expand(function (levelNumber) { var self = Container.call(this); self.levelNumber = levelNumber; self.gingerFound = false; var backgroundAsset = ''; var gingerX = 0; var gingerY = 0; switch (levelNumber) { case 1: // Safari backgroundAsset = 'safariBackground'; gingerX = 400 + Math.random() * 800; gingerY = 600 + Math.random() * 800; break; case 2: // Train backgroundAsset = 'trainBackground'; gingerX = 500 + Math.random() * 700; gingerY = 700 + Math.random() * 600; break; case 3: // Snow backgroundAsset = 'snowBackground'; gingerX = 600 + Math.random() * 600; gingerY = 800 + Math.random() * 500; break; case 4: // Kids Bedroom backgroundAsset = 'bedroomBackground'; gingerX = 700 + Math.random() * 500; gingerY = 900 + Math.random() * 400; break; case 5: // Banana Land backgroundAsset = 'bananaBackground'; gingerX = 800 + Math.random() * 400; gingerY = 1000 + Math.random() * 300; break; } var background = self.attachAsset(backgroundAsset, { anchorX: 0, anchorY: 0 }); self.createSceneObjects = function () { if (levelNumber === 1) { // Safari for (var i = 0; i < 8; i++) { var tree = self.addChild(LK.getAsset('tree', { anchorX: 0.5, anchorY: 1 })); tree.x = 200 + Math.random() * 1600; tree.y = 400 + Math.random() * 1800; } for (var i = 0; i < 12; i++) { var rock = self.addChild(LK.getAsset('rock', { anchorX: 0.5, anchorY: 0.5 })); rock.x = 100 + Math.random() * 1800; rock.y = 300 + Math.random() * 2000; } for (var i = 0; i < 10; i++) { var bush = self.addChild(LK.getAsset('bush', { anchorX: 0.5, anchorY: 0.5 })); bush.x = 150 + Math.random() * 1700; bush.y = 400 + Math.random() * 1900; } } else if (levelNumber === 2) { // Train for (var i = 0; i < 6; i++) { var trainCar = self.addChild(LK.getAsset('trainCar', { anchorX: 0.5, anchorY: 0.5 })); trainCar.x = 300 + i * 250; trainCar.y = 800 + Math.random() * 400; var wheel1 = self.addChild(LK.getAsset('wheel', { anchorX: 0.5, anchorY: 0.5 })); wheel1.x = trainCar.x - 60; wheel1.y = trainCar.y + 70; var wheel2 = self.addChild(LK.getAsset('wheel', { anchorX: 0.5, anchorY: 0.5 })); wheel2.x = trainCar.x + 60; wheel2.y = trainCar.y + 70; } } else if (levelNumber === 3) { // Snow for (var i = 0; i < 8; i++) { var snowman = self.addChild(LK.getAsset('snowman', { anchorX: 0.5, anchorY: 1 })); snowman.x = 200 + Math.random() * 1600; snowman.y = 500 + Math.random() * 1800; } for (var i = 0; i < 15; i++) { var rock = self.addChild(LK.getAsset('rock', { anchorX: 0.5, anchorY: 0.5 })); rock.x = 100 + Math.random() * 1800; rock.y = 400 + Math.random() * 2000; } } else if (levelNumber === 4) { // Kids Bedroom for (var i = 0; i < 4; i++) { var bed = self.addChild(LK.getAsset('bed', { anchorX: 0.5, anchorY: 0.5 })); bed.x = 300 + i * 400; bed.y = 600 + Math.random() * 800; } for (var i = 0; i < 20; i++) { var toy = self.addChild(LK.getAsset('toy', { anchorX: 0.5, anchorY: 0.5 })); toy.x = 150 + Math.random() * 1700; toy.y = 400 + Math.random() * 2000; } } else if (levelNumber === 5) { // Banana Land for (var i = 0; i < 50; i++) { var banana = self.addChild(LK.getAsset('banana', { anchorX: 0.5, anchorY: 0.5 })); banana.x = 100 + Math.random() * 1800; banana.y = 300 + Math.random() * 2100; } } }; self.createSceneObjects(); var gingerSprite = self.addChild(LK.getAsset('ginger', { anchorX: 0.5, anchorY: 0.5 })); gingerSprite.x = gingerX; gingerSprite.y = gingerY; gingerSprite.down = function (x, y, obj) { if (!self.gingerFound) { self.gingerFound = true; LK.getSound('found').play(); tween(gingerSprite, { scaleX: 1.5, scaleY: 1.5 }, { duration: 300 }); LK.effects.flashObject(gingerSprite, 0x00ff00, 500); LK.setTimeout(function () { var nextLevel = levelNumber + 1; if (nextLevel <= 5) { storage.unlockedLevel = Math.max(storage.unlockedLevel, nextLevel); levelButtons[nextLevel - 1].unlock(); } if (nextLevel <= 5) { currentLevel = nextLevel; showGameplay(); } else { LK.showYouWin(); } }, 1000); } }; return self; }); var LevelButton = Container.expand(function (levelNumber, levelName, isLocked) { var self = Container.call(this); var buttonGraphics = self.attachAsset(isLocked ? 'lockedButton' : 'levelButton', { anchorX: 0.5, anchorY: 0.5 }); var labelText = new Text2(levelName, { size: 40, fill: isLocked ? "#666666" : "#ffffff" }); labelText.anchor.set(0.5, 0.5); self.addChild(labelText); self.levelNumber = levelNumber; self.isLocked = isLocked; self.down = function (x, y, obj) { if (!self.isLocked) { currentLevel = self.levelNumber; showGameplay(); } }; self.unlock = function () { self.isLocked = false; buttonGraphics.destroy(); var newButton = self.attachAsset('levelButton', { anchorX: 0.5, anchorY: 0.5 }); labelText.fill = "#ffffff"; LK.getSound('unlock').play(); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87ceeb }); /**** * Game Code ****/ var currentScreen = 'menu'; // 'menu' or 'gameplay' var currentLevel = 1; var levelButtons = []; var currentGameLevel = null; var titleText = new Text2("Where's Ginger?", { size: 80, fill: 0x2C3E50 }); titleText.anchor.set(0.5, 0.5); titleText.x = 1024; titleText.y = 300; game.addChild(titleText); var subtitleText = new Text2("Find Ginger hiding in each scene!", { size: 40, fill: 0x34495E }); subtitleText.anchor.set(0.5, 0.5); subtitleText.x = 1024; subtitleText.y = 400; game.addChild(subtitleText); var levelNames = ['Safari', 'Train', 'Snow', 'Kids Bedroom', 'Banana Land']; for (var i = 0; i < 5; i++) { var isLocked = i + 1 > storage.unlockedLevel; var button = new LevelButton(i + 1, levelNames[i], isLocked); button.x = 1024; button.y = 600 + i * 150; levelButtons.push(button); game.addChild(button); } var backButton = new Text2("← Back to Menu", { size: 50, fill: 0xFFFFFF }); backButton.anchor.set(0, 0.5); backButton.x = 50; backButton.y = 150; backButton.down = function (x, y, obj) { showMenu(); }; function showMenu() { currentScreen = 'menu'; if (currentGameLevel) { currentGameLevel.destroy(); currentGameLevel = null; } if (backButton.parent) { game.removeChild(backButton); } titleText.visible = true; subtitleText.visible = true; for (var i = 0; i < levelButtons.length; i++) { levelButtons[i].visible = true; } } function showGameplay() { currentScreen = 'gameplay'; titleText.visible = false; subtitleText.visible = false; for (var i = 0; i < levelButtons.length; i++) { levelButtons[i].visible = false; } if (currentGameLevel) { currentGameLevel.destroy(); } currentGameLevel = game.addChild(new GameLevel(currentLevel)); game.addChild(backButton); }
/****
* Plugins
****/
var storage = LK.import("@upit/storage.v1", {
unlockedLevel: 1
});
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var GameLevel = Container.expand(function (levelNumber) {
var self = Container.call(this);
self.levelNumber = levelNumber;
self.gingerFound = false;
var backgroundAsset = '';
var gingerX = 0;
var gingerY = 0;
switch (levelNumber) {
case 1:
// Safari
backgroundAsset = 'safariBackground';
gingerX = 400 + Math.random() * 800;
gingerY = 600 + Math.random() * 800;
break;
case 2:
// Train
backgroundAsset = 'trainBackground';
gingerX = 500 + Math.random() * 700;
gingerY = 700 + Math.random() * 600;
break;
case 3:
// Snow
backgroundAsset = 'snowBackground';
gingerX = 600 + Math.random() * 600;
gingerY = 800 + Math.random() * 500;
break;
case 4:
// Kids Bedroom
backgroundAsset = 'bedroomBackground';
gingerX = 700 + Math.random() * 500;
gingerY = 900 + Math.random() * 400;
break;
case 5:
// Banana Land
backgroundAsset = 'bananaBackground';
gingerX = 800 + Math.random() * 400;
gingerY = 1000 + Math.random() * 300;
break;
}
var background = self.attachAsset(backgroundAsset, {
anchorX: 0,
anchorY: 0
});
self.createSceneObjects = function () {
if (levelNumber === 1) {
// Safari
for (var i = 0; i < 8; i++) {
var tree = self.addChild(LK.getAsset('tree', {
anchorX: 0.5,
anchorY: 1
}));
tree.x = 200 + Math.random() * 1600;
tree.y = 400 + Math.random() * 1800;
}
for (var i = 0; i < 12; i++) {
var rock = self.addChild(LK.getAsset('rock', {
anchorX: 0.5,
anchorY: 0.5
}));
rock.x = 100 + Math.random() * 1800;
rock.y = 300 + Math.random() * 2000;
}
for (var i = 0; i < 10; i++) {
var bush = self.addChild(LK.getAsset('bush', {
anchorX: 0.5,
anchorY: 0.5
}));
bush.x = 150 + Math.random() * 1700;
bush.y = 400 + Math.random() * 1900;
}
} else if (levelNumber === 2) {
// Train
for (var i = 0; i < 6; i++) {
var trainCar = self.addChild(LK.getAsset('trainCar', {
anchorX: 0.5,
anchorY: 0.5
}));
trainCar.x = 300 + i * 250;
trainCar.y = 800 + Math.random() * 400;
var wheel1 = self.addChild(LK.getAsset('wheel', {
anchorX: 0.5,
anchorY: 0.5
}));
wheel1.x = trainCar.x - 60;
wheel1.y = trainCar.y + 70;
var wheel2 = self.addChild(LK.getAsset('wheel', {
anchorX: 0.5,
anchorY: 0.5
}));
wheel2.x = trainCar.x + 60;
wheel2.y = trainCar.y + 70;
}
} else if (levelNumber === 3) {
// Snow
for (var i = 0; i < 8; i++) {
var snowman = self.addChild(LK.getAsset('snowman', {
anchorX: 0.5,
anchorY: 1
}));
snowman.x = 200 + Math.random() * 1600;
snowman.y = 500 + Math.random() * 1800;
}
for (var i = 0; i < 15; i++) {
var rock = self.addChild(LK.getAsset('rock', {
anchorX: 0.5,
anchorY: 0.5
}));
rock.x = 100 + Math.random() * 1800;
rock.y = 400 + Math.random() * 2000;
}
} else if (levelNumber === 4) {
// Kids Bedroom
for (var i = 0; i < 4; i++) {
var bed = self.addChild(LK.getAsset('bed', {
anchorX: 0.5,
anchorY: 0.5
}));
bed.x = 300 + i * 400;
bed.y = 600 + Math.random() * 800;
}
for (var i = 0; i < 20; i++) {
var toy = self.addChild(LK.getAsset('toy', {
anchorX: 0.5,
anchorY: 0.5
}));
toy.x = 150 + Math.random() * 1700;
toy.y = 400 + Math.random() * 2000;
}
} else if (levelNumber === 5) {
// Banana Land
for (var i = 0; i < 50; i++) {
var banana = self.addChild(LK.getAsset('banana', {
anchorX: 0.5,
anchorY: 0.5
}));
banana.x = 100 + Math.random() * 1800;
banana.y = 300 + Math.random() * 2100;
}
}
};
self.createSceneObjects();
var gingerSprite = self.addChild(LK.getAsset('ginger', {
anchorX: 0.5,
anchorY: 0.5
}));
gingerSprite.x = gingerX;
gingerSprite.y = gingerY;
gingerSprite.down = function (x, y, obj) {
if (!self.gingerFound) {
self.gingerFound = true;
LK.getSound('found').play();
tween(gingerSprite, {
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 300
});
LK.effects.flashObject(gingerSprite, 0x00ff00, 500);
LK.setTimeout(function () {
var nextLevel = levelNumber + 1;
if (nextLevel <= 5) {
storage.unlockedLevel = Math.max(storage.unlockedLevel, nextLevel);
levelButtons[nextLevel - 1].unlock();
}
if (nextLevel <= 5) {
currentLevel = nextLevel;
showGameplay();
} else {
LK.showYouWin();
}
}, 1000);
}
};
return self;
});
var LevelButton = Container.expand(function (levelNumber, levelName, isLocked) {
var self = Container.call(this);
var buttonGraphics = self.attachAsset(isLocked ? 'lockedButton' : 'levelButton', {
anchorX: 0.5,
anchorY: 0.5
});
var labelText = new Text2(levelName, {
size: 40,
fill: isLocked ? "#666666" : "#ffffff"
});
labelText.anchor.set(0.5, 0.5);
self.addChild(labelText);
self.levelNumber = levelNumber;
self.isLocked = isLocked;
self.down = function (x, y, obj) {
if (!self.isLocked) {
currentLevel = self.levelNumber;
showGameplay();
}
};
self.unlock = function () {
self.isLocked = false;
buttonGraphics.destroy();
var newButton = self.attachAsset('levelButton', {
anchorX: 0.5,
anchorY: 0.5
});
labelText.fill = "#ffffff";
LK.getSound('unlock').play();
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87ceeb
});
/****
* Game Code
****/
var currentScreen = 'menu'; // 'menu' or 'gameplay'
var currentLevel = 1;
var levelButtons = [];
var currentGameLevel = null;
var titleText = new Text2("Where's Ginger?", {
size: 80,
fill: 0x2C3E50
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
titleText.y = 300;
game.addChild(titleText);
var subtitleText = new Text2("Find Ginger hiding in each scene!", {
size: 40,
fill: 0x34495E
});
subtitleText.anchor.set(0.5, 0.5);
subtitleText.x = 1024;
subtitleText.y = 400;
game.addChild(subtitleText);
var levelNames = ['Safari', 'Train', 'Snow', 'Kids Bedroom', 'Banana Land'];
for (var i = 0; i < 5; i++) {
var isLocked = i + 1 > storage.unlockedLevel;
var button = new LevelButton(i + 1, levelNames[i], isLocked);
button.x = 1024;
button.y = 600 + i * 150;
levelButtons.push(button);
game.addChild(button);
}
var backButton = new Text2("← Back to Menu", {
size: 50,
fill: 0xFFFFFF
});
backButton.anchor.set(0, 0.5);
backButton.x = 50;
backButton.y = 150;
backButton.down = function (x, y, obj) {
showMenu();
};
function showMenu() {
currentScreen = 'menu';
if (currentGameLevel) {
currentGameLevel.destroy();
currentGameLevel = null;
}
if (backButton.parent) {
game.removeChild(backButton);
}
titleText.visible = true;
subtitleText.visible = true;
for (var i = 0; i < levelButtons.length; i++) {
levelButtons[i].visible = true;
}
}
function showGameplay() {
currentScreen = 'gameplay';
titleText.visible = false;
subtitleText.visible = false;
for (var i = 0; i < levelButtons.length; i++) {
levelButtons[i].visible = false;
}
if (currentGameLevel) {
currentGameLevel.destroy();
}
currentGameLevel = game.addChild(new GameLevel(currentLevel));
game.addChild(backButton);
}