Hitting the Blocks
The blocks across the screen are controlled programmatically. Each block is an instance of the same block. A color effect is applied to each to change the color of the blocks. In addition, the following script is applied to each block:
onClipEvent (load) { startX = this._x }
This script is used to tell the block to hide if it is crossed by the ball movie clip. The only difference between each block is the instance name; each block has a different name that starts with the word Tile and is followed by a number between 1 and 35.
At the top of the script, you tell the game how many blocks are on the stage:
TileNum = 36;
You then tell Flash how to calculate that the object just hit is a block:
function maketargetList (numOfTiles) { for (i=0; i<numOfTiles; i++) { TargetList[i] = String("tile"+(i+1)); } }
The final step is to add the script that will do something when a block when it is hit:
//check if ball hits a tile var theTileNum = TargetList.length; for (i=0; i<theTileNum; i++) { var thisTile = TargetList[i]; if (this.MovieClip.hitTest(_root[thisTile])) { this.increaseSpeed(); Total += (10 * CurrentBallNum); _root[thisTile]._x += -1000; TargetList.splice(i, 1); this.flipY(); if (TargetList.length == 0) { resetGame(); }break; } }
Here the script verifies that a target is hit and then increases the games score by 10 points after the collision. The complete game can be seen in Figure 3.
Figure 3 The final game.
BreakOut demonstrates collision with a boundary and with a static object.