影片剪辑的创建、方法、属性
影片剪辑就象一个独立的swf一样,运行时不受主时间轴的限制,它有它自已的时间轴。 在AS中,影片剪辑为MovieClip类类型的一个对象。您可以使用MovieClip类的属性和方法控制影片剪辑运行时的外观和行为。因此,在下文中将影片剪辑简称为mc 一、如何创建MC: 1、在创作环境中创建: 绘制好对象之后,用选择工具选中对象,直接按F8键,在弹出的对话框中选择影片剪辑即可 2、在运行时创建: 在运行时可用createEmptyMovieClip()方法创建一个空的MC,这常常用于需用AS绘图的代码中。 格式:MC. createEmptyMovieClip("名称",深度); 比如说:this.createEmptyMovieClip("mymc_mc",1); 使用this代替MC的意思是在根时间轴上创建影片剪辑。 二、在AS中操作MC: 方法有二: 1、用鼠标从库中将MC拖到舞台上(对应第一种方法创建的MC)。 然后打开属性面板,为该MC实例命名(比如mymc_mc) 2、在运行时从库中加载MC(对应第二种方法创建的MC): 要在运行中从库中加载MC,首先要设置MC的连接标识: 在库中右击MC,点击“链接”,在弹出的对话框中,在“为ActionSprit导出“前的方框中打钩,然后在上面标识符栏内取一个名字,比如:mymc 三、影片剪辑的方法: 1、attachMovie()方法 有标识符后就可以在运行时用MC的attachMovie()方法加载MC。 格式: MC. attachMovie("标识符","新名称",深度); 这里MC是指要加载MC的实例名称。一个MC中是可以加载另一个MC的,当然也可以是主时间轴。 如果代码是写在帧上,则常用this或_root来代表主时间轴,推荐使用this,也可以省略不写; 如果代码是写在元件上,要主场景加载mc就必须用:_root或this.perent. 2、getNextHighestDepth() 方法: 深度相当于层的概念(深度的数字越大,则越在上面)。 如果深度相同,那新加载的对象就会覆盖原来相同深度上的对象(在后面我们会发现这是一个十分有用的东西)。 在用attachMovie()方法加载MC时,怎样却定深度呢?深度一般可以从0开始往上加。 如果已记不住现在深度是多少了,万一用重了,不是就将原来那个对象删了吗?于是getNextHighestDepth() 方法运应而生。 getNextHighestDepth() 方法确定传递给attachMovie()方法的深度值,以确保 Flash 将该影片剪辑呈现在当前影片剪辑中同一级和同一层上所有其它对象的前面。 返回的值为 0 或更大的数字(即,不返回负数)。 于是我们上面已在库中设好标识符的MC就可以这样加载到场景中: this. attachMovie("mymc","mymc_mc",this.getNextHighestDepth()); 用attachMovie()方法加载的MC,会被加载到舞台上(0,0)的位置,很显然这不是我们想要的结果。 所以加载后往往要设置MC的_x,_y属性,以使它呆在我们希望它呆的地方。 新建一个MC,居中画一个圆,在第50帧插入关键帧,将圆向右移500象素,创建补间动画。在库中右击圆元件,点击“连接”,在弹出的对话框中,在“为ActionSprit导出“前的方框中打钩,然后在上面标识符栏内取一个名字:mymc 现在回到主场景,右击第一帧,点“动作”,在动作面板中输入: this. attachMovie("mymc","mymc_mc",this.getNextHighestDepth()); mymc_mc._x=50; mymc_mc._y=200; 测试影片,会看到库中的MC被加载到舞台上,一个圆从屏幕的左边向右边移动。 3、MC.duplicateMovieClip() 方法:在运行时复制一个MC。 格式:MC.duplicateMovieClip("新名称",深度) 上面我们已建好了一个名为mymc_mc的影片剪辑,现在要复制它,这样写: mymc_mc.duplicateMovieClip("mymc1_mc",this.getNextHighestDepth()); 4、removeMovieClip()方法:移除影片剪辑 对于用attachMovie()方法加载的、用duplicateMovieClip复制的、用createEmptyMovieClip()创建的MC,都可以用removeMovieClip()方法移除。 来看看上面我们做那个练习,测试时,圆不停地反复地从左向右运动,现在我们让小球只运动一次,即当小球到达右边时,移除小球MC。 做法:在库中双击小球MC,进入小球元件编辑区,在第50帧上,点右键,点动作,在帧面板中输入: this. removeMovieClip(); 测试影片,当小球移动右边,第50帧时,小球被移除了。 duplicateMovieClip()全局函数: 这是一个全局函数而不是MC的方法,虽然它们的作用是一样的,但格式有所不同。 格式:duplicateMovieClip("要复制的MC的名称","新名称",深度); 仍然以mymc_mc为例,要复制它,这样写: duplicateMovieClip("mymc_mc","mymc1_mc",this.getNextHighestDepth()) 四、几个常用的属性: MC有很多属性,将在后续课程中陆续介绍,这里先介绍几个常用的属性: _x MC在其父级容器中的横坐标位置。 _y MC在其父级容器中的纵坐标位置。 _rotation 旋转的角度。 _width 宽度 _ymouse 鼠标位置的y坐标 _yscale MC高度的百分比例,可用于设置MC的大小。 _visible MC是否可见,些值为true或1,则MC可见,如果为false或非1则不可见。 五、综合练习:夜色中的荧火虫 本帖隐藏的内容需要回复才可以浏览 1、通过onEnterFrame事件,使每一过帧从库中加载一次荧光元件,并用一个i变量计数,使荧光数量不超过50。 2、 this. attachMovie("mymc","mymc"+i,i);这一句加载语句中的深度用了变量i,而i将会是从0到49,然后回到0,周而复始,这样第二轮的0-49将的深度就与第一轮的相同,上面我们说到了,这时新加载的就会覆盖原来的,这就实现了荧光的更新,同时也保证了荧光的总数量为50个。前面我们说深度的这一特性将会很有用,在这里就用上了。 3、荧光的位置和旋转角度都采用random()来随机产生,这样就实现了,荧光随机出现的舞台上,运动方向也是随机的。 大家可以扩展一下: 将加载的荧光元件的_x属性设为_xmouse+random(50), 将_y属性设为_ymouse+random(50) 测试看一看,一个鼠标跟随效果就出来了。 上面练习是用attachMovie()从库中加载元件的方式实现的。用duplicateMovieClip()复制的方法也是可以实现的,方法略有不同: 将库中的灾光元件拖到舞台上,任一位置,打开属性面板,将实例名称设为:mymc_mc.帧动作上的代码为: 本帖隐藏的内容需要回复才可以浏览 【题外话:】第25话:系统的讲解AS之十一~~~~影片剪辑Part1 - flashaera - flash天地
最近访问本帖者列表:访问时间:2019-03-09 13:24 | |||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||