Flash基本语句new_第1页
Flash基本语句new_第2页
Flash基本语句new_第3页
Flash基本语句new_第4页
Flash基本语句new_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Flash基本语句在flash5中,经常要用到的内容只有四五十条,其它的内容对一般的用户根本不用掌握。下面我将以一个专题的形式将这些语句列出来,并简单的做一些讲解,希望能够快速地带你进入flash5编程的精彩世界。为了便于学习与掌握,我又将这些命令与函数分成几类:动画控制类:所谓动画控制,就是对动画及相关元素的一些控制操作,比如,播放、停止,设置影片夹子的一些相关属性。它们常用的命令如下: play()及stop():这两个命令看上去跟flash4差不多,其实它最大的差别就是成为了对象的一个方法(method)!什么意思呢,就是它不再是一个简单的命令,而是其前面加上实例名称的话便可以直接对实例

2、进行操作了。比如: _root.stop(); _root.play(); 如果你在动画的任意位置写下上面的程序就可以停止或继续主场景动画的播放,而同样在flash4中的关于停止播放代码就得这样写: Begin Tell Target () Stop End Tell Target 你是不是发现flash5写代码是不是非常简单,或者你还不习惯如此来写代码,在后面的教程中我会不断地讲关于面向对象编程的一些特性。当然,这段代码是在其它的路径下面来写的,当然如果当前路径是根路径就不用那么复杂了,直接一个play()或者stop()语句便可。 gotoAndPlay()与gotoAndstop():g

3、oto语句也与flash4差不多,它完成的是跳转功能,它跟前面的play()与stop()同样是属于MC的一个方法,所它与前面两个方法遵循同样的点语法与路径特性。上一课思考的答案: _root.mc1.stop(); setProperty()与getProperty();设置属性与取得属性。我认为,这条语句保留下来的主要原因是为了同FLASH4兼容,其实按照FLASH5的面向对象的语法,他根本没有必要再存了。实际上他完成的就是关于对象的一些属性的设定。比如X轴位置,Y轴位置,X、Y方向上的缩放比例(_xscale,_yscale),显示特性等等。它的一般语法是: setProperty(对象

4、名,属性,值); 变量名 getProperty(对象名,属性); 与之相同的点语法的书写方式是:对象名.属性 虽然关于它的大部分内容都可用点语法代替,但是这种对自己操作的语句(对象串是空串)用它写就非常清楚,不会让别人产生错觉,请看下面的代码: setProperty (, _y, 10); 当然了它还有更为惊奇的写法: _y=10; 这一句完成把自己的Y值设为10的功能。这是一种比较特殊的写法,下面的三段代码的功能是完全相同的请看:代码一: setProperty (Image, _x, (275-_x)*2); setProperty (Image, _y, (200-_y)*2); 代

5、码二: image._x = (275-this._x)*2 image._y = (200-this._y)*2 代码三: now_x = getProperty (, _x); now_y = getProperty (, _y); setProperty (Image, _x, (275-now_x)*2); setProperty (Image, _y, (200-now_y)*2); 下面列出flash5中关于对象属性的详细列表: 属性 属性含义 _x (可设置) Movie Clip的中心点的X坐标(从左到右),返回的是以点为单位的数值,例如: setProperty (mc_na

6、me, _x, 50); 点语法 mc_name._x = 50; _y (可设置) Movie Clip的中心点的Y坐标(从上到下),返回的是以点为单位的数值,例如: test = getProperty ( mc_name, _y ); 或者 test = mc_name._y; _xscale (可设置) Movie Clip的X方向尺度的压缩比例,返回的值是以100%为单位的值,书写方式与上面的相同。 _yscale (可设置) Movie Clip的Y方向尺度的压缩比例,返回的值是以100%为单位的值,书写方式与上面的相同。 _width (可设置) Movie Clip的宽度,返回

7、的是以点为单位的数值,书写方式与上面的相同。 _height (可设置) Movie Clip的高度,返回的是以点为单位的数值,书写方式与上面的相同。 _rotation (可设置) Movie Clip的旋转角度,返回的是以度为单位的数值,书写方式与上面的相同。 _alpha (可设置) Movie Clip的透明度(0表示完全透明,100表示完全不透明),书写方式与上面的相同。 _visible (可设置) Movie Clip的可见度,取值为逻辑值true或false,书写方式与上面的相同。 _target Movie Clip的目标路径,返回tell target中的完整路径,书写方式

