/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var BlossomCharacter = Container.expand(function () { var self = Container.call(this); // Create body parts var body = self.attachAsset('blossom_body', { anchorX: 0.5, anchorY: 0.8, x: 0, y: 100 }); var head = self.attachAsset('blossom_head', { anchorX: 0.5, anchorY: 0.5, x: 0, y: -80 }); var hair = self.attachAsset('blossom_hair', { anchorX: 0.5, anchorY: 0.7, x: 0, y: -150 }); var bow = self.attachAsset('blossom_bow', { anchorX: 0.5, anchorY: 0.5, x: 0, y: -180 }); var leftEye = self.attachAsset('blossom_eye', { anchorX: 0.5, anchorY: 0.5, x: -30, y: -90 }); var rightEye = self.attachAsset('blossom_eye', { anchorX: 0.5, anchorY: 0.5, x: 30, y: -90 }); var leftArm = self.attachAsset('blossom_arm', { anchorX: 0.8, anchorY: 0.5, x: -100, y: -20, rotation: -0.3 }); var rightArm = self.attachAsset('blossom_arm', { anchorX: 0.2, anchorY: 0.5, x: 100, y: -20, rotation: 0.3 }); self.leftHand = self.attachAsset('blossom_hand', { anchorX: 0.5, anchorY: 0.5, x: -150, y: 20 }); self.rightHand = self.attachAsset('blossom_hand', { anchorX: 0.5, anchorY: 0.5, x: 150, y: 20 }); return self; }); var TextPopup = Container.expand(function (message) { var self = Container.call(this); self.textDisplay = new Text2(message, { size: 80, fill: 0xFF1493 }); self.textDisplay.anchor.set(0.5, 0.5); self.addChild(self.textDisplay); self.show = function () { self.alpha = 1; self.scaleX = 0.1; self.scaleY = 0.1; tween(self, { scaleX: 1.2, scaleY: 1.2 }, { duration: 300, easing: tween.bounceOut, onFinish: function onFinish() { tween(self, { scaleX: 1, scaleY: 1 }, { duration: 200, easing: tween.easeOut }); } }); LK.setTimeout(function () { tween(self, { alpha: 0, scaleY: 0.5 }, { duration: 500, easing: tween.easeIn, onFinish: function onFinish() { self.destroy(); } }); }, 2000); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ var blossom = new BlossomCharacter(); blossom.x = 2048 / 2; blossom.y = 2732 / 2 + 100; game.addChild(blossom); var sayings = ["Sugar, spice, and everything nice!", "Let's save the day!", "I'm the leader of the Powerpuff Girls!", "Science rules!", "Girls, let's go!", "Everything must be perfect!", "I love reading!", "Time to kick some butt!", "We're the Powerpuff Girls!"]; var lastTapTime = 0; var doubleTapThreshold = 500; // milliseconds var currentPopup = null; function showTextPopup(message) { if (currentPopup) { currentPopup.destroy(); } currentPopup = new TextPopup(message); currentPopup.x = 2048 / 2; currentPopup.y = 2732 / 2 - 200; game.addChild(currentPopup); currentPopup.show(); } function playRandomSaying() { var randomIndex = Math.floor(Math.random() * sayings.length); var saying = sayings[randomIndex]; showTextPopup(saying); var soundId = 'speak' + (randomIndex + 1); LK.getSound(soundId).play(); } function playBananaSong() { showTextPopup("🍌 Banana Song! 🍌"); LK.getSound('banana_song').play(); } function handleHandTap() { var currentTime = Date.now(); var timeSinceLastTap = currentTime - lastTapTime; if (timeSinceLastTap < doubleTapThreshold) { // Double tap detected playBananaSong(); } else { // Single tap playRandomSaying(); } lastTapTime = currentTime; } blossom.leftHand.down = function (x, y, obj) { handleHandTap(); // Hand press animation tween(blossom.leftHand, { scaleX: 0.8, scaleY: 0.8 }, { duration: 100, onFinish: function onFinish() { tween(blossom.leftHand, { scaleX: 1, scaleY: 1 }, { duration: 100 }); } }); }; blossom.rightHand.down = function (x, y, obj) { handleHandTap(); // Hand press animation tween(blossom.rightHand, { scaleX: 0.8, scaleY: 0.8 }, { duration: 100, onFinish: function onFinish() { tween(blossom.rightHand, { scaleX: 1, scaleY: 1 }, { duration: 100 }); } }); }; // Idle animation for Blossom var idleTimer = 0; game.update = function () { idleTimer++; // Gentle breathing animation if (idleTimer % 120 === 0) { tween(blossom, { scaleY: 1.02 }, { duration: 1000, easing: tween.easeInOut, onFinish: function onFinish() { tween(blossom, { scaleY: 1 }, { duration: 1000, easing: tween.easeInOut }); } }); } // Occasional eye blink if (idleTimer % 180 === 0 && Math.random() < 0.3) { var leftEye = blossom.children[4]; // Left eye var rightEye = blossom.children[5]; // Right eye tween(leftEye, { scaleY: 0.1 }, { duration: 100, onFinish: function onFinish() { tween(leftEye, { scaleY: 1 }, { duration: 100 }); } }); tween(rightEye, { scaleY: 0.1 }, { duration: 100, onFinish: function onFinish() { tween(rightEye, { scaleY: 1 }, { duration: 100 }); } }); } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,257 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var BlossomCharacter = Container.expand(function () {
+ var self = Container.call(this);
+ // Create body parts
+ var body = self.attachAsset('blossom_body', {
+ anchorX: 0.5,
+ anchorY: 0.8,
+ x: 0,
+ y: 100
+ });
+ var head = self.attachAsset('blossom_head', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 0,
+ y: -80
+ });
+ var hair = self.attachAsset('blossom_hair', {
+ anchorX: 0.5,
+ anchorY: 0.7,
+ x: 0,
+ y: -150
+ });
+ var bow = self.attachAsset('blossom_bow', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 0,
+ y: -180
+ });
+ var leftEye = self.attachAsset('blossom_eye', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: -30,
+ y: -90
+ });
+ var rightEye = self.attachAsset('blossom_eye', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 30,
+ y: -90
+ });
+ var leftArm = self.attachAsset('blossom_arm', {
+ anchorX: 0.8,
+ anchorY: 0.5,
+ x: -100,
+ y: -20,
+ rotation: -0.3
+ });
+ var rightArm = self.attachAsset('blossom_arm', {
+ anchorX: 0.2,
+ anchorY: 0.5,
+ x: 100,
+ y: -20,
+ rotation: 0.3
+ });
+ self.leftHand = self.attachAsset('blossom_hand', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: -150,
+ y: 20
+ });
+ self.rightHand = self.attachAsset('blossom_hand', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 150,
+ y: 20
+ });
+ return self;
+});
+var TextPopup = Container.expand(function (message) {
+ var self = Container.call(this);
+ self.textDisplay = new Text2(message, {
+ size: 80,
+ fill: 0xFF1493
+ });
+ self.textDisplay.anchor.set(0.5, 0.5);
+ self.addChild(self.textDisplay);
+ self.show = function () {
+ self.alpha = 1;
+ self.scaleX = 0.1;
+ self.scaleY = 0.1;
+ tween(self, {
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 300,
+ easing: tween.bounceOut,
+ onFinish: function onFinish() {
+ tween(self, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 200,
+ easing: tween.easeOut
+ });
+ }
+ });
+ LK.setTimeout(function () {
+ tween(self, {
+ alpha: 0,
+ scaleY: 0.5
+ }, {
+ duration: 500,
+ easing: tween.easeIn,
+ onFinish: function onFinish() {
+ self.destroy();
+ }
+ });
+ }, 2000);
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87CEEB
+});
+
+/****
+* Game Code
+****/
+var blossom = new BlossomCharacter();
+blossom.x = 2048 / 2;
+blossom.y = 2732 / 2 + 100;
+game.addChild(blossom);
+var sayings = ["Sugar, spice, and everything nice!", "Let's save the day!", "I'm the leader of the Powerpuff Girls!", "Science rules!", "Girls, let's go!", "Everything must be perfect!", "I love reading!", "Time to kick some butt!", "We're the Powerpuff Girls!"];
+var lastTapTime = 0;
+var doubleTapThreshold = 500; // milliseconds
+var currentPopup = null;
+function showTextPopup(message) {
+ if (currentPopup) {
+ currentPopup.destroy();
+ }
+ currentPopup = new TextPopup(message);
+ currentPopup.x = 2048 / 2;
+ currentPopup.y = 2732 / 2 - 200;
+ game.addChild(currentPopup);
+ currentPopup.show();
+}
+function playRandomSaying() {
+ var randomIndex = Math.floor(Math.random() * sayings.length);
+ var saying = sayings[randomIndex];
+ showTextPopup(saying);
+ var soundId = 'speak' + (randomIndex + 1);
+ LK.getSound(soundId).play();
+}
+function playBananaSong() {
+ showTextPopup("🍌 Banana Song! 🍌");
+ LK.getSound('banana_song').play();
+}
+function handleHandTap() {
+ var currentTime = Date.now();
+ var timeSinceLastTap = currentTime - lastTapTime;
+ if (timeSinceLastTap < doubleTapThreshold) {
+ // Double tap detected
+ playBananaSong();
+ } else {
+ // Single tap
+ playRandomSaying();
+ }
+ lastTapTime = currentTime;
+}
+blossom.leftHand.down = function (x, y, obj) {
+ handleHandTap();
+ // Hand press animation
+ tween(blossom.leftHand, {
+ scaleX: 0.8,
+ scaleY: 0.8
+ }, {
+ duration: 100,
+ onFinish: function onFinish() {
+ tween(blossom.leftHand, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 100
+ });
+ }
+ });
+};
+blossom.rightHand.down = function (x, y, obj) {
+ handleHandTap();
+ // Hand press animation
+ tween(blossom.rightHand, {
+ scaleX: 0.8,
+ scaleY: 0.8
+ }, {
+ duration: 100,
+ onFinish: function onFinish() {
+ tween(blossom.rightHand, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 100
+ });
+ }
+ });
+};
+// Idle animation for Blossom
+var idleTimer = 0;
+game.update = function () {
+ idleTimer++;
+ // Gentle breathing animation
+ if (idleTimer % 120 === 0) {
+ tween(blossom, {
+ scaleY: 1.02
+ }, {
+ duration: 1000,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ tween(blossom, {
+ scaleY: 1
+ }, {
+ duration: 1000,
+ easing: tween.easeInOut
+ });
+ }
+ });
+ }
+ // Occasional eye blink
+ if (idleTimer % 180 === 0 && Math.random() < 0.3) {
+ var leftEye = blossom.children[4]; // Left eye
+ var rightEye = blossom.children[5]; // Right eye
+ tween(leftEye, {
+ scaleY: 0.1
+ }, {
+ duration: 100,
+ onFinish: function onFinish() {
+ tween(leftEye, {
+ scaleY: 1
+ }, {
+ duration: 100
+ });
+ }
+ });
+ tween(rightEye, {
+ scaleY: 0.1
+ }, {
+ duration: 100,
+ onFinish: function onFinish() {
+ tween(rightEye, {
+ scaleY: 1
+ }, {
+ duration: 100
+ });
+ }
+ });
+ }
+};
\ No newline at end of file