![]() ![]() ![]() | |
![]() | |
![]() | |
![]() |
Note: If you have never used ActionScript to write object-oriented scripts and don't need to target Flash Player 5, you should not use the information in this section, because writing scripts using ActionScript 1 is deprecated; instead, see Creating Classes with ActionScript 2.0 for information on using ActionScript 2.0.
Inheritance is a means of organizing, extending, and reusing functionality. Subclasses inherit properties and methods from superclasses and add their own specialized properties and methods. For example, reflecting the real world, Bike would be a superclass and MountainBike and Tricycle would be subclasses of the superclass. Both subclasses contain, or inherit, the methods and properties of the superclass (for example, wheels
). Each subclass also has its own properties and methods that extend the superclass (for example, the MountainBike subclass would have a gears
property). You can use the elements prototype
and __proto__
to create inheritance in ActionScript.
All constructor functions have a prototype
property that is created automatically when the function is defined. The prototype
property indicates the default property values for objects created with that function. You can use the prototype
property to assign properties and methods to a class. (For more information, see Assigning methods to a custom object in ActionScript 1.)
All instances of a class have a __proto__
property that tells you what object they inherit from. When you use a constructor function to create an object, the __proto__
property is set to refer to the prototype
property of its constructor function.
Inheritance proceeds according to a definite hierarchy. When you call an object's property or method, ActionScript looks at the object to see if such an element exists. If it doesn't exist, ActionScript looks at the object's __proto__
property for the information (myObject.__proto__
). If the property is not a property of the object's __proto__
object, ActionScript looks at myObject.__proto__.__proto__
, and so on.
The following example defines the constructor function Bike()
:
function Bike (length, color) { this.length = length; this.color = color; }
The following code adds the roll()
method to the Bike class:
Bike.prototype.roll = function() {this._x = _x + 20;};
Instead of adding roll()
to the MountainBike class and the Tricycle class, you can create the MountainBike class with Bike as its superclass:
MountainBike.prototype = new Bike();
Now you can call the roll()
method of MountainBike, as shown in the following:
MountainBike.roll();
Movie clips do not inherit from each other. To create inheritance with movie clips, you can use Object.registerClass()
to assign a class other than the MovieClip class to movie clips. See Object.registerClass()
.
For more information on inheritance, see Object.__proto__
, #initclip
, #endinitclip
, and super
.
![]() | |
![]() | |
![]() | |
![]() ![]() ![]() |