Working with Movie Clips and Buttons > Using event methods in a Flash document

 

Using event methods in a Flash document

Macromedia Flash MX ships with a sample movie called Scrolling_starfield.fla that can be found in the FlashMX/Samples folder on your hard drive (or by choosing Help > Samples in Macromedia Flash MX and then choosing Game element: Scrolling background). You can look at the ActionScript in Scrolling_starfield.fla to see how events are handled in a real Macromedia Flash document.

The author of Scrolling_starfield.fla included three event handlers in a script in Frame 1 of the main Timeline. The first is the enterFrame event for the main Timeline. Each movie clip Timeline has an enterFrame event that is invoked each time the playhead enters a frame. Even in a one-frame movie, the playhead repeatedly enters that frame and the event is invoked each time. By defining a function for _root.enterFrame, the author of Scrolling_starfield.fla created a function that executes over and over as the movie plays and scrolls the starfield. You don't need to understand the code in the body of the function to understand how the function is defined and assigned to the onEnterFrame event, as follows:

_root.onEnterFrame = function() {
	with (starfield) {
		// move starfield based on the positions of the faders
		_x += (horizfader._x-horizfader.initx)/15;
		_y += (vertfader._y-vertfader.inity)/15;
		//
		// loop the starfield
		if (_x>initx+220) {
			_x = initx;
		}
		if (_x<initx) {
			_x = initx+220;
		}
		if (_y>inity+215) {
			_y = inity;
		}
		if (_y<inity) {
			_y = inity+215;
		}
	}
};

Scrolling_starfield contains two buttons, generate and toggle. The generate button creates a starfield when it is released, and the toggle button toggles the starfield's edge lines on and off when it is released. The author of Scrolling_starfield.fla defined a function for each button's onRelease event. Again, you don't need to understand the code in the body of the functions to appreciate how the functions are assigned to the onRelease events, as follows:

// generate starfield when generate button is clicked
generate.onRelease = function() {
	for (i=1; i<=300; i += 4) {
		for (a=0; a<=3; a++) {
			duplicateMovieClip(starfield.star, "star"+(i+a), i+a);
			if (i%7 == 0) {
				starfield["star"+(i+a)]._xscale = 200;
				starfield["star"+(i+a)]._yscale = 200;
			}
		}
		starfield["star"+i]._x = Math.floor(Math.random()*220);
		starfield["star"+i]._y = Math.floor(Math.random()*215);
		starfield["star"+(i+1)]._x = starfield["star"+i]._x-220;
		starfield["star"+(i+1)]._y = starfield["star"+i]._y;
		starfield["star"+(i+2)]._x = starfield["star"+i]._x-220;
		starfield["star"+(i+2)]._y = starfield["star"+i]._y-215;
		starfield["star"+(i+3)]._x = starfield["star"+i]._x;
		starfield["star"+(i+3)]._y = starfield["star"+i]._y-215;
	}
};
//
// toggle dotted cross-hair visibility
toggle.onRelease = function() {
	starfield.centerlines._visible = !starfield.centerlines._visible;
};