当前位置: 首页 > 图文教程 > Flash动画 > ActionScript > Flash as入门(7):创建影片剪辑

ActionScript
FLASH 3D相册之利用BitmapData类制作
Flash 脚本游戏开发教程 第一课
Flash 脚本游戏开发教程第二课
Flash 脚本游戏开发教程第三课
Flash 脚本游戏开发教程第四课
Flash 脚本游戏开发教程第五课
Flash 脚本游戏开发教程第六课
Flash 脚本游戏开发教程第七课
Flash 脚本游戏开发教程第八课
Flash AS实现的蝌蚪摆尾动画的教程
从基础开始深入学Flash AS3教程(4)(译文)
从基础开始深入学Flash AS3教程(5)(译文)
从基础开始深入Flash AS3教程(2)(译文)
从基础开始深入学Flash AS3教程(3)(译文)
Flash AS3对单个图片进行角色动作化处理
从基础开始深入Flash AS3教程(1)(译文)
Flash教程:if条件语句的用法
Flash AS教程:_visible属性的详细讲解
Flash AS教程:图片环绕旋转效
Flash教程:trace()的使用

ActionScript 中的 Flash as入门(7):创建影片剪辑


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-01   浏览: 352 ::
收藏到网摘: n/a

本例继续讲解AS的基础知识,今天我们来学习Flash AS入门系列教程第七课:影片剪辑第一节创建影片剪辑,对Flash的AS编程有兴趣的朋友可以到论坛与作者交流。

影片剪辑

影片剪辑就象一个独立的swf一样,运行时不受主时间轴的限制,它有它自已的时间轴。在AS中影片剪辑为 MovieClip 类类型的一个对象。您可以使用 MovieClip 类的属性和方法控制影片剪辑运行时的外观和行为。因此,在下文中将影片剪辑简称为:mc

第一节 创建MC

一.在创作环境中创建MC:

在创作环境中创建MC的方法是:点击“插入”菜单-“新建元件”,在弹出的对话框中为该MC命名,在下面的类型选择中选“影片剪辑”,确定。现在就进入了MC的编辑环境,在这里制作你的MC。制作完成后,点击场景选项卡,则完成了MC的创建。打开库面板,可以看到刚刚创建的MC已在库中。为了能在AS中操作该MC,那么可有两种方式将MC加载到舞台上:一是用鼠标从库中将MC拖到舞台上,然后打开属性面板,为该MC实例命名,比如:mymc_mc。另一种方法是:

在运行中从库中加载MC:

要在运行中从库中加载MC,首先要设置MC的连接标识:在库中右击MC,点击连接,在弹出的对话框中,在“为ActionSprit导出“前的方框中打钩,然后在上面标识符栏内取一个名字,比如:mymc.

attachMovie()方法

有标识符后就可以在运行时用MC的attachMovie()方法加载MC。
格式:MC. attachMovie(“标识符”,“新名称”,深度);
这里MC是指要加载MC的MC,一个MC中是可以加载另一个MC的,当然也可以是主时间轴,如果代码是写在帧上,则常用this或_root来代表主时间轴,推荐使用this,也可以省略不写。如果代码是写在元件上,要主场景加载mc就必须用:_root或this.perent.

getNextHighestDepth() 方法:

深度相当于层的概念,深度的数字越大,则越在上面。如果深度相同,那新加载的对象就会覆盖原来相同深度上的对象,在后面我们会发现这是一个十分有用的东西。在用attachMovie()方法加载MC时,怎样却定深度呢?深度一般可以从0开始,从上加。也有问题,你说我记不住现在深度是多少了,万一用重了,不是就将原来那个对象删了吗?于是getNextHighestDepth() 方法运应而生。
getNextHighestDepth() 方法确定传递给attachMovie()方法的深度值,以确保 Flash 将该影片剪辑呈现在当前影片剪辑中同一级和同一层上所有其它对象的前面。于是我们上面已在库中设好标识符的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被加载到舞台上,一个圆从屏幕的左边向右边移动。

二.在运行时创建MC

createEmptyMovieClip()方法

在运行时可用:createEmptyMovieClip()方法创建一个空的MC,这常常用于需用AS绘图的代码中。
格式:MC. createEmptyMovieClip(”名称“,深度);
例:this.createEmptyMovieCli(”mymc_mc”,this. getNextHighestDepth());

三.复制MC

duplicateMovieClip()方法:

