Defining event handler methods in ActionScript 1.0

NOTE

Many Flash users can greatly benefit from using ActionScript 2.0, especially with complex applications. For information on using ActionScript 2.0, see Classes.

You can create an ActionScript class for movie clips and define the event handler methods in the prototype object of that new class. Defining the methods in the prototype object makes all the instances of this symbol respond the same way to these events.

You can also add an onClipEvent() or on() event handler methods to an individual instance to provide unique instructions that run only when that instance's event occurs. The onClipEvent() and on() methods don't override the event handler method; both events cause their scripts to run. However, if you define the event handler methods in the prototype object and also define an event handler method for a specific instance, the instance definition overrides the prototype definition.

To define an event handler method in an object's prototype object:

  1. Create a movie clip symbol and set the linkage identifier to theID by selecting the symbol in the Library panel and selecting Linkage from the Library pop-up menu.
  2. In the Actions panel (Window > Actions), use the function statement to define a new class, as shown in the following example:
    // define a class
    function myClipClass() {}
    

    This new class is assigned to all instances of the movie clip that are added to the application by the timeline or that are added to the application with the attachMovie() or duplicateMovieClip() method. If you want these movie clips to have access to the methods and properties of the built-in MovieClip object, you need to make the new class inherit from the MovieClip class.

  3. Enter code, such as the following example:
    // inherit from MovieClip class
    myClipClass.prototype = new MovieClip();
    

    Now, the class myClipClass inherits all the properties and methods of the MovieClip class.

  4. Enter code, such as the following example, to define the event handler methods for the new class:
    // define event handler methods for myClipClass class
    myClipClass.prototype.onLoad = function() {trace("movie clip loaded");}
    myClipClass.prototype.onEnterFrame = function() {trace("movie clip entered frame");}
    
  5. Select Window > Library to open the Library panel if it isn't already open.
  6. Select the symbols that you want to associate with your new class, and select Linkage from the Library panel pop-up menu.
  7. In the Linkage Properties dialog box, select Export for ActionScript.
  8. Enter a linkage identifier in the Identifier text box.

    The linkage identifier must be the same for all symbols that you want to associate with the new class. In the myClipClass example, the identifier is theID.

  9. Enter code, such as the following example, in the Actions panel:
    // register class
    Object.registerClass("theID", myClipClass);
    this.attachMovie("theID","myName",1);
    

    This step registers the symbol whose linkage identifier is theID with the class myClipClass. All instances of myClipClass have event handler methods that behave as defined in step 4. They also behave the same as all instances of the MovieClip class because you told the new class to inherit from the class MovieClip in step 3.

    The complete code is shown in the following example:

    function myClipClass(){}
    
    myClipClass.prototype = new MovieClip();
    myClipClass.prototype.onLoad = function(){
        trace("movie clip loaded");
    }
    myClipClass.prototype.onPress = function(){
        trace("pressed");
    }
    
    myClipClass.prototype.onEnterFrame = function(){
        trace("movie clip entered frame");
    }
    
    myClipClass.prototype.myfunction = function(){
        trace("myfunction called");
    }
    
    Object.registerClass("myclipID",myClipClass);
    this.attachMovie("myclipID","clipName",3);