分享

AS5

 昵称7591027 2011-08-28
上节课我们了解了电影元件语句格式以及对电影元件大小、坐标、透明度、旋转角度的控制等基本语句,本课将要学习电影元件其它常用的属性和动作。

   (一)电影元件上其它动作命令:

    1)duplicateMovieClip(被复制的元件实例名, 复制出来的新元件实例名, 元件的深度) 

       注:动态复制影片元件命令,要按格式写明要复制的对象,和生成副本后取名,(再次注明,实例名不可以数字开头,也不可以包含空格,也不能用系统保留字,如THIS等)以及显示深度的层次(数字越大越在最外层),副本元件与源元件位置是在同一路径下。显示层次指的是在该路径下各影片片段的显示上下关系,同一层只能有一个影片片段,否则已有者将被删除,以让位给新定义者。 (最后一句话的意思如果你用复制命令复制了两个不同名的元件却给了一样的深度,尽管两个元件给了不同的坐标,也只能显示出一个)

    2)removeMovieClip(元件实例名) 

       注:删除动态创建(用duplicationMovieClip)的影片元件。
 
    3)setProperty(元件实例名, 属性, 值)
 
       注:设置影片元件的各种属性值的命令,我已经学过点语法来设置电影元件属性,和这个功能相似,不同之处是这个命令可以动态设置。
 
    4)startDrag(元件实例名, [中心点是否对准鼠标热点, [x1, y1, x2, y2]]) 

       注:鼠标开始拖拽电影元件(一个时刻只能有一个影片片段被拖拽)。是否对准鼠标热点(默认为false),x1,y1,x2,y2指定被拖动的元件所能移动的范围坐标(默认为整个显示区)。

    5)stopDrag()停止鼠标拖动元件,这个不需要写实例名,因为当前被控制的元件只有一个。

    6)stopAllSounds() 

       注:关闭影片的所有声音。

    7)loadMovie("引用外部动画文件地址", 电影元件, [传递方式])

       注:这是载入命令,把外部动画载入到内部某电影元件中,要记住一但载入成功,内部这个电影元件就完全被外部这个动画给替代了,这个替代是指大小,背景,帧频和场景时间轴ROOT。电影元件是指内部已经存在的一个电影元件实例名。传递方式有主要有两种,这里不做介绍可以忽略。
 
    8)unloadMovie(元件实例名)
 
       注:卸载影片元件,可以是原来就有的元件或用loadMovie载入的元件。不在一起的元件注意写元件实例名前要注明路径指向,如:unloadMovie(_root.元件1.元件2)。

    以上语句同样不需要死记硬背拼写,只要能认识就行,可以通过插入使用,位置在全局函数,影片剪辑控制里。


   (二)随机函数、常量、变量:
 
    Math.random()  随机数函数,括号内写上取值范围,如写上100,就是从0~99之间取出随机数值,如果想取50~100之间随机数可以写成Math.random(51)+50。
    注:有人发现不写Math,直接写random也是一样的效果,FLASH5.0后不推荐直接写,而推荐在数学类函数前加上Math.方便程序编译速度。

    常量就是固定不变的值,如PI圆周率函数,固定是3.14。变量故名思意,是变化中的数量,做个比喻,一升水是常量,在哪里一升水都是一样的。而变量像个无限大的桶,而这个桶里在不同时候有多少水是不定的。常量就类似于一升水是个固定值,变量就类似于这个桶容器,里面装多少水是不一定的。

    变量赋值:var

    给随便起的变量名i初始赋值为1,则可以写成 var i = 1;也可以直接写成 i = 1;使用var可以严格申明变量类型。让变量i自动加1,可以写成i++。
    注:变量名可以包括数字,但不能数字开头,也不能用系统保留字如THIS等做变量。

[color=#A9A9A9]此贴最后由 89my 在 2008-01-01 02:40:02 编辑过

by 沧海[89my]  2008-01-01 01:28   FROM:218.2.*.* 
沧海[89my]
论坛等级:
积分/魅力:7759/21141
 1楼   

Re:AS第四课:电影元件常用属性和动作
本课实例练习:

01)打开FLASH,新建图形元件,起名叫线,在元件中绘制灰色斜线,大小20*50,粗细为1。

02)新建电影类型元件,起名叫雨线,把线元件拖入坐标为(0,0),然后在12帧上设为关键帧,并于此帧动作语言:

this._visible = false;

注:意思就是当播放到最后一帧时,本元件执行不可见,就是消失了,这句话是为了我后面停雨做准备的,不然自动重放雨总下不停。

03)将第12关键帧上的线元件位置坐标改成(-140,350),然后返回雨线元件的第1帧设补间动画。

04)新建按钮类型元件,起名叫下雨,绘制个70*25大小填充色为蓝色的矩形,在里面打黄色16磅的“下雨”两个字。

05)再建按钮类型元件,起名叫停止,绘制个70*25大小填充色为黄色的矩形,在里面打蓝色16磅的“停止”两个字。

06)再新建电影类型元件,起名叫动态按钮,在第一帧给个动作语言stop();让它停止在元件时间轴的第1帧上,然后把下雨按钮拖入,坐标为(0,0)。

07)再在动态按钮电影元件的第2帧上插入空白关键帧,也给个动作语言stop();让它如果跳到第2帧上时也停下来,再把停止按钮拖入,坐标为(0,0)。

08)点击选中动态按钮电影元件第1帧上的下雨按钮元件,给予动作语言如下:

on (release) {
_root.gotoAndPlay(2)
gotoAndPlay(2);
}

注:意思就是点击此按钮后,主场景时间轴上跳转到第2帧上播放,并且本身自己电影元件时间轴也跳转到第2帧上播放。

09)点击选中动态按钮电影元件第2帧上的停止按钮元件,给予动作语言如下:

on (release) {
_root.gotoAndPlay(1)
gotoAndPlay(1);
}

注:意思就是主场景中时间轴跳转到第1帧上,本身电影元件时间轴也跳转到第一帧上。动态按钮是个电影元件,一共两帧,它实现了下雨和停止两个按钮在同一位置上经过点击后的相互转换。

10)返回场景,把库中雨线电影元件拖入场景舞台第1帧,坐标为(0,-50),实例名起:yu,然后在第3帧上插入普通帧。

12)点击添加图层二,在图层二上的第2帧和第3帧上分别插入关键帧。

13)给图层二的第1帧加入如下语言:

stop();
i = 1;

注:意思就是,主场景上时间轴停止在第1帧上。声明一个变量i,初始值是1。

14)给图层二的第2帧加入如下语言:

i++;
duplicateMovieClip(yu,i,i);
setProperty(i, _x, random(570));   
setProperty(i, _y, random(100)); 
setProperty(i, _alpha, random(50)+50); 

注:以上语句不懂可以参照上面理论贴,所有命令语句已经全部学过,具体意思自己翻看本课和前课教材查找。这里要说明的是把YU元件复制后副本起名为变量i,也就是说当i的值为1时,它的名子就叫1,而我们知道实例名是不允许起数字开头的,而语言中却可以用变量做实例名的。这段话就是变量i不断加1,不断复制出新的元件,横向坐标从0~570之间取随机数,纵向坐标从0~100之间随机取值,透明度则是从50~99之间随机取值。

15)给图层二的第3帧加入如下语言:

gotoAndPlay(2);

注:如果不加这句的话,自动重播就跳回第1帧上停止了。。。加了这句话后,就是2~3两帧上循环播放,目前帧频是12,也就是1秒要运行到第2帧上6次,换句话说也就是1秒钟就执行第2帧上语句6次,也就是生成6个元件,而每个元件播放也是1秒后消失,由此可得出同一时刻在场景上会有6~12之间个元件。想要获得更多元件同时出现,等以后学逻辑或循环语句时再定做数量。

16)新建电影元件,随便导入一个动画图片素材,起名测试,然后返回场景,再添加图层三,把刚才导入的测试电影元件拖到图层三中第1帧上,放在舞台中间。

17)点击选定这个测试电影元件给于以下动作语言:

on (press) {
startDrag(this,false);
}
onClipEvent (mouseUp) {
stopDrag();
}

注:第一段是当在这个元件上单击鼠标时,本元件变成鼠标可拖动状态。第二段是当在场景上松开鼠标键时,被拖动状态的元件停止被鼠标控制。