8、与上面的相同。 _name (可设置) Movie Clip的Instance的名字,书写方式与上面的相同。 _url 包含该Movie Clip的swf文件在Internet上的完整路径,书写方式与上面的相同。可以利用这个属性来加密及保护你的flash作品的知识产权! _currentframe Movie Clip的当前播放的帧,可直接使用! _totalframes Movie Clip的总帧数,可直接使用,用于loading制做。 _framesloaded Movie Clip中已经载入的帧数,可直接使用,用于loading制做 _droptarget 当使用Start Drag语句

9、拖动一个Movie Clip,_droptarget记录这个被拖动时的Movie Clip所经过区域中的Movie Clip的路径和它的实例(Instance)的名字。例如: startDrag (MC1, lockcenter) my_target = getProperty(MC1, _droptarget) 或者 my_target = MC1._droptarget 如果您的拖动MC1的鼠标滑过MC2所在的区域的话,则变量my_target的值为MC2 _xmouse 当前鼠标的X坐标,做鼠标跟随效果比flash4容易多了! _ymouse 当前鼠标的Y坐标,做鼠标跟随效果比flash

10、4容易多了! 在上面的表中的,前面的部分的特性是flash4中都有的,最后的两个属性是flash5新增的。请看下面这段代码: onClipEvent(mouseMove) place_x = _root._xmouse; place_y = _root._ymouse; 这段代码便是取得了鼠标的当前位置,如果你用一个文本框来显示place_x及place_y的值,可以看到如果鼠标移动这两个值也会即时改变。有了鼠标的位置编写鼠标跟随效果就相当容易了。如果你的鼠标对象不是_root的话,而是对象mc1的话,取到的坐标值就只是一个相对于mc1的坐标值。你要把它转化成的_root的坐标可以用local

11、ToGlobal()方法来自动转换,关于这方面的内容将在后面说明,这里不做深入的讨论。 在Flash中还有专门针对可编辑文本的两个属性变量,如下表: text_name.scroll (可设置) scroll 值就是文本框中最上边能够看到的那一行的行数。 scroll 初始值由你来设定。缺省值为1, 当用户上下卷动文本框时,Flash会随时更新该值。 scroll 值可以重新得到,也可以修改。 text_name.maxscroll maxscroll 值是指在文本框高度范围内可以卷动行数的最大值。 maxscroll值是由可编辑的文本框大小决定的,您可以得到,但不能修改。 tellTarge

12、t():告知对象。告知对象之后就可以对其进行一系列的设置属性、执行方法等一系列操作。这个这个曾经在FLASH4中起了巨大作用的命令虽然在flash5得到了延续,但是在FLASH5的面向对象的编程方式中它将不得不退居第二位,因为你可以使用更为方便直观的点语法来完成相应的操作。如果你是个怀旧的用户,这个指令还是有用的,只是他的书写方式有所改变了,他现在遵循大括号语法。也就是说的所有对对象的操作需要放在大括号之中。请看看下面这段代码: tellTarget (dongua) setProperty (dongua, _visible, true); play (); 这个代码表示让影片夹子实例don

13、gua显示出来并播放。当然,对一些比较特别的用代码它还是比较实用的: goeway = Bighead+888; tellTarget (goeway) setProperty (goeway, _alpha, 50); setProperty (goeway, _xscale, 80); setProperty (goeway, _yscale, 80); setProperty (goeway, _x, place_x); setProperty (goeway, _y, place_y); play (); 细心的用户可以看出这里对实例Bighead888进行了透明度、XY方向的缩放度,

