Raining Popsicles
Working on a new HTML5 game that involves popsicles...
Here is the popsicles drop test. The resources and code are documented below.
Images








Code
I am using BlocksJS to simplify the implementation.
(function () { var game, spec; spec = { width: 800, height: 600, bg: { src: "images/sweet-drop-bg.png" }, popsicles:[{ name: "creamsicle", slices: [{ name: "falling", src: "images/creamsicle.png" }, { name: "crashed", src: "images/creamsicle-broken.png" }] }, { name: "bombpop", slices: [{ name: "falling", src: "images/bombpop.png" }, { name: "crashed", src: "images/bombpop-broken.png" }] }, { name: "popsicle", slices: [{ name: "falling", src: "images/popsicle.png" }, { name: "crashed", src: "images/popsicle-broken.png" }] }, { name: "pushUp", slices: [{ name: "falling", src: "images/push-up.png" }, { name: "crashed", src: "images/push-up-broken.png" }] }] }; game = BLOCKS.game(spec); game.prepare = function () { var bg, index = 0, dropBomb = function () { var popsicle; popsicle = BLOCKS.block(spec.popsicles[index]); index += 1; if (index >= spec.popsicles.length) { index = 0; } //popsicle = BLOCKS.block(spec.popsicles[Math.floor(Math.random() * spec.popsicles.length)]); popsicle.layer = game.layers[0]; game.stage.addView(popsicle); popsicle.x = Math.random() * (game.width - popsicle.width * 2) + popsicle.width / 2; popsicle.y = -popsicle.height; game.addMotor("y", { object: popsicle, duration: 3000, amount: game.height, easing: "easeIn", callback: function () { popsicle.setSlice("crashed"); game.addTicker(function () { game.addMotor("alpha", { object: popsicle, duration: 800, amount: -1, easing: "easeIn", callback: function () { game.stage.removeView(popsicle); popsicle.destroy(); popsicle = null; } }); game.addMotor("y", { object: popsicle, duration: 1000, amount: popsicle.height, easing: "easeIn" }); }, 2000); } }); game.addTicker(dropBomb, 1000); }; bg = BLOCKS.slice(spec.bg); bg.layer = game.layers[0]; game.stage.addView(bg); dropBomb(); }; }());