测试效果:播放全屏播放   
http://upload./bbs/upfile/2008/1/3/2008010300272889my8.swf
AS第四课:电影元件常用属性和动作
本课练习了duplicateMovieClip、setProperty、startDrag、stopDrag、Math.random语句和以前学过的一些语句,并开始了解一个重要使用对象,就是变量!课例是我临时凑编的,难免有错漏,欢迎朋友们试做时发现问题来指正交流。做出来不是目的,目的是消化学会使用这些句子。

本课还有一些语句没练习到的,比如删除元件,关闭所有声音,引用加载动画等,关于加载动画的句子我们可以参照以前课例再来复习消化下:http://bbs./bbs_look.asp?Subject_ID=107&BBS_ID=20071116510638&bPage=1

条件判断语句“if、else”            

(一)IF条件判断语句:
      条件判断语句在flash中是实用性很强、使用也很频繁的语句,本课将学习条件判断语句“if、else”的应用。
     (IF逻辑判断命令,可以把IF直接读成“如果”来体会其意思。else可以看成其它,另外的意思)

语句格式如下:
 
if (条件1) { 
    命令语句集1 
} else if (条件2) { 
    命令语句集2
... 
} else { 
    命令语句集M


    注解:当(条件1)成立时执行{命令语句集1},如果(条件1)不成立,那么就转向下面另外如果语句里的(条件2),如果成立就执行{命令语句集2}......当所有IF条件都不成立的话,就转向其它else后面大括号内的{命令语句集N }。

    说明:如果{}内语句数为1句时,{}是可省的。
by 沧海[89my]  2008-02-17 00:09   FROM:121.234.*.* 
沧海[89my]
论坛等级:
积分/魅力:8481/22877
 1楼   

Re:AS第五课:IF条件判断语句
实例练习:做个语言控制元件规则和不规则运动

01)启动FLASH,新建电影元件,起名叫圆。然后在元件中插入一个大小为50*50的蓝色圆。

02)再新建电影元件,起名叫星,然后在元件中插入一个大小为50*50的红色星

03)返回场景,把圆和星元件都拖到第一层第1帧的舞台上,然后添加图层二。

04)在图层二第1帧上写下以下语句:

a=1;
b=11;
c=0;
d=0;
e=500;
f=350;

注解:这里a、b、c、d、e、f全是赋值变量,给每个变量不同的初始值,在运行过程中它们的数值会一直在变动。

05)单击选中圆元件,给于这个电影元件的动作语言如下:

onClipEvent (enterFrame) {
if(_root.a<11 and _root.b==11){
_root.a++;
this._x=_root.a*50;
}else if(_root.a==11 and _root.b>1){
_root.b——;
this._x=_root.b*50;
}else if(_root.a==11 and _root.b==1){
 _root.a=1;
 _root.b=11;
 }
}

注解:除了IF以外其它语句以前都学过,正好综合复习下,这次我不做详细注解,请一直在学的朋友,给出每句注解,并指明全段意思!
      
作业:如果我想调快慢,应该如何修改语句?

06)单击选中星元件,给于这个电影元件的动作语言如下:

onClipEvent (enterFrame) {
if (_root.c<500) {
_root.c=_root.c + random(10) + 5;
this._x = _root.c;
} else if (_root.c>=500 and _root.e>0) {
_root.e = _root.e -  random(10) - 5;
this._x = _root.e;
} else if (_root.c>=500 and _root.e<=0) {
_root.c = 0;
_root.e = 500;
}
if (_root.d<350) {
_root.d=_root.d + random(10) + 5;
this._y = _root.d;
} else if (_root.c>=350 and _root.f>0) {
_root.f = _root.f -  random(10) - 5;
this._y = _root.f;
} else if (_root.d>=350 and _root.f<=0) {
_root.d = 0;
_root.f = 350;
}
}

注解:这里还是不做详细注解,看明白上一个语句,再看这个就应该能摸到门道了,语言只要能看懂就不怕长,还是请学习的朋友,给我每句注解下,并指明全段意思!

作业:如何增加不规则运动时还会不规则旋转,一样要加语句来实现!


PS:本课实例是本人临时自编,难免有错漏,发现请指出,便于我修改。
IF条件判断语句
作业测试:

播放全屏播放   
http://upload./bbs/upfile/2008/2/17/2008021700070389my8.swf

以下三课都有IF语句,请学完本课后,再回头看下,加深理解和认识:(直接点击文字就能打开相应课贴)
一、循环语句({}内语句数为1句时{}可省):