14、及XY的坐标进行了一系列的设置操作,设定完成之后然后开始播放动画。如果你一条一条地使用面向对象的语法来写的话,语句的结构将会比较复杂,而这样可以让程序更加直观。前面两课的内容都是关于MC的一些命令,本课仍然继续讲一讲操作MC的常用命令与方法,首先列出上一课的一答案: goeway = Bighead+888; eval(goeway)._alpha = 50; eval(goeway)._xscale = 80; eval(goeway)._yscale = 80; eval(goeway)._x = place_x; eval(goeway)._x = place_y; eval(goewa

15、y).play(); 这里的eval表示求值的意思,这个内容已经在语法中提过了 duplicateMovieClip()和removeMovieClip():复制影片及删除影片。这两个操作个是关于影片夹子的重要操作。它的语法是: duplicateMovieClip(对象名,新的对象名,层数); 或者对象名.duplicateMovieClip(新的对象名,层数); 注意层数表示新对象所放的位置,在复制的时候这个数值是不能重复的,否则新的内容就会代替原来的内容,而且数值大的层会放在上面,小的会在下面。请看下面的代码。 for (i=1; i=10; i+) ball.duplicateMovi

16、eClip(ball_+i, i); eval(ball_+i)._x = begin_x+i*20; eval(ball_+i)._y = begin_y+random(40); eval(ball_+i).num = i; 上面的这段代码是完成复制十个ball,新对象的名字分别是:ball_1到ball_10,然后再分别放在从坐标(begin_x,begin_y)开始的随机位置,并设定小球的编号。为了节约系统的内存资源,如果你不再使用这些复制出来的对象时,建议你用removeMovieClip()把它们删除,充足的资源可以让你的动画更加流畅!它的书写方式是:removeMovieClip(

17、对象名) onClipEvent():影片夹子事件。这个是flash5中新增加的功能。它只有在MC的实例中才可以加入代码。下面列出一个简单的定时程序: onClipEvent (load) now = new Date(); begin_second = now.getSeconds(); onClipEvent (enterFrame) last_second = now.getSeconds()-begin_second; if (last_second=_root.delay_time) _root.create(); begin_second = now.getSeconds(); d

18、elete now; now = new Date(); 这里是用了时间对象来完成定时功能,以前这种程序一般用gettimer来实现,现在可以用新方法实现了。_root.delay_time表示用来定时的时间,比如它为10秒,定时时间一到就去执行根路径下的一个自定义函数create()。这段程序的定时间时间最大为60秒。关于date对象的用法我在后面会讲到,这里不做详细的说明了。 技巧:在flash编程代码输入有两种方式一种是普通模式,一种是专家模式。有很多人觉得专家模式下的字体怪怪的很难看清楚,有什么解决办法吗?答案是肯定的,你只需找到你系统的字体目录,一般为:c:windowsfonts,

19、将带红色图标的modern字体删除便可。条件控制篇 在Flash的脚本语言中“条件”和“循环”是最基本的脚本语言,有一定编程经验的朋友应该知道。如果你是个初学者,而且已经学习了前面几期关于数据类型,变量,表达式的教程,那么学习本期关于条件和循环的教程就非常容易了。 Flash5中的条件和循环语句与Flash4中的基本相同。条件语句在编程中可以说是一种选择结构,在脚本语言中通常是用if语句来实现选取。If语句主要是用来判定所给定的条件(条件表达式)是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。而通常所给出的条件是一个布尔表达式,通过对这个布尔表达式的判定,做出选择。我们现在所能接

20、触到的编程语言中,大部分语言都是由一些特定的英文单词所表示的,如果把它翻译成中文,对于一些简单的语句理解是非常有效的。If语句有三种形式: 1、 if(条件表达式) 语句; 书写格式例如:if(y3) check=true; w=2*y; 2、if(条件表达式) 语句; else 语句; 书写格式例如: site=“goeway”; if (site eq goeway) check = true; display = the website is !; else check = false; display = the website is not !

