Flash AS3中MovieClip(event.target)是什么意思?

有这么一段AS3程序:publicfunctioncircles(){varcircle1:Circle=newCircle();varcircle2:Circle=ne... 有这么一段AS3程序:
public function circles() {
var circle1:Circle = new Circle();
var circle2:Circle = new Circle();
var circle3:Circle = new Circle();
circle1.x = 250;
circle1.y = 175;
circle2.x = 300;
circle2.y = 175;
circle3.x = 275;
circle3.y = 225;
addChild(circle1);
addChild(circle2);
addChild(circle3);
circle1.addEventListener(MouseEvent.CLICK, clickCircle);
circle2.addEventListener(MouseEvent.CLICK, clickCircle);
circle3.addEventListener(MouseEvent.CLICK, clickCircle);

}

function clickCircle(event:MouseEvent) {
setChildIndex(MovieClip(event.target),numChildren-1);
//setChildIndex(event.target,numChildren-1); // error!
trace(MovieClip(event.target)); // [object Circle]
trace(event.target); // [object Circle]
}

请问MovieClip(event.target)与event.target有什么区别?用trace输出的结果为何都一样?
为什么用setChildIndex(event.target, numChildren-1)就出错?
展开
 我来答
show3show
2013-03-15 · TA获得超过396个赞
知道小有建树答主
回答量:671
采纳率:0%
帮助的人:722万
展开全部
1、对于setChildIndex这个方法来说,已经规定了参数类型和个数。这就好像一个自动化生产线,比如这是一个薯条的生产线,它允许你放入土豆,然后加工成薯条。如果你放入的不是土豆,而是蕃茄什么的,它就会出错,因为它的程序只能处理土豆,而不具备蕃茄的处理能力。

2、而在上面的代码中event.target的类型是Object,object是个什么东西呢?它就好比我们生活中“东西”的概念,任何的物体我们都可以认为这是个“东西”。你可以说某个土豆是个“东西”,某个蕃茄是个“东西”,甚至某个人是个“东西”。

3、综合上面两点,你应该明白,当你把一个不知道是什么“东西”的event.target放到setChildIndex这条只允许放入特定物体生产线上,程序自然会认为你这种做法是错误的。

4、因为setChildIndex这条生产线只允许我们放入土豆(DisplayObject)这种类型的东西,那么我们怎么把现在拿到的event.target这个没有任何标签,不知道是个什么的“东西”放进去呢?好吧,很简单,我们只要给它贴上标签就可以了,我们通过强制类型转换MovieClip(event.target)可以给这个东西贴上标签,告知程序,这是某种类型的物体。你会问了,刚才不是说只能放入土豆(DisplayObject)吗?查阅一下帮助文档你就会发现,MovieClip是DisplayObject的子类,刚才我们已经把DisplayObject当作是土豆了,那么MovieClip可以认为是一种特殊的土豆,比如紫薯(好吧,紫薯不是土豆,不过我实在想不出其他分类了)。

5、我们再深入讨论一下,是不是任何的“东西”都可以通过改变标签(强制类型转换)的方式来放入薯条生产线呢?答案是否定的,你可以对标签任意操作,但是如果被程序发现你的行为是在造假,那么它会没收你的东西。不信你可以试试下面的代码
var i:uint=100;

trace(MovieClip(i));//输出null
匿名用户
2013-03-15
展开全部
flash.display.DisplayObjectContainer.setChildIndex () 方法 方法原型
public function setChildIndex(child:DisplayObject, index:int):void

明显看出setChildIndex方法第一个参数类型要求是DisplayObject
而flash.events.Event.target属性 类型是 Object

编译器在编译时,会检验数据类型,所以需要对target强制转换类型为MovieClip

注:MovieClip是DisplayObject类的子类

原理类似你自己工作的公司派你去出差,到了对方公司后,对方只知道你是客户公司的,还需要问你贵姓,才可以称呼你,通俗说法就是这样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式