Inverting Toony Flash game prototype turning it into a Christmas game
With a few more than a month to Christmas, it’s time to think about a quick and easy Christmas game, since a lot of portals will distribute Christmas games in a couple of weeks.
Have a look to an old post called About season games to have an idea of what I am talking about.
So I want to share with you a simple prototype made out of Toony Flash game. Basically it’s the same game, but rather than moving targets to match falling stuff, we have to move falling stuff to match targets. Look:
Drag falling balls to match the balls on the Christmas tree.
There is still a lot to do on the gameplay, but maybe you can make some interesting stuff out of it.
This is the source code, no need to comment it as it’s almost the same thing you saw on Toony:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.utils.Timer; import flash.events.TimerEvent; import flash.geom.Point; public class Main extends Sprite { private var fallingTimer:Timer; private var fallingInterval:Number; private var fallingVector:Vector.<Stuff>; private var targetPositionVector:Vector.<Point>; private var targetVector:Vector.<Stuff>; private var fallingSpeed:Number; private var movingStuff:Stuff; private var christmasTree:ChristmasTree; private var score:Number; public function Main() { score=0; christmasTree=new ChristmasTree(); christmasTree.y=10; addChild(christmasTree); targetPositionVector=new Vector.<Point>(); targetPositionVector.push(new Point(100,100)); targetPositionVector.push(new Point(200,200)); targetPositionVector.push(new Point(300,300)); targetVector=new Vector.<Stuff>(); for (var i:Number=0; i<targetPositionVector.length; i++) { var targetStuff:Stuff=new Stuff(); targetStuff.x=targetPositionVector[i].x; targetStuff.y=targetPositionVector[i].y; targetStuff.gotoAndStop(i+1); targetVector.push(targetStuff); addChild(targetStuff); } movingStuff=null; fallingSpeed=2; fallingVector=new Vector.<Stuff>(); fallingInterval=1500; fallingTimer=new Timer(fallingInterval); fallingTimer.addEventListener(TimerEvent.TIMER, newStuff); fallingTimer.start(); addEventListener(Event.ENTER_FRAME,update); } private function newStuff(e:TimerEvent):void { var stuff:Stuff=new Stuff(); stuff.x=320+24+Math.random()*272; stuff.y=-32; stuff.fallingSpeed=fallingSpeed-fallingSpeed*0.2+Math.random()*fallingSpeed*0.4; stuff.placed=false; stuff.kill=false; stuff.gotoAndStop(Math.ceil(Math.random()*3)); stuff.buttonMode=true; stuff.addEventListener(MouseEvent.MOUSE_DOWN,stuffClicked); fallingVector.push(stuff); addChild(stuff); } private function stuffClicked(e:MouseEvent):void { if (movingStuff==null) { movingStuff=e.target as Stuff; movingStuff.score=480-movingStuff.y; stage.addEventListener(MouseEvent.MOUSE_UP,stuffReleased); } } private function stuffReleased(e:MouseEvent):void { if (movingStuff!=null) { var matched:Boolean=false; stage.removeEventListener(MouseEvent.MOUSE_UP,stuffReleased); for (var i:Number=0; i<targetVector.length; i++) { if (targetVector[i].hitTestPoint(mouseX,mouseY,true)&&movingStuff.currentFrame==targetVector[i].currentFrame) { matched=true; break; } } if (! matched) { movingStuff.kill=true; } else { movingStuff.placed=true; movingStuff.kill=true; fallingSpeed+=0.1; } movingStuff.removeEventListener(MouseEvent.MOUSE_DOWN,stuffClicked); movingStuff=null; } } private function update(e:Event):void { for (var i:Number=fallingVector.length-1; i>=0; i--) { if (fallingVector[i].placed) { fallingVector[i].y--; } else { fallingVector[i].y+=fallingVector[i].fallingSpeed; } if (fallingVector[i].kill) { fallingVector[i].alpha-=0.02; } if (fallingVector[i].y>550||fallingVector[i].alpha<=0) { removeChild(fallingVector[i]); fallingVector.splice(i,1); } } if (movingStuff!=null) { movingStuff.x=mouseX; movingStuff.y=mouseY; } } } } |
Download the source code and show me your games built upon this prototype.
They can be easily customized to meet the unique requirements of your project.












This post has 5 comments
Rahyar
Hi
I made ??a mathematics game with this idea
Thank :)
Rahyar
Hi
I made ??a mathematics game with your idea
Thank :)
Marcos J Pinto
Hi Emanuele!
Congratulations on your great work and blog! I’m seriously interested in studying game development for real and your work really inspires me.
For quite a long time I worked with Flash and ActionScript, even wrote some books on it and developed a course, etc. Now, with all these technology market changes, with Flash and ActionScript being considered as not so attractive anymore, how do you see future for these technologies. Do you think it is still a good idea, for beginners, to invest time and effort in studying or even developing for Flash Platform?
I’d really appreciate if you could share any ideas on this subject with us.
Thank you for your great work!
Best Regards,
Marcos, Brazil.
Online Max
Really nice :)
Hebert
Hi Emanuele,
Do you have any notice about your new book?
I REALLY want to read this book and
Packtpub is taking much time to release it.
Any news?
until more…