21、; 3、if(条件表达式1)语句1; else if(条件表达式2) 语句2; elseif(条件表达式3) 语句3; . . . . . . elseif(条件表达式 m) 语句m; 书写格式例如: if (number500) const = 0.15; else if (number300) const = 0.10; else if (number100) const = 0.075; else if (number50) const = 0.05; else const = 0; 说明 1、三种形式的if语句中在if后面都有“条件”,一般为逻辑表达式或关系表达式,例如: on (re

22、lease) if (a=b ) result = a=b; 脚本编译器对脚本的表达式进行判断,如果a=b为真,则变量result的值为一个字符串a=b,注意要用引号引起来的。 2、 第二、三种形式的if语句中,每个else后面都有一对大括号,而中间的statement是用分号隔开的。例如: if (Number(a) = Number(b) and Number(b) = Number(c) result = a=b=c; else if ( Number(b) = Number(c) result = b=c; else result = wrong; 分号在flash的脚本语言中是不可缺

23、少的部分,这个分号在if语句中的嵌套语句所要求的。如果没有此分号,则出现语法错误。但是值的注意的是,不要误认为上面是两个语句(if语句和else语句),他们属于同一个if语句。Else子句不能作为语句单独使用,他必须是if语句的一部分,与if配对使用。你可以在使用中发现,如果没有出现if语句,则else语句在脚本语言选项是灰色的,不可选状态。 3、 在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句,但是各个操作语句用分号隔开,还必须用花括号“”将几个语句括起来成为一个复合语句。如: if (Number(a)+Number(b)Number(c) s = 0.5*(Numb

24、er(a)+Number(b)+Number(c); d= Number(s)*(Number(s)-Number(a)*(Number(s)-Number(b); area = Math.sqrt(d); result = area=+ area; 注意:在外面不需要再加分号。因为内是一个完整的复合语句,不需另附加分号。 在本节的最后我们还要提一点就是if语句的嵌套。其实很简单,看了下面的例子你就会明白了。 if(条件表达式) if(条件表达式) 语句; 具体举例:假设一个函数y=-1(x0) if (x ge 0) if (x0) y = 1; else y = 0; else y = -

25、1; 这就是一个非常简单的if语句嵌套,如果你有兴趣的话,可以在flash中设立两个变量框,然后把上面的脚本加入到一个判定按钮上就可以了。亲自进行调试对脚本语言的理解是非常有帮助的,相信我没错的。*_*循环控制篇 前一节我们讲了flash脚本中条件语句重点是if语句的应用,下来讲解的是脚本语句中循环语句。Flash中的脚本通过以下语句来实现循环: 1、 goto语句和if语句配合实现帧与帧之间的跳转循环。 2、 用do-while语句。 3、 用while语句。 4、 用for语句。 下面我们就详细介绍一下这些语句的具体用法: 1、 goto语句和if语句配合实现帧与帧之间的跳转循环。 Got

26、o 语句实际上gotoAndPlay (frame)和gotoAndStop(frame),可单独使用,也可以结合if语句进行一个逻辑关系式判定,实现帧与帧之间的跳转循环,有当前场景帧之间的跳转,也有场景之间帧与帧的跳转。 If(a0) gotoAndPlay (2);通过判定,如果为真则跳转到第二帧,在通过第二帧上的脚本在进行判定来下一步如何进行。 2、 do-while语句 它的结构有点类似“直到型”的循环结构。其一般形式为: do 语句: while(条件表达式); 下面我们用一个实例来说明它的具体用法: i = 1; sum = 0; do sum = sum+i; i+; while

27、 (i=100); 上面这段小程序,相信你一看就会知道是求从1一直加到100的运算,答案当然是5050了。在使用中应当注意在循环体当中应有使循环体趋向于结束的语句。例如在本例中的结束语句就是i=100,如果无此句首先程序运行不了,并且脚本编译器会提示出错。 小知识:有很多初学者在刚开始学习脚本语言的时候对i+和+i的区别都不是特别清楚,我们在这里用一个小程序来说明一下: i = 1; a = i+; b = i; c = +i; d = i; 这段程序运行后的结果是a=1,b=2,c=3,d=3。i+在使用i之后,使i的值加1,后执行i+,再使用i,而+i呢则是在使用i之前,使i的值加1,先执

28、行i+1,再使用i。 3、 while语句 比起do-while语句来,while语句的结构则是典型的“当型”循环结构。其一般形式如下: while(条件表达式) 语句: 当条件为真值时执行while语句中的内嵌语句。如图所示: 上例中的求和脚本用while语句就可以写成: i = 1; sum = 0; while (i=100) sum = sum+i; i+; 从上面两个例子可以看到:对同一个问题可以用while 语句处理,也可以用dowhile语句处理。do-while结构可以转换成while结构,二者是等价关系。在一般情况下,用while语句和用do-while语句处理同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但在while后面的条件一开始就为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论