求AS3高手解释This关键字的含义及在类和方法中的各自作用?? 越详细越好!万分感谢!!
答案:2 悬赏:0 手机版
解决时间 2021-02-11 13:36
- 提问者网友:泪痣哥哥
- 2021-02-10 19:40
求AS3高手解释This关键字的含义及在类和方法中的各自作用?? 越详细越好!万分感谢!!
最佳答案
- 五星知识达人网友:北方的南先生
- 2021-02-10 21:06
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
如不嫌弃就加个朋友吧!向你学习下!!
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楼网友:怙棘
- 2021-02-10 21:26
殿堂之路
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