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在这个时候到底有啥区别? 展开
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在这个时候到底有啥区别? 展开
展开全部
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)。
原代码语句意思是创建一个名为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)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询