Search Tutorials
Some additions to the onClipEvent(load) code First up we are going to add two new variable definitions to the onClipEvent(load) code. Type the following two lines exactly under the line scrollStart=false; and before the } maxLasers=4; depthCounter=1; The first line creates a variable called maxLasers and sets it equal to 4. This is the maximum number of lasers that can be on the stage. Just adjust this number if you want less or more lasers available. The second line creates a new variable called depthCounter. We use this to keep a track of what depth value to give our duplicated movie clips.
We need to change the if statement that deals with duplicating
the laser. Replace the line if (Key.isDown(Key.CONTROL))
{ if (Key.isDown(Key.CONTROL) and (laserCounter<=maxLasers)) { Now, the laser is only duplicated if the Control key has been pressed and the laserCounter is less than or equal to maxLasers. We also need to make a few changes to ensure that the duplicated laser movie clips have the correct depth. Replace the lines _root.laser.duplicateMovieClip( "laser"+depthCounter, depthCounter );
_root["laser"+depthCounter]._visible=true;
depthCounter++;
if (depthCounter>maxLasers){
depthCounter=1;
}
So why did we do that? We already had a variable called laserCounter which counts the number of lasers (it is increased every time a new laser is duplicated). We now also have a variable called depthCounter which keeps track of the what value to give for the depth of each duplicated laser. This variable depthCounter is increased by one when a new laser is duplicated, however when it reaches the value of maxLasers it is reset back to 1. In flash when you duplicate a movie clip you have to give it a depth. If you give a movie clip the same depth value as another duplicated movie clip then the new movie clip will replace the old one. If we used the laserCounter for the depth we could find ourselves duplicating lasers with the same depth as lasers that are still on the stage. And so we use a separate depthCounter. The depthCounter just cycles in order through the values 1, 2, 3 and 4 while the laserCounter can be any value between 1 and 4 depending on how many lasers are on the stage. There is now one last thing we need to do, add in the code to reduce the laserCounter by one when the laser moves of the stage. So, close the Actions window, select the laser movie clip and open the actions window for the laser (Window> Actions). Directly under the line if (this._x>600){ and above the this.removeMovieClip(); line add the following code. _root.spaceship.laserCounter--; This code reduces the laserCounter variable by one if the laser has moved off the stage (i.e.: its x-coordinate is>600).
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||
|