循环语句有很多种,如:while,do,for,功能都差不多,建议使用for最为简明好用,以下主要练习for循环语句的用法:

for(变量初始值;循环条件;进入下一循环){
  条件成立时执行的动作}

例一(曾做过复习下):

01)打开FLASH,插入影片元件;画一线条,大小150*0,坐标(-75,0)

02)在20帧、40帧插入关键桢,在20帧上用黑箭头工具拉下线条,让线条任意弯曲,然后在1帧、20帧建立*形状*补间动画。

03)返回场景,在第一帧拖入线条元件,输入实例名:xt 

04)添加图层二,在图层二的第1帧上给如下动作:

for(i=1;i<90;i++){ 
duplicateMovieClip(xt, i, i);  
setProperty(i, _rotation, i*4); 
}

注解:for:循环语句,i=1:变量初始值,i<90:循环条件,i++:进入下一循环。综合起来理解就是,设置一个变量叫I,初始值放入1,当I小于90时,它自动+1,并且执行后面大括号内的语句。当I大于或等于90时,跳出循环,中止运行。

      duplicateMovieClip(xt, i, i);这个多次学过用过,再次解释下,就是复制实例名叫XT的电影元件,复制出来的新原件以变量I的数值命名,如I=2时,它复制出元件名就叫2,后面的I是深度,也是用变量值,这样可以保证不重复。

      setProperty(i, _rotation, i*4); 这个多次学过用过,还是解释下,就是设置以变量I命名的元件的属性,_rotation是旋转,后面是角度等于变量乘上4,也就是当I=2时,元件就旋转8度。

      从最后一句语句中我们看到每个元件角度值是相差4度,一周是360度,那么一共需要复制出89个元件加上本身一个元件一共是90个元件就正好满一周了!所以跳出循环条件:i<90就是这么计算得出来的!


注意事项:

1、循环语句要注意循环条件,这里是当变量I小于90时,I自动累加,当I>=90时不合条件了,就停止循环了,不在复制和旋转元件了。如果把条件改成I=1;1>0;i++ 这样这个句子就陷入死循环了,因为循环条件永远成立,就会不停的累加最终死机,循环语句使用时请一定要注意合理的停止条件。

2、如果两个元件的深度一样,只能显示一个元件出来,所以复制出来的元件深度一定要给不同的值。

3、还有元件实例名不允许以数字开头命名,但用语言复制出来的虚似元件命名时可以用数字(变量)命名。

4、用语言_rotation来旋转指定的元件时,旋转的中心点是元件编辑区中间+位置,并不是我们手动工设置元件大小时中间出现的那个小圆圈。

本课问题:测试动画后本例第1帧上的语句运行了几次?当复制出89个元件时可能需要多少时间?

动画测试:播放全屏播放   
http://upload./bbs/upfile/2008/3/7/2008030722191189my8.swf
第六课:循环语句的学习与练习
例二(随手自编主要练习语句):

01)打开FLASH,背景设为黑色。新建图形元件,绘制一个大小50*50,无线条色,填充色为黄色的圆。

02)新建电影元件,把图形元件圆拖入电影元件里,第1帧上把圆元件透明度设为0%,然后在25帧止插入关键帧,并在25帧上把圆元件透明度设为100%不透明,然后返回第1帧设为动画!

03)添加图层二,在图层二的第1帧上写下如下动作语言:

stop();
ys = random(4000);
setInterval(function () {
play();
}, ys);

04)返回场景,把电影元件拖入第1帧上,取个实例名为:yuan,并给此电影元件如下动作语言:

onClipEvent (load) {
this._x=random(500);
this._y=random(350);
this._alpha=random(80)+20;
}

05)添加图层二,在图层二的第1帧上,给帧如下动作语言:

for(i=1;i<20;i++){ 
duplicateMovieClip(yuan, i, i);  
}

注解:03段里的语句是个随机延时系统,曾在水珠滴落时我们用过也详解过,这个语句非常有用,可以灵活套用。

      04段时的语句都是学习的,这里不详解了,05段里是我们今天要学要练习的循环语句。

本课作业:请把此例中所有语句注解下,最后并综合说明下,几段语句将产生的什么样的效果

动画测试:播放全屏播放   
http://upload./bbs/upfile/2008/3/7/2008030722204089my8.swf

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多