求AS3高手解释This关键字的含义及在类和方法中的各自作用?? 越详细越好!万分感谢!!

如题所述

this:
this关键字持有对当前对象的引用,编译器将this关键字加在类中每一个调用实例属性和实例方法的地方。
this关键字常见使用情况:
(1)向第三方提供对象自身的引用。
(2)与return结合,在类方法中返回自身的引用。
(3)和局部变量,方法参数,静态属性同名时,加上this关键字明确指定使用实例属性。
1.STAGE是根,是最顶层的容器!可以通过STAGE的任何子容器或显示对象以DisplayObjectContainer.stage(需注意的是stage是小写,如果在时间轴上trace(stage.width)是正确的,如果写成trace(Stage.width则会报错))或DisplayObject.stage访问到Stage类的唯一实例stage.就连主时间轴也是stage容器的子容器。
例如。你在主时间轴上写上代码:trace(this);输出的是什么呢?因为你是在主时间轴上写的。所以返回的是一个对象:MainTimeLine,也就是主时间轴了。可以试试在主时间轴上写:trace(this.stage);当然输出的是Stage对象了。也可以省略不写this,直接写:trace(stage);输出的还是Stage对象。为了更清楚,在主时间轴上写上代码:trace(stage.getChildAt(0));看看输出的是什么呢?如果是MainTimeLine的话,就更能说明问题了,主时间轴是stage容器的第一个子容器,在索引位置0上。
张志晨追问

这个我在《ActionScript3殿堂之路》里有看过,但是我就是觉得不是太清楚!你能用个简易的代码例子通俗的给我演示和讲解一下吗?像以下:
(1)向第三方提供对象自身的引用。
(2)与return结合,在类方法中返回自身的引用。
(3)和局部变量,方法参数,静态属性同名时,加上this关键字明确指定使用实例属性。
另外我想请教你怎样在一个函数(方法)里准确找到和输出当前对象??
麻烦你了!到时我还加多50分给你!!

追答

在主时间线上的代码:
trace(this);//得到:[object MainTimeline] 主时间线
zzc_mc.addEventListener(MouseEvent.MOUSE_DOWN, fl_Click);
function fl_Click(event):void {
trace(this.name );// 得到元件所在时间线属性:name=root1
}
在Mc内部的代码:
trace(this);//得到:[object MainTimeline] 主时间线
zzc_mc.addEventListener(MouseEvent.MOUSE_DOWN, fl_Click);
function fl_Click(event):void {
trace(this.name );// 得到元件所在时间线属性:name=root1可提供给全局变量,供第三方元件调用,就是除主时间线、自身以外的第三方使用。
}

下面这是一个类,主类:
package {
import flash .display .MovieClip
import flash .events .MouseEvent
public class returnThis extends MovieClip{
public function returnThis(){
// constructor code
init();
}
public function init() {
return this //此句输出:[object returnThis]供调用

}

}

}

张志晨:我也只明白这些,再深的也不明白了。共同学习,期待高手出现!

追问

呵呵!其实你上面说的这个我在一篇文章里有看过,讲的是:This、root、stage关键字的区别!
不过还是非常感谢你的回答!
我学的AS3程序编程主要从事游戏编程方面。你应该是做动画方面的吧?
我的QQ是:1185783841
如不嫌弃就加个朋友吧!向你学习下!!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-19
殿堂之路

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网