Flash 8 Documentation |
|||
| ActionScript 2.0 Language Reference > ActionScript language elements > Global Properties > this property | |||
this
References an object or movie clip instance. When a script executes, this references the movie clip instance that contains the script. When a method is called, this contains a reference to the object that contains the called method.
Inside an on() event handler attached to a button, this refers to the Timeline that contains the button. Inside an onClipEvent() event handler attached to a movie clip, this refers to the Timeline of the movie clip itself.
Because this is evaluated in the context of the script that contains it, you can't use this in a script to refer to a variable defined in a class file.
Availability: ActionScript 1.0; Flash Player 5
Create an ActionsScript file named ApplyThis.as and then enter the following code:
class ApplyThis {
var str:String = "Defined in ApplyThis.as";
function conctStr(x:String):String {
return x+x;
}
function addStr():String {
return str;
}
}
Then, in a FLA or a separate ActionScript file, add the following code
var obj:ApplyThis = new ApplyThis(); var abj:ApplyThis = new ApplyThis(); abj.str = "defined in FLA or AS"; trace(obj.addStr.call(abj, null)); //output: defined in FLA or AS trace(obj.addStr.call(this, null)); //output: undefined trace(obj.addStr.call(obj, null)); //output: Defined in applyThis.as
Similarly, to call a function defined in a dynamic class, you must use this to invoke the function in the proper scope:
// incorrect version of Simple.as
/*
dynamic class Simple {
function callfunc() {
trace(func());
}
}
*/
// correct version of Simple.as
dynamic class simple {
function callfunc() {
trace(this.func());
}
}
Inside the FLA or a separate ActionScript file, add the following code:
var obj:Simple = new Simple();
obj.num = 0;
obj.func = function() {
return true;
};
obj.callfunc();
// output: true
The above code works when you use this in the callfunc() method. However you would get a syntax error if you used the incorrect version of Simple.as, which was commented out in the above example.
In the following example, the keyword this references the Circle object:
function Circle(radius:Number):Void {
this.radius = radius;
this.area = Math.PI*Math.pow(radius, 2);
}
var myCircle = new Circle(4);
trace(myCircle.area);
In the following statement assigned to a frame inside a movie clip, the keyword this references the current movie clip.
// sets the alpha property of the current movie clip to 20 this._alpha = 20;
In the following statement inside a MovieClip.onPress handler, the keyword this references the current movie clip:
this.square_mc.onPress = function() {
startDrag(this);
};
this.square_mc.onRelease = function() {
stopDrag();
};
on handler, onClipEvent handler
Version 8
Send me an e-mail when comments are added to this page | Comment Report
Current page: http://livedocs.adobe.com/flash/8/main/00001795.html