ActionScript3.0问题:请老师赐教var mainTimeLine:MovieClip = root as MovieClip;的含义

下列是flash中其中一个电影剪辑的语句:stop();//如果影片播放停止,肯定会回到这一帧,//那么就在这一帧做一些初始化工作//movie_mc让它回到第1帧mov... 下列是flash中其中一个电影剪辑的语句:

stop();
//如果影片播放停止,肯定会回到这一帧,
//那么就在这一帧做一些初始化工作
//movie_mc让它回到第1帧

movie_mc.gotoAndStop(1);
var mainTimeLine:MovieClip = root as MovieClip;
var whichMovie:String;
//判断影片是处于播放状态还是处于停止状态
if (mainTimeLine.isPlaying) {
gotoAndPlay(2);
}

【问题1】:
特别是这句【var mainTimeLine:MovieClip = root as MovieClip;】什么含义?
【问题2】
为什么这个地方要用root?我试着把root换成parent,也能正常运行,不知道root和parent在这个时候到底有啥区别?
展开
 我来答
Keensb
2013-01-02 · TA获得超过787个赞
知道小有建树答主
回答量:952
采纳率:0%
帮助的人:747万
展开全部
root as MovieClip 的意思是尝试把root转成MovieClip类型来处理。

原代码语句意思是创建一个名为mainTimeLine的MovieClip,并把它的实体指向根场景root。由于root的默认类型是DisplayObject,直接写 var mainTimeLine:MovieClip = root 的话,MovieClip类型的mainTimeLine 与 DisplayObject类型的root不匹配,所以会报错,必须通过其他方法来转变root的类型。

有三种方法

1比较式转变
var mainTimeLine:MovieClip = root as MovieClip;

2强制转变
var mainTimeLine:MovieClip = MovieClip(root) ;

3动态转变,也是强制转变的一种
var mainTimeLine:MovieClip = this["root"];

第二种似乎效率高一点,也容易报错.

//可以比较一下:
//var xxx:Array = root as Array 不会报错,trace(xxx)得到空值null

//var xxx:Array = Array(root) 会报错

var mainTimeLine:MovieClip = parent as MovieClip能成功的话,说明你的代码写在主场景上的某个MC里面,在这种情况下,主场景(root)就是该MC的父级(parent)。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式