How to Create a Tower Defense Game in AS3 – Part 2
Part 2: Adding Turrets
Okay, so in this part of the tutorial, we are going to make it so when the user clicks on any of the empty blocks, a turret is created. The first step to take in to create a Turret class. You know the drill, create a new ActionScript File, save it as “Turret.as”, and type in the following code:
package{//creating the basic skeleton imporProxy-Connection: keep-alive Cache-Control: max-age=0 flash.display.MovieClip; import flash.events.*; public class Turret extends MovieClip{ private var _root:MovieClip; public function Turret(){ //adding the required listeners this.addEventListener(Event.ADDED, beginClass); this.addEventListener(Event.ENTER_FRAME, eFrameEvents); } private function beginClass(e:Event):void{ _root = MovieClip(root); //drawing the turret, it will have a gray, circular, base with a white gun this.graphics.beginFill(0x999999); this.graphics.drawCircle(0,0,12.5); this.graphics.endFill(); this.graphics.beginFill(0xFFFFFF); this.graphics.drawRect(-2.5, 0, 5, 20); this.graphics.endFill(); } private function eFrameEvents(e:Event):void{ if(_root.gameOver){//destroy this if game is over this.removeEventListener(Event.ENTER_FRAME, eFrameEvents); MovieClip(this.parent).removeChild(this); } } } }
This will be only the beginning of what we program into the Turret. Next, we have to define a function in the _root of the document that will create the turrets. Add this code to the bottom in your source .fla file:
function makeTurret(xValue:int,yValue:int):void{//this will need to be told the x and y values var turret:Turret = new Turret();//creating a variable to hold the Turret //changing the coordinates turret.x = xValue+12.5; turret.y = yValue+12.5; addChild(turret);//add it to the stage }
Now, we can finally make it so the turret is created when the user clicks on an empty block. Find the function thisClick() in “EmptyBlock.as”. Add the following code to that:
_root.makeTurret(this.x,this.y);//make the turret //remove all the listeners so it can't be clicked on again this.buttonMode = false; this.graphics.beginFill(0x333333); this.graphics.drawRect(0,0,25,25); this.graphics.endFill(); this.removeEventListener(MouseEvent.MOUSE_OVER, thisMouseOver); this.removeEventListener(MouseEvent.MOUSE_OUT, thisMouseOut); this.removeEventListener(MouseEvent.CLICK, thisClick);
Now, if you test out the game, a turret should appear whenever you click on any empty block!
Well, that’s it for this tutorial. Next time, we’ll add enemies and program them!