在运行时复制一个MC。
格式:MC.duplicateMovieClip(“新名称“,深度)
比如上面我们已建好的一个MC,mymc_mc,现在要复制它,这样写:

Mymc_mc.duplicateMovieClip(“mymc1_mc”,this.getNextHighestDepth());

duplicateMovieClip()全局函数:

这是一个全局函数而不是MC的方法,虽然它们的作用是一样的,但格式有所不同。
格式:duplicateMovieClip(“要复制的MC的名称”,“新名称”,深度);
仍然以mymc_mc为例,要复制它,这样写:
duplicateMovieClip(“mymc_mc”,“mymc1_mc”,this.getNextHighestDepth())

四.删除加载的MC

removeMovieClip()方法:

对于用attachMovie()方法加载的,用duplicateMovieClip复制的和用createEmptyMovieClip()创建的MC,可以用removeMovieClip()方法移除。
来看看上面我们做那个练习,测试时,小球不停地反复地从左向右运动,现在我们让小球只运动一次,即当小球到达右边时,移除小球MC。
做法:在库中双击小球MC,进入小球元件编辑区,在第50帧上,点右键,点动作,在帧面板中输入:
this. removeMovieClip();
测试影片,当小球移动右边,第50帧时,小球被移除了。

五.几个常用的属性:

MC有很多属性,将在后续课程中陆续介绍,这里先介绍几个常用的属性:

_x,_y:MC在其父级容器中的坐标位置。
_alpha:透明度,其值为0-100;
_rotation:旋转的角度。
_height:高度
_width:宽度
_visible:MC是否可见,些值为true或1,则MC可见,如果为false或非1则不可见。
_xmouse:鼠标位置的x坐标
_ymouse:鼠标位置的y坐标
_xscale:MC宽度的百分比例,可用于设置MC的大小。
_yscale:MC高度的百分比例,可用于设置MC的大小。

六.综合练习:夜色中的荧火虫

下面通过一个夜色中的荧火虫的制作,作为本节内容的综合练习。
首先新建一flash文档,新建一MC,取名为“荧光”。 用椭圆工具,禁止笔触,绿色填充,居中画一个小圆,2个像素大小就行。居中对齐。点击“修改”-“形状”-“柔化填充边缘“,距离10,步骤5,方向扩展。在第10帧插入关键帧,将圆向下离一段距离。创建补间动画。在库中右击荧光元件,设置标识符为:mymc.
回到主场景,打开帧动作面板输入:
i=0;
onEnterFrame = function() {

if(i<50){

this. attachMovie("mymc","mymc"+i,i);

mymc_mc = eval("mymc"+i);

mymc_mc._x=random(450)+50;

mymc_mc._y=50+random(300);


mymc_mc._rotation = random(360);


i++;

}else {

i=0;

}
}
OK,测试影片。
上面代码通过onEnterFrame事件,使每一过帧从库中加载一次荧光元件,并用一个i变量计数,使荧光数量不超过50。this. attachMovie("mymc","mymc"+i,i);这一句加载语句中的深度用了变量i,而i将会是从0到49,然后回到0,周而复始,这样第二轮的0-49将的深度就与第一轮的相同,上面我们说到了,这时新加载的就会覆盖原来的,这就实现了荧光的更新,同时也保证了荧光的总数量为50个。前面我们说深度的这一特性将会很有用,在这里就用上了。荧光的位置和旋转角度都采用random()来随机产生,这样就实现了,荧光随机出现的舞台上,运动方向也是随机的。
大家可以扩展一下,将加载的荧光元件的_x属性设为:_xmouse+random(50),将_y属性设为:_ymouse+random(50),测试看一看,一个鼠标跟随效果就出来了。
上面练习是用attachMovie()从库中加载元件的方式实现的,用duplicateMovieClip()复制的方法也是可以实现的,方法略有不同:
将库中的灾光元件拖到舞台上,任一位置,打开属性面板,将实例名称设为:mymc_mc.帧动作上的代码为:
mymc_mc._visible = false; //首先将舞台上的荧光元件隐藏。
i=0;
onEnterFrame = function() {

if(i<50){
duplicateMovieClip (“mymc_mc”,"mymc"+i,i);

mymc_mc = eval("mymc"+i);

mymc_mc._x=random(450)+50;

mymc_mc._y=50+random(300);


mymc_mc._rotation = random(360);


i++;

}else {

i=0;

}
}

作业:

1.夜色下的荧火虫的制作

2.用本节所讲内容制作一下雨或下雪效果。