在第3帧插入关键帧,将在这一帧设置文字语言,速度等。 进入设置页面后,首先停止游戏: clearInterval(szm); zs=0;
df=0; //下面是几个设置按钮上的代码: zm_btn.onRelease = function(){
lg=1;//让娈量lg等于1,这样文字将会是字母 yysz_txt.text=\字母\}
zw_btn.onRelease = function(){
lg=2;//让娈量lg不等于1,这样文字将会是中文 yysz_txt.text=\中文\}
ms_btn.onRelease= function(){
sd = 1000;//设置sd为1000毫秒,即每1000毫秒出一个文字,下同 sdsz_txt.text=\慢速\}
zs_btn.onRelease=function(){ sd = 500;
sdsz_txt.text=\中速\}
ks_btn.onRelease=function(){ sd =200;
sdsz_txt.text=\快速\}
qd_btn.onRelease=function(){//这是确定按钮上的代码,点击确定按钮后,退出设置窗口,返回游戏窗口,继续游戏。
gotoAndStop(2); }
好,完工,祝你成功!
第七课 影片剪辑 第一节 创建影片剪辑
影片剪辑
影片剪辑就象一个独立的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_mc = eval(\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(\这一句加载语句中的深度用了变量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_mc = eval(\mymc_mc._x=random(450)+50; mymc_mc._y=50+random(300);
mymc_mc._rotation = random(360); i++; }else { i=0; } }
作业:
1.夜色下的荧火虫的制作
2.用本节所讲内容制作一下雨或下雪效果。
第二节 加载swf文件
上一节中,我们已经能创建MC,本节我们将介绍加载外部swf文件的方法。 loadMovie函数及MC的loadMovie()方法:
使用 loadMovie() 函数可以在播放原始 SWF 文件时,将 SWF、JPEG、GIF 或 PNG 文件加载到 Flash Player 中的影片剪辑中。加载的图像或 SWF 文件的左上角与目标影片剪辑的注册点对齐。
格式:loadMovie(“要加载的swf文件或图片“,目标影片剪辑); 要加载的swf文件或图片可以来源于网络,书写格式为:http://.... 可以来源于本地硬盘上的文件系统,书写格式为:file:///.......
如果要加载的swf文件或图片与fla文件在同一目录下,则直接写文件名。
目标影片剪辑可以是任何影片剪辑,也可以是主场景,加载后,目标影片剪辑将被替换成加载的文件。
例1:加载一个网络上的swf文件sub.swf到创建的MC中: this.createEmptyMovieClip(\
loadMovie(\例2:加载一个本地的swf文件sub.swf到主舞台: loadMovie(\
例3:加载一个相同目录下的图片picture.jpg到创建的MC中: this.createEmptyMovieClip(\loadMovie(\
以上是loadMovie函数的写法,而MC的loadMovie()方法也一样,只写法不同,如:this.createEmptyMovieClip(\
picture_mc.loadMovie(\loadMovieNum 函数
在播放原始 SWF 文件时,将 SWF、JPEG、GIF 或 PNG 文件加载到一个级别中。用法跟loadMovie一样,只是它不是指明目标影片剪辑,而加载到一个深度上。比如要加载相同目录下的swf文件myflash.swf到深度为2的级别中:
loadMovieNum(“myflash.swf”,2);
要注意的是,上一节我们介绍了,当深度相同时,新加载的对象会覆盖原来的对象。我们也以用下面一句来加载外部swf文件:
loadMovieNum(“myflash.swf”,this.getNextHighestDepth()); MovieClipLoader类
此类用于实现在 SWF、JPEG、GIF 和 PNG 文件正被加载到影片剪辑中时提供状态信息的侦听
器回调。也就是说用这类加载swf文件,可以在加载过程中进行控制,如观察加载进度等。要使用MovieClipLoader类就应首先用构造函数创建一个MovieClipLoader类的实例才能操作其方法,事件,实现加载功能。如:
var mcLoader:MovieClipLoader = new MovieClipLoader();
loadClip方法:该方法的作用和用法与loadMovie()是一样的。如: this.createEmptyMovieClip(\
var mcLoader:MovieClipLoader = new MovieClipLoader(); mcLoader.loadClip(\);
上面说到,用本类加载外部swf文件或图片可以在加载过程中加以操作,主要是通过几个事件的调用来实现:onLoadStart事件:在下载的文件的第一个字节写入硬盘后,调用。
格式: onLoadStart = function([target_mc: MovieClip]) {} 其中的target_mc为要加载外部影片的目标MC。
onLoadComplete事件:当加载的文件完全下载时调用。
格式:onLoadComplete = function([target_mc: MovieClip]) {} onLoadInit事件:当执行加载的剪辑的第一帧上的动作时调用。
在调用此侦听器后,您可以设置属性、使用方法,还可以与加载的影片交互。 格式:onLoadInit = function([target_mc: MovieClip]) {}了解
MovieClipLoader.onLoadComplete和 MovieClipLoader.onLoadInit之间的差异非常重要。
onLoadComplete事件在加载 SWF、JPEG、GIF 或 PNG 文件之后但在应用程序初始化之前被调用。此时,无法访问已加载的影片剪辑的方法和属性,因此您无法调用函数、移动到特定帧,等等。在多数情况下,最好改为使用 onLoadInit事件,它在内容已加载并完全初始化后被调用。
onLoadProgress事件:在加载过程中(即在 MovieClipLoader.onLoadStart和 MovieClipLoader.onLoadComplete之间时),每当正加载的内容写入硬盘时调用。
格式:onLoadProgress = function([target_mc: MovieClip], loadedBytes: Number, totalBytes: Number) {}
loadedBytes为已经加载的字节数。totalBytes为要加载的swf的总的字节数。如果在测试模式中,您试图对驻留在硬盘上的本地文件使用 onLoadProgress,则它将不能正常工作,这是因为在测试模式中,Flash Player 会将本地文件作为一个整体加载。
onLoadError事件:加载的文件未能加载时调用。出于各种原因,会调用此侦听器;例如服务器关闭、找不到文件或发生安全侵犯。
上述事件的调用方法我给你整成一个公式的模式,直接套用就行了。 MovieClipLoader类事件调用公式: //首先创建一个MovieClipLoader对象
var mcLoader:MovieClipLoader = new MovieClipLoader();//mcLoader为自已取的名称 //然后创建一个侦听对象
var listener:Object = new Object();//listener为自已取的名称 //调用下列事件之一或多个
listener.onLoadStart = function(target_mc:MovieClip) {}
listener.onLoadComplete = function([target_mc: MovieClip]) {} listener.onLoadInit = function([target_mc: MovieClip]) {} listener.onLoadProgress = function([target_mc: MovieClip], loadedBytes: Number, totalBytes: Number) {} //MovieClipLoader对象调用侦听对象 mcLoader.addListener(listener);
//MovieClipLoader对象加载外部swf或图片
mcLoader.loadClip(“外部文件地址”,目标影片剪辑); 下面介绍MovieClipLoader类的几个方法
loadClip方法:在播放原始影片时,将 SWF、JPEG、渐进式 JPEG、非动画 GIF 或 PNG 文件加载到 Flash Player 中的影片剪辑中。
addListener(侦听对象)方法:注册一个对象,以便在调用 MovieClipLoader 事件处理函数时接收通知。