注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

《电脑之家》

请点击:“日志”浏览电脑知识

 
 
 

日志

 
 

第六课:AS创建影片剪辑  

2011-02-02 20:38:38|  分类: AS课堂 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

       影片剪辑就象一个独立的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属性,以使它呆在我们希望它呆的地方。
下面来做一个练习:掌握和巩固加载.swf的方法及加载后定位方法
新建一个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帧插入关键帧,将五角星向下离一段距离。创建补间动画。在库中右击五角星元件,设置标识符为: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.帧动作上的代码为:
i=0;
onEnterFrame = function() {

if(i<10){
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;

}
}

 

 

制作个性签名范例

  评论这张
 
阅读(439)| 评论(40)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017