falshas2如何按按钮让按钮控制影片剪辑辑移至顶层?

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
FlashAS2学习笔记.doc 16页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:150 &&
FlashAS2学习笔记
你可能关注的文档:
··········
··········
Flash AS2学习笔记一、基础知识1.很多ActionScript程序都是对影片剪辑、按钮元件、文本框等对象进行操作,这需要在属性面板中为它们命名.良好的命名习惯,对我们编写程序会有很大的帮助.按照约定,影片剪辑元件的命名以_mc结尾,如my_mc,按钮元件则是以_btn结尾,文本框则是以_txt结尾.当然你完全可以不理采这些约定,随心所欲地为他们命名. 不以_mc结尾,再到动作面板中输入,mymc.结果什么也没有发生,后面的指令只有自己输了 在ActionScript中英语字母的大小写具有不同的意义的 ActionScript语句以分号作为每句的结束符号 在ActionScript中,应使用点(.)来访问对象的属性和方法.比如在舞台上有一个叫mymc_mc的影片剪辑元件,我们要访问它的属性和方法,就需要使用点,比如: mymc_mc._x 点的另一个作用是相当于路径,就相当于文件系统如:c:/windows/…中的&/&.比如我们一个动画,主时间轴或者说舞台,在ActionScript2.O中被写为_root,舞台上有一影片剪辑元件my_mc,如果要写my_mc的_x属性,就应该这样写:_root.my_mc._x又比如,做一个mc动画,在mc的第一帧写上stop();放在舞台上,然后在舞台上放一按钮来控制mc播放,那么在按钮上的程序就应该这样写:on(release){ _root.my_mc.play(); }6. ActionScript中注释用来解释和说明语句的作用.而注释本身是不被执行的.注释有两种,一种是单行注释,一种是多行注释.单行注释是以//开始到本行未尾. 另一种注释方式是多行注释,它是以/*开头,以*/结束的 在ActionScript中有很多种不同类型的数据,下面介绍一下几种主要的数据类型Number:数字数据类型 uint:正整数 int:整数 String:字符或者叫文本,String数据类型常常用引号括起来,如: Mystring=&abc& Boolean:布尔值,它只有两个值:true、false,分别是真和假的意思.也就是&是&和&不是&的意思Object:可以解为对象Number() int() uint() 对于不能被转换为数值的数据如英文字母,汉字等,int(),uint()则返回0,而Number()则返回NaN. 另外int和uint类型都是整数,如果被转换的数据为小数点的,那么它们会只返回整数部分= 赋值运算符,它不是数学中的等于,而是将=号右边的值赋给左边的变量.比较:== 等于. 用于比较两个字符串是否相等,如果相等则返回&true&,否则返回false. !=:不等于 +:连接运算: 如:a=&abc&; b=&def&; c=a+b;//c为:&abcdef&又如:a=&123&; b=456;c=a+b;//c为:&123456& %:求模运算符,即求余数+=、-=:分别是符号左边的数字加上或减去右边的数字,并将结果赋值给左边的变量. *=、/=:同理 }if…else语句:这句是如果怎样就执行if后面的语句,如果不是这样就执行else后面的语句. 格式: if(条件表达式){ 要执行的语句 } else { 要执行的语句 } if…else if:这个语句可以测试多个条件.这样理解这个语句,如果怎样就干点什么,又如果怎样,又干点什么,再如果怎样…. 还是这个例子: a =7; b=2; if(a&b){ trace(&a比b小&); } else if(&a==b&){ trace(&a和b一样大&); } else if(a〉b){trace(&a比b大&); } && 并且 丨丨 或者 并且是指两个条件都成立时为真,或者是指只要有一个条件成立时为真.random(101) 产生0-100之间任意一个整数例1:下面的代码是一个死循环,请不要测试. var a=0; while(a&10){ trace(a); } 看看这段代码,程序执行时a等于0,然后进入循环,条件表达式a〈10成立,执行trace(a),输出0,然后再检查条件表达式,因为没有计数语句,a没发生变化,条件表达式仍成立,于是又输出一个0,然后又反复,一直不停地输出0,无休无止,直到天荒地老. 例2:下面的代码是一个死循环,请不要测试.var a=0; while(a&10
正在加载中,请稍后...浏览:4 | 发布于: | 分类:
Flash AS教程:用动态遮罩实现液化效果
先看效果:将鼠标在图片上移动看看效果。
制作方法:
1. 新建flash文档,将帧频调到31.导入一张图片。
2. 新建一影片剪辑,将图片拖入。然后回到主场景,将该MC放到舞台上,居中对齐。打开属性面板实例名称设为:pic_mc.
3. 新建一影片剪辑,用椭园工具画一个无笔触任一填充的园,这个园应该覆盖图片的大部分。
回到主场景,新建一层,将库中的园元件拖上舞台。打开属性面板,实例名称为:mask_mc.将这一层拖到图片层的下面。
4. 新建一层,取名为action,输入下列代码:
this.createEmptyMovieClip("theScene", this.getNextHighestDepth()); var maxImages:Number = 20; dupeAndPlace = function (image:MovieClip):O**ect { var arrHolder:O**ect = new O**ect(); arrHolder.pics_arr = new Array(0); arrHolder.masks_arr = new Array(0); for (var i = 1; i&maxI i++) { var dnm = "image" + var mnm = "mask" + var imgO** = {_x:image._x, _y:image._y, _xscale:100+(i*1.7), _yscale:100+(i*1.7)}; var maskO** = {_xscale:Math.floor(100/i+3), _yscale:Math.floor(100/i+3), _x:this._xmouse, _y:this._ymouse}; var theDupedImage = image.duplicateMovieClip(dnm, theScene.getDepth()+ i, imgO**); var theDupedMask = mask_mc.duplicateMovieClip(mnm, theScene.getDepth()+(i*50), maskO**); theDupedImage.setMask(theDupedMask); arrHolder.pics_arr.push(theDupedImage); arrHolder.masks_arr.push(theDupedMask); } mask_mc._visible = return arrH }; makeWaves = function (masks_arr:Array) { for (var i = masks_arr. i&0; i--) { masks_arr[i]._x += (this._xmouse-masks_arr[i]._x)/maxImages*i; masks_arr[i]._y += (this._ymouse-masks_arr[i]._y)/maxImages*i; } }; this.liquefyImage = function(theImage:MovieClip){ var arrHolder:O**ect = dupeAndPlace(theImage); onEnterFrame = function(){ makeWaves(arrHolder.masks_arr); } } pic_mc.onRollOver = function(){ liquefyImage(pic_mc); }
OK,大功告成! 测试影片。
浏览:4 | 发布于: | 分类:
Flash翻译教程:打造模糊的照片透明遮罩效果
效果演示:(用鼠标移动观看效果)
译者前言:翻译这篇教程,第一个词就把我弄晕了,Cameron Dias 是什么呢?查了半天没查出结果。好象是一个歌星的名字?卡梅隆迪亚斯你听过吗?我不知道,不过把这个词理解为一个人名,那似乎还通顺,没办法,半灌水的E 文水平你就将就着看吧。下面的制作方法是没问题的哈。
进入这个flash教程,我们将创建一个大的遮罩效果并将它运用于一张卡梅隆迪亚斯照片,如下面的效果所示:
现在开始,导入一张卡梅隆迪亚斯照片到舞台,现在在这一层上新建一层,复制一张象这一层一样的卡梅隆迪亚斯照片。 选择最下面一层,(注:原文为:With the top layer selected,选择最上面一层,这似乎不对,所以我用了选择最下成一层。译者注)。选择卡梅隆迪亚斯照片并将它转换为MC并打开滤镜面板板,如下图所示设置。
现在在我们已经创建的另两层之上,新建一层。在这一层上画一个大的黑色的园并将它转换为MC,为它取一个实例名称,我给它取的名称是:"mouse_mask".
译者注:原教程中似乎漏掉了点什么,下面这一步为译者添加的步骤:
在这一层上,点右键点遮罩层,将这一层设为遮罩层。
现在我们只需要输入几行AS代码,复制并粘帖这些代码到主舞台的动作面板:
Mouse.hide(); addEventListener(Event.ENTER_FRAME, enterFrameHandler); function enterFrameHandler(event:Event):void { mouse_mask.x = mouseX; mouse_mask.y = mouseY; }
TA的最新馆藏[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢君,已阅读到文档的结尾了呢~~
as2.0 加载外部swf as2.0 flash as2.0 flash as2.0教程 as2.0教程 flash as2.0 手册 as2.0 geturl as2.0 loadmovie as2.0定义变量 as2.0 运算符
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
用AS2.0代码从库中加载影片剪辑
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口当前位置: >>
不会 AS 就等于不会 Flash,目前 AS 跟 JS 基本相同,学习过 JS 的同学可以更快速了解。 下边是从最基本的开始学习。 一、 基础入门讲解 认识“动作”面板 在 Flash 中,动作脚本的编写,都是在“动作”面板的编辑环境中进行,熟悉“动作”面板是十分必 要的。 按【F9】键调出“动作”面板,可以看到“动作”面板的编辑环境由左右两部分组成。左侧部分又分 为上下两个窗
口。。 左侧的上方是一个“动作”工具箱,单击前面的图标展开每一个条目,可以显示出对应条目下的动作 脚本 语句元素,双击选中的语句即可将其添加到编辑窗口。 下方是一个“脚本”导航器。里面列出了 FLA 文件中具有关联动作脚本的帧位置和对象;单击脚本导 航器中的某一项目,与该项目相关联的脚本则会出现在“脚本”窗口中,并且场景上的播放头也将移 到时 间轴上的对应位置上。双击脚本导航器中的某一项,则该脚本会被固定。 右侧部分是“脚本”编辑窗口,这是添加代码的区域。可以直接在“脚本”窗口中编辑动作、输入动 作参数或删除动作。也可以双击“动作”工具箱中的某一项或“脚本编辑”窗口上方的【添加脚本】 工具, 向“脚本”窗口添加动作。 在“脚本”编辑窗口的上面,有一排工具图标,在编辑脚本的时候,可以方便适时的使用它们的功能。 在使用“动作”面板的时候,可以随时点击“脚本”编辑窗口左侧的箭头按钮,以隐藏或展开左边的 窗口。将左面的窗口隐藏可以使“动作”面板更加简洁,方便脚本的编辑。 好了,动作面板就介绍这些,有个印象,不要求记住,工具栏上每个工具的作用和功能将在以后的课 程中边用边熟悉。 如何编写 flash 中的脚本 首先,要知道编写脚本,不需要用户对 AS 有完全的了解! 现在要考虑的问题是,如何在你的 flash 中添加编写脚本?简单的说,添加脚本可分为两种:一是把脚 本编写在时间轴上面的关键桢上面(注意,必须是关键桢上才可以添加脚本)。二是把脚本编写在对 象身上, 比如把脚本直接写在 MC(影片剪辑元件的实例)上、按钮上面。 此外,大家也需要简单理解一下 flash 是如何执行你编写的脚本的。 当你在时间周的关键桢上添加了脚本, 那么当 flash 运行的时候, 它会首先执行这个关键桢上的脚本,然后才会显示这个关键桢上的对象。 还有一些简单的知识,AS 中的对象都包括什么呢?它可以包含数据,也可以是舞台上的电影剪辑, 也可以是舞台上的按钮等。既然包含了那么多对象,那么每种对象肯定有各自的属性!比如电影剪辑 (movieclip)对象,它的:属性就有_height(高度),_rotation(旋转),等,这些属性不需要你去 特意的记忆,当使用的时候可以随时翻阅脚本字典。在以后的教程中会陆续给大家介绍一些基础脚本 的使用技巧。 二、需要学到的基本 AS 命令如下: stop()、 play()、 gotoandplay()、 gotoandstop()、 nextFrame()、 prevFrame();、 nextScene()、 prevScene();、 stopAllSounds(); 按钮的 AS 编写规则 播放 on (release) { _root.mc.play(); } 如果要在按钮身上写脚本的话, 必须使用 on(事件){//脚本程序}的格式来写! 上面的脚本作用就是: 当你在这个按钮上按一下鼠标(release 事件)的时候,就会执行下面的_root.mc.play();程序,它 的意思是让舞台上的 mc 开始播放! 6、同理:咱们选中舞台上的暂停按钮,在它上面输入: on (release) { _root.mc.stop() } 然后依次在快退上输入:on (release) { _root.mc.prevFrame(); //prevFrame 表示回到动画的上一桢 } 在快进的按钮上输入:on (release) { _root.mc.nextFrame(); } 在停止的按钮上输入:on (release) { _root.mc.gotoAndStop(1);//跳到 mc 影片的第一桢,并停止播放! } 二、按钮 AS 的编写 在 flash 中的交互功能一般是由按钮来完成的。 掌握按钮的编写规则也是一个闪客的基本技能。 OK 现在咱们来说说按钮脚本如何编写。上一讲中提过,AS 脚本编写可以写在时间轴的关键桢上,也以 写在对象本身上面。按钮也不例外,既可以写在时间轴上,也可以写在按钮本身上面。只不过这两种 编写规则都要遵循一定的规矩,这是后话。现在咱们来做一个例子,做一个按钮,这个按钮要实现的 功能就是打开一个指定的网页。(这个例子非常基础,用这个例子来讲解按钮 AS 两种编写方法。) 第一种:把脚本写在按钮本身。 一、在舞台上绘制一个矩形,选中矩形并按 F8,将这个矩形转换成按钮元件。 二、编写动作脚本: 选中按钮,按 F9,打开动作面板,在专家模式下输入以下脚本: on(release){ getURL(&/&,&_blank&) } 现在这个按钮就实现了一个打开网页的功能。通过例子你应该注意到,按钮的 AS 书写规则就是: on(事件){ //要执行的脚本程序,刚才的例子是用 getURL 来打开一个网页。你也可以使用脚本程序来 执行其他功能,例如跳转到某一个桢,或载入外部一个动画文件。 } 大可以看到,其实就一个 on 语句,这个 on 语句就是按钮的 AS 编写规则了。需要注意的是 on 里 面的事件,这个事件你可以理解为是鼠标或键盘的动作。刚才的例子我们使用的事件是 release(按 一下鼠标)我现在把常用的按钮事件列出来:事件名字说明 Press 事件发生于鼠标在按钮上方,并 按 下 鼠 标 Release 发 生 在 按 钮 上 方 按 下 鼠 标 , 接 着 松 开 鼠 标 时 。 也 就 是 “ 按 一 下 ” 鼠 标 Releaseoutside 发生于在按钮上方按下鼠标, 接着把光标移动到按钮之外, 然后松开鼠标 Rollover 当鼠标滑入按钮时 Rollout 当鼠标滑出按钮时 Dragover 发生于按着鼠标不放,光标滑入按钮 Dragout 发生于按着鼠标不放,光标滑出按钮 Keypress 发生于用户按下特定的键盘按键时,下面 来看看第二种按钮 AS 的编写方法。这种方法是把脚本程序写在时间轴上,而不是按钮本身上面。 一、选中按钮,在下面的属性面板中为按钮起一个名字,这里我起了一个 bt 二、选中时间轴的第一桢,按 F9 打开动作面板。输入如下脚本: bt.onrelease =function() { getURL(&http:///&, &_blank&); }; 这种编写 AS 的方法要遵循的规则就是下面的公式而已: 按钮实例的名字.事件名称=function(){ //要执行的脚本程序 } 大家只要记住这个公式就可以套用了。按钮的 AS 就先将到这了,这个可以算是基本技能了。希望大 家都能掌握。 三、影片剪辑的 AS 编写 影片剪辑在 flash 中可以说是使用最多的一种元件了,那么对于它的 AS 也是不少。在讲解之前我 还是要重新说一下电影剪辑 AS 的编写规则,和上次讲按钮一样,分为两种,一种是写在电影剪辑本 身上,一种是写在时间轴上面。 一、首先我们先来做个简单的小例子。 或许你不用 AS 就能做出一个小球的移动动画。但是如果让你用 AS 来实现小球的移动呢? 下面来看看如何用 AS 来实现吧。 在这个例子里,你首先会了解到如何在电影剪辑本身上编写 AS,以及编写规则。 1、新建立一个影片剪辑元件,里面你就随便画一个圆吧。之后把这个影片剪辑拖放到 舞台之中(也就是创建一个此影片剪辑的实例)。 2、现在开始编写脚本,选中这个 MC,按 F9 打开动作面板,按照图 01 显示选择 onClipEvent,之后在显示的事件中选择 enterFrame,然后在里面编写脚本如下: this._x+=5 这个脚本编写之后应该是: onClipEvent (enterFrame) {// enterFrame 的意思四以影片帧频不断地触发此动作 this._x += 5;//this 代表这个影片剪辑自身。_x 表示影片剪辑的 X 轴坐标。 } 呵呵,按下你的 ctrl+回车测试一下吧,一个简单的移动动画就搞定了。 从这个例子咱们不难看出,如果把 AS 写在影片剪辑本身上,那么它是有自己的书写格 式的。正确的书写格式就是: onClipEvent (事件){ //需要执行的脚本程序 } 这个可以看成是公式,你记住就行了,是写在影片剪辑身上的。括号里的“事件”其实是 个触发器,当事件发生时,执行该事件后面花括号中的语句。,具体有哪些事件,我把它们 都列出来。 -load 影片剪辑一旦被实例化并出现在时间轴中时,即启动此动作。 -unload 在从时间轴中删除影片剪辑之后,此动作在第一帧中启动。处理与 Unload 影 片剪辑事件关联的动作之前,不向受影响的帧附加任何动作。 -enterFrame 以影片帧频不断地触发此动作。 -mouseMove 每次移动鼠标时启动此动作。_xmouse 和 _ymouse 属性用于确定当前鼠 标位置。 -mouseDown 当按下鼠标左键时启动此动作。 -mouseUp 当释放鼠标左键时启动此动作。 -keyDown 当按下某个键时启动此动作。使用 Key.getCode 方法获取最近按下的键的 有关信息。 -keyUp 当释放某个键时启动此动作。使用 Key.getCode 方法获取最近按下的键的有关 信息。 -data 当在 loadVariables 或 loadMovie 动作中接收数据时启动此动作。当与 loadVariables 动作一起指定时,data 事件只发生一次,即加载最后一个变量时。当与 loadMovie 动作一起指定时,获取数据的每一部分时,data 事件都重复发生。 了解了事件之后,你可以自己试着修改一下脚本,如果让你们点一下鼠标,舞台上的圆 就移动一下,该怎么做呢? 关于把 AS 写在影片剪辑本身的例子先讲到这,下面来看看如果把 AS 写在时间轴上面 的话,应该怎么写。 首先你把刚才的脚本去掉。然后需要为这个影片剪辑实例起一个名字,比如起名为 mc 在选中时间轴的第一桢,打开动作面板,输入以下脚本:mc.onEnterFrame = function(){ this._x += 5;//你也可以把这句改为 mc._x+=5 自己想一下为什么。 };显而易见,在时间轴上的写法就应该套用以下公式: 实例名.事件名称=function(){ //脚本程序 } 需要注意的是,这种写法的事件名称不要忘了在前面加一个 on,比如,事件如果是 enterframe 的话,你就应该写成 onenterframe 下面简单说一下影片剪辑的属性。比如,影片剪辑有自己的 X、Y 轴坐标,有自己的透 明度(_alpha),这些都是它的属性。 那么如何使用这些属性呢?你可以使用“点”语法来对属性进行设置。 把上面的脚本修改一下。mc.onenterframe =function() { mc._x +=5; mc._alpha =random(100); }; 这里我加了一句 this._alpha= random(100),它是设置影片剪辑的透明度的,使用的语句 就是_alpha。后面的 random()函数是随机选取一个 100 以内的数字作为它的透明度。从这个 句子可以看出,“点”语法使用方法就是:实例名 .属性(mc._alpha),你甚至可以简单理解为 “点”就是“的 ”,那么 this._alpha 这句你就可以理解为:影片剪辑 mc 的透明度 上面的脚本 mc._alpha =random(100)也可以改为_root. mc._alpha = random(100) 那么,你就可以理解为:舞台上的影片剪辑 mc 的透明度是随机选择100内的值。四、动态文本框 一、flash 中的动态文本使用方法 在 flash 中,文本工具提供了三种文本类型。分别是:静态文本、动态文本和输 入文本。 下面讲解的内容属于动态文本的 AS 编写规则。要创建一个动态文本非常简单, 只需要选中文本工具,然后选择动态文本类型,然后在舞台上拖拽出所需要的 动态文本框就行了 。 二、如何为动态文本赋值 当在舞台上拖拽出动态文本框之后,可以直接在里面进行文本输入或粘贴外部文 本内 容。那么用 AS 如何来对动态文本框赋值呢?在这里为大家介绍两种方法进行 赋值! 1、使用动态文本的实例名字来赋值 操作步骤: (1)在舞台上创建一个动态文本框,并为这个动态文本实例起一个名字,例如 abc (2)选中时间轴的第一桢,打开动作面板,输入以下脚本: abc.text =&爱国者安全网& 按下 ctrl+回车就可进行测试了。从这个简单的例子可以知道,如果要用文本实 例名字来进行赋值的话,必须使用以下格式:动态文本实例的名字 .text=”需要 赋值的内容” 2、使用变量来赋值 (1)在舞台上创建一个动态文本框,并为这个动态文本实例起一个变量名 3800hk。 (2)选中时间轴的第一桢,打开动作面板,输入以下脚本: 3800hk= &欢迎大家来到爱国者安全网学习!& 不难看出,使用变量赋值更为简单实用!赋值格式为:变量名 =“赋值的内容” 以上两种赋值方法如果内容过多需要换行的时候,需要使用行用回车符( “\r” 即 ASCII 13)分隔! 三、如何载入外部 txt 文本里的内容 当内容过多的时候,使用上面的方法并不是太好,我们可以使用下面的方法,从 外部获取文本资料内容!而外部的资料内容就放在一个普通的 txt(记事本)文 件中。 具体操作步骤如下: 1、创建一个动态文本实例,并为这个动态文本实例起一个变量名 hk 2、选中时间轴的第一桢,打开动作面板,输入以下脚本: loadVariablesNum(&heiying.txt&,0);//载入外部名字叫 heiying.txt 的文本文件,加载 级别为 0 3、现在来准备外部的 heiying.txt 文本文件了。注意:要把这个文本文件和你刚 才做的 flash 文件放在一个文件夹里! 这个 txt 文件里的资料应该按照如下格式编写:flash 中动态文本变量的名字=这 里就是所需要的资料内容。对应上面的格式,外部 heiying.txt 中的内容为: hk=欢迎大家来到爱国者安全网学习! 。 最后一点,需要将这个文本文件保存为 UTF-8 格式。 4、完成以上步骤之后,就可以进行测试了。 下面介绍另外一种载入外部文本资料的方法,并介绍当文本内容过多时候,如 何使用滚 动条组件 (1)创建一个动态文本实例,并并为这个动态文本实例起一个实例名字 anquan (注:是实例名而不是变量名)起一个变量名为 hk (2)打开 flash 的组件面板(快捷键 ctrl+F7),找到 UIScrollBar(滚动条)组 件。按着它不动,然后拖放此组件至刚才的动态文本实例的右部边缘,如果成 功的话,组件会和文本框结合在一起! (3)选中舞台第一桢,编写如下脚本: tt =new LoadVars();//创建一个 LoadVars 对象的实例,这里的实例名字叫 tt tt.load(&heiying.txt&);//创建的 tt 实例需要载入的对象是 heiying.txt 文本文件。 tt.onLoad = function(s) { //开始载入外部文件,具体格式请按照此例格式。参数 s 是指示 load 操作是否成功完成。如果完成,那么 S 的值就为 true(真),反之 为 false(假) if(s){ anquan.text =tt. }//如果载入成功,则 anquan 文本框中的内容就等于 tt.实例中的 heiying 的内容! (hk 是我们外部文本文件中的变量。) };(4)至于外部的 heiying.txt 还可以使用刚才所创建的文本文件,为了测试滚动 条的效 五、影片剪辑的拖拽 在网上经常看到的 flash 影片中有的对象可以被鼠标进行拖动。例如有的类似七 巧板的拼图游戏,控制音量的滑杆等,所使用的就是 flash 中的拖拽动作。 一、拖拽命令详细介绍 1、首先介绍一下开始拖拽命令的详细用法,稍后在后面的例子中进行测试。 命令格式: StartDrag(要拖动的影片剪辑,[是否锁定到鼠标位置中央,左, 上,右,下])或写为要拖动的影片剪辑.StartDrag([是否锁定到鼠标位置中央,左,上, 右,下]) 命令讲解:在制作动画的过程中,上面两种书写方法可任选一种。其中[] 内的为可选参数,也就是可以写,也可以不写。至于左,上,右,下四个参数是 用来控制被拖对象的移动范围。 2、停止拖拽命令讲解 命令格式:被拖动的影片剪辑实例名 .stopDrag() 这样就可以停止对对象的拖拽动作。 二、实例讲解 下面来用一个简单的例子实验拖拽命令。 操作步骤: 1、新建一个 flash 文档,并在舞台上绘制一个圆形。选中圆形并按F8, 将此圆形转换为影片剪辑,起名为:圆。确定后将会在舞台上创建一个圆的实 例。 2、选中此实例,并按F9打开动作面板。输入如下脚本:on (press) { this.startDrag(true);//当鼠标按下(press)之后,这个实例(因为我们把脚本写 在实例本身了,所以这里用 this 代替影片剪辑实例的名字)可以被拖拽,使用 命令如上面的命令解释。对于参数的选择方面,这里只填写了锁定到鼠标位置 中央,如果想选不锁定到鼠标位置中央,可以把 true 改为 false。有兴趣的朋友 可以更改为 false 看看。 } on (release) { this.stopDrag();//同样道理,当鼠标释放(release)之后,将停止拖拽动作。 } 3、好了,现在让我们按 Ctrl+回车来测试一下吧,你将会看到舞台上的圆 被你的鼠标拖动的效果。 4、OK,通过这个例子我们可以简单的应用拖拽动作了。现在需要把这个 例子继续完成,还记得上面命令讲解中的左,上,右,下四个控制拖动范围的参 数吗?现在来制作具有约束拖动范围的效果。 5、现在在舞台上绘制一个200*100大小的矩形,注意只要边框不要填 充。 6、如果我们希望在拖动的时候这个圆只能在矩形内拖动的话,就要先设置 这个矩形的坐标,并记下矩形四个顶点的坐标(这点很重要!)。OK,比如,现 在此例子中的矩形的四个顶点分别如上图所示。那我们要取的四个参数就应该 是:左=50,上=100,右=250,下=200现在打开动作面板,修 改刚才的脚本如下:on (press) { this.startDrag(true, 50, 100, 250, 200);//这里我们就使用刚才确定好的4个参数。 4个点的参数就对拖动对象实现了一个矩形区域的移动约束!} on (release) { this.stopDrag(); } 7、好了,按 Ctrl+回车去测试吧! 好了,关于拖拽的讲解先到这里,下面我们来学习如何结合着拖拽动作来检 测对象之间的碰撞! 三、碰撞命令的讲解 命令格式:目标影片剪辑的实例 .hihkest(被拖拽的实例)这个是比较 简单的检测碰撞命令 目标影片剪辑的实例.hihkest(被拖拽实例的X轴坐标,被拖 拽实例的Y轴坐标,对象的矩形区域范围还是对象本身范围)这个是比较复 杂点的检测碰撞命令 命令解释:以上两个命令都是用来检测碰撞的,可以根据需要选择不同的 命令。重点解释一下对象的矩形区域范围和对象本身范围(上面的命令中,false 表示对象的矩形区域范围,true 表示对象本身的范围) 四、碰撞命令与拖拽命令的结合使用 (一)、下面通过简单的例子来学习碰撞命令(我们先来学习如何检测是否 碰到对象的矩形区域范围) 1、新建一个 flash 文档,在舞台上绘制一个圆形。选中圆形并按F8将它 转换为影片剪辑,起名:圆。这样就在舞台上创建了一个圆的实例。 2、选中此实例,为它起一个名字,此例起名为:yuan3、选择文字工具,并选择文字类型为“动 态文本 ”,在圆的实例下面拖绘出一个 动态文本框。并起一个变量名为:hk4、选中时间轴的第一桢,按F9打开动作面板,输入以下脚 本:_root.onEnterFrame = function() { //这个是在时间轴上的AS编写规则,解释为舞台上每桢都执行下面的脚本 (onEnterFrame)。 if(_root.yuan.hitTest(_root._xmouse, _root._ymouse, false)){ //根据上面命令的讲解,这个语句就是检测碰撞了。如果鼠标碰到舞台上 yuan 这个实例的矩形区域范围的话,就执行下面的脚本。 hk = &接触矩形区域范围&; //动态文本框就显示出“接触矩形区域范围” } else{ hk = &没有接触到矩形区域范围&; //如果鼠标没有碰到舞台上 yuan 这个实例的矩形区域范围的话,就显示 没有接触到矩形区域范围。} }; 现在可以按 Ctrl+回车去测试我们的成果 (二)、拖拽碰撞检测 现在再来一个例子讲解拖拽碰撞检测,想偷懒的话可以通过修改上面例子的 代码来学习。 1、现在稍微修改一下上面的例子,以便让我们学习拖拽碰撞检测,在上面 例子的舞台上绘制一个矩形,并把这个矩形转换成电影剪辑,起名为:矩形。 这样就在舞台上又创建了一个矩形的实例,现在为这个矩形实例起一个名为: juxing。 2、选中这个矩形实例,打开动作面板,输入可以拖拽这个实例的脚本。如下:on (press) { this.startDrag(true); } on (release) { this.stopDrag(); }这个脚本就是为了能拖动这个矩形实例。具体解释请回顾第一个拖动对象例 子的脚本说明。 3、现在来修改脚本,选中时间轴的第一桢,按F9打开动作面板,你将会 看到上个例子的碰撞检测脚本,把它修改为如下脚本:_root.onEnterFrame = function() { if(_root.yuan.hitTest(_root.juxing)) { hk = &碰到了&; } else{ hk = &没有碰到&; } }这个脚本和上次的碰撞检测脚本类似,只不过不需要再书写X轴和Y轴,也 不用写是否碰到矩形区域范围。简单吧 现在又到了测试阶段了,去观看你的成果 六、流程控制与循环语句 众所周知,flash 中动画依靠的是时间轴,在没有脚本的情况下,动画会依照时 间轴从第一帧不停的播放到最后一帧,然后始重复播放或者干脆停止。为了能更 好的控制动画,就必须使用脚本语句。而要想使动画具有逻辑判断的功能,就要 使用流程控制和循环控制语句了!下面通过几个简单的小例子来学习流程与循环 控制语句。 一、流程控制语句 所谓流程控制,无非就是我们想控制动画程序的执行顺序而已。我们可以让 flash 根据一些特定的条件,来决定要执行哪个程序。这样就好象给了程序一些 判断的机制。 if...else 控制语句 根据英文的意思,大家可以简单的理解上面的控制语句:如果...就...否 则...就...下面来看看这个流程控制语句的书写格式。 if(条件){ //条件成立的话,就执行这里的程序。 }else{ //条件不成立的话就执行这里的程序。 } 下面重点说一下 if 后面括号内的条件。这个条件可以是一个固定的值,也 可以是一个变量或表达式。如果条件成立的话,也就是条件为真(true),就会 执行 if 后面的程序,如果条件不成立,也就是条件为假(false),就会执行 else 里的程序。例如:有这么一个条件,A&B 将这个表达式代入 if 后面的括号 内,这个流程语句的意思就变成:如果 A&B 的话,就执行第一个大括号内的程序, 如果A不大于B,就将执行 else 后面大括号内的程序。 实例讲解: 1、新建一个 flash 文档,在舞台上绘制一个圆,选中圆并按F8转换成影 片剪辑,起名为:圆这样就在舞台上创建一个圆的实例。 2、选中舞台上的实例,按F9打开动作面板,输入如下脚本:onClipEvent (enterFrame) { if(this._x&400) {//流程条件控制语句,如果这个圆的实例的X轴坐标小于400,就执行后 面的程序。 this._x += 5;//让这个圆的坐标向右移动5个象素 } else{ this._x = 0;//控制语句,如果刚才的条件不成立。也就是圆实例的X坐标不小于400,就 让它的X坐标为0} } 上面的脚本是一个非常简单的流程控制语句,根据实例的坐标来进行判断。因为我们 使用了 enterFrame 事件,所以 flash 会不停的执行下面 if...else 语句。 3、测试影片。会看到圆不停的向右移动,当它的X坐标大于或等于400的时候,程 序会把它的X坐标重新更改为0。 二、循环控制语句 所谓的循环语句,其实也是用条件来控制的,只要条件成立,那么,程序就会不停的执 行下去,一直执行到条件不成立为止!常用的循环语句包括 while 循环、for 循环等。因 为篇幅有限,下面只重点讲解 for 循环的使用方法。 For 循环命令格式: for(初始变量;条件语句;迭加命令语句){ //用户自己编写的脚本。 } 首先强调一点,for 语句的括号内有三个项目,必须要用分号间隔开! 初始变量:循环语句也是用条件是否成立来控制的,通常我们用一个变量来控制程序执 行的次数。那么,这个初始变量就要先定义一个值。要注意的是,初始变量这个项目只执行 一次! 条件语句:这个项目就是我们的判断语句了。如果这个项目判断为真(true),也就是 条件成立了。它就直接跳进大括号{}内执行里面的程序!反之,如果条件为假(false), 它就直接跳出这个 for 语句了。 迭加命令语句:接上面的条件语句,如果条件语句成立,会执行{}内的程序,那么执 行完程序之后,就要回来执行迭加命令语句了。通常它就用来增加或减少刚开始时的初始变 量的值。 实例讲解: 1、新建一个 flash 文档,在舞台上绘制一个圆,选中圆并按F8转换成影片剪辑,起 名为:圆这样就在舞台上创建一个圆的实例。 2、为这个实例起名为:yuan 3、添加一个新的层,并选中新层的第一帧,按F9打开动作面板,输入如下脚本:for (i=1;i&5; i++){ duplicateMovieClip(&yuan&, &yuan&+i, i); _root[&yuan&+i]._x =random(400); _root[&yuan&+i]._y =random(300); _root[&yuan&+i]._alpha =random(100); } 如果大家实在觉得 for 语言很难读懂的话,你可以按照 for 语言执行的顺序把 i=1 代入程序 走一遍,可以帮助你理解程序。例如:当 i 等于1的时候,程序开始判断它是否小于5,那 么1肯定小于5了,条件为真,就执行{}内的复制程序,同时复制出来的新实例的名字就 变成了 yuan1,接着就是设置 yuan1 的坐标和透明度。之后,for 语句开始回去执行 i++, 此时,i 的值就变为2了。然后又开始循环判断执行下去......(你可以算一下,这个 for 循环 总共循环了几次呢?答案是4次。) 4、选中时间轴的第6帧,按F6插入一关键帧,打开动作面板输入以下脚本:gotoAndPlay(1); 让 flash 播放到第6帧的时候返回第1帧再来执行 for 循环语句。 5、测试效果吧,你会看到舞台上会循环4次复制出4个圆。 希望大家能通过这两个简单的例子掌握流程控制语句和循环控制语句七、绘图及颜色的 A AAAAS SSSS 的编写 在使用 flash 的过程中,难免会进行绘图的操作。除了用工具面板上的工具绘制图形之外, 我们也可以使用 ActionScript 来绘制图形。 如何绘制线段及命令解释 lineStyle(粗细,颜色,透明度)//设置绘制图形的线条粗细、颜色和透明度 Moveto(X坐标,Y坐标) //设置绘图线条的起点坐标 lineto(X坐标,Y坐标)//设置线条的结束坐标 现在就用刚才的三个命令在舞台上绘制出来一个300*100大小的矩形。 步骤: 1、新建立一个 flash 文档。 2、既然要绘制一个300*100大小的矩形,我们就要先确定矩形4个顶点的坐标, 然后就可以使用 lineto 命令进行编写了。 3、选中时间轴的第一桢,打开动作面板。现在已经确定了矩形的4个顶点,那么我 们就可以来编写脚本命令了,请输入以下脚本: _root.lineStyle(1, 0x0);//设置线条的粗细,颜色和透明度 _root.moveTo(50,50);//设置开始点的坐标。 _root.lineTo(350, 50); _root.lineTo(350, 150); _root.lineTo(50, 150); _root.lineTo(50, 50);//设置结束点坐标,整个矩形绘制完毕 相信大家通过上面的命令就很容易的用AS绘制出所需要的形状,充分发挥你的想象 力,可以通过 lineto 命令来设置多个点,从而创造出各种各样的形状。 熟悉了绘制线条的命令之后我们来用一个例子加深印象。 操作步骤: 1、新建立一个 flash 文档,在舞台上绘制一个圆,选中它并按F8转换成影片剪辑, 起名为:圆。 2、打开库面板,请将影片剪辑“圆”在舞台上再拖放一个实例,使舞台上存在两个圆的 实例。 3、现在为舞台上两个实例分别起名字为 a和 b4、选中时间轴第一桢,打开动作面板,输入以下脚本: function draw(){ //自己定义一个函数,这个函数起名为 draw(可自定),函数的功能是要实 现以 a 实例的坐标为起点,向 b 实例绘制线条。 _root.hkear();//清除舞台上绘制的线条。 _root.lineStyle(1, 0x);//设置线条的粗细,颜色和透明度。 _root.moveTo(a._x, a._y);//以 a 实例的坐标为起点开始绘制线条。 _root.lineTo(b._x, b._y);//以 b 实例的坐标为绘制线条的结束点。 } draw();//执行函数 draw,它将会在 a与 b 之间绘制出一条黑色的线条。 解释:为了减轻编写AS的工作量和程序的重复率,可以将某些功能定义为一个函数, 例如上面的 draw(),在使用的时候,直接执行定义过的函数,就可以完成函数的功能。 5、现在创建拖动效果,选中舞台上的 b 实例,打开动作面板,输入以下脚本: on (press) { //点击此实例,开始拖动 this.startDrag(true); } on (release) { //释放鼠标,停止拖动 this.stopDrag(); } onClipEvent(mouseMove) { //当鼠标移动,也就是这个 b 实例移动的时候,就执行里面的程 序。 _root.draw();//执行舞台上定义过的 draw()函数,开始在 a与 b 之间绘制线条。 updateAfterEvent();//强制更新画面,是整个动画更加流畅。 } 按 Ctrl+回车测试动画效果。 二、颜色命令讲解 setRGB()用来设置实例的颜色值,注意,这个值用16进制表示,例如 0x000000(黑色) getRBG()获取实例的颜色值 下面用一个相对简单的例子来说明颜色命令的使用以及如何填充颜色 要想使用颜色命令,我们必须先构建一个 Color 对象。方法就是自定义名字 = new Color(&要改变颜色的对象&),构建完 color 对象之后,我们就能使用 setRGB 或 getRGB 来设 置或获取颜色了。 步骤: 1、新建立一 flash 文档,背景大小为550*4002、选中时间轴第一桢,打开动作面板,我们现在要用AS 来帮助我们创建一个影片剪 辑的实例。所用到的命令为: createEmptyMovieClip(&实例名称&,深度)。创建一个影片剪辑实例,并起名为 hk。输入下面 脚本。_root.createEmptyMovieClip(&hk&,1); //使用创建命令在舞台上创建一个名字叫 hk 的影片剪辑实例,深度为 1 接下来我们要对这个 hk 实例进行绘制图形和填充图形! 现在我们用AS绘制一个300*100大小的矩形, 并且把这个 矩形填充为黑色,脚本如下: with (hk) { //使用 with 命令设置 hk 的各个属性 beginFill(0x); //开始填充这个 hk 实例,颜色为黑色,透明度为 85 lineStyle(1, 0x0); //设置这个实例的边框粗细为 1,颜色为灰色,透明度为 100 moveTo(50,50); //设置绘制线条的起点坐标 lineTo(350,50); lineTo(350,150); lineTo(50, 150); lineTo(50, 50); //结束绘制,将在舞台上绘制出一个 300*100 大小的矩形。 endFill(); //结束填充,与 beginFill()命令对应。 } OK,现在我们就已经创建了一个黑色的矩形。现在我们要继续实现变色的功能,也就 是当鼠标移动的时候,这个矩形会随机变换颜色!就需要用到我们的构建 Color 对象的命令 了。脚本如下: _root.onMouseMove = function() {//当鼠标移动的时候就执行下面的脚本命令。 hk_color =new Color(&hk&);//构建一个名字叫 hk_color 的 Color 对象。 yanse= &0x&+random(100)+random(100)+random(100);//用一个变量 yanse 来获取一个数值, 这个数值就是颜色值 hk_color.setRGB(yanse);//设置矩形的颜色。 }; 好了,这个例子是完全由脚本编写而成,所有脚本都在时间轴的第一桢 3、按 Ctrl+回车来测试你的影片吧~会看到矩形会随着鼠标的移动而不断进行颜色变化。 八、声音 A AAAAS SSSS 的编写与控制 一个好的 flash 作品,缺少了声音,就如同人不会讲话一样。而 flash 中对声音的支持也非常不错,除了可以使用时间轴放置声音文件之 外,我们还可以使用AS来更加准确的控制声音! 一、FLASH 中如何创建声音控件 如果想控制动画中的声音,我们可以使用 flash 中的 sound 对象, 通过 sound 命令创建一个新的 sound 对象。之后再用 attachSound 命 令连接到库里的声音,就可以用来控制动画中的声音了。 常用命令讲解: new Sound()此命令用来创建一个新的 sound 对象,有了 sound 对象我们才能用AS来控制声音。 attachSound(&库中的声音&)此命令可以使我们创建的声 音对象连接到库里的声音,以便进行控制。 start([从第几秒开始播放,循环次数])此命令可以是 声音开始播放,里面的两个参数是可选的。 stop()停止声音的播放。 setVolume(音量级别)此命令可以控制声音的音量高低, 音量级别只能是从0-100之间的数字。 现在我们也应该用AS先做一个简单的小例子了。 二、创建一个简单的声音播放动画,可以实现简单的开始与停止 播放声音。 操作步骤: 1、新建一个 flash 文档,按 Ctrl+R(文件\导入)导入一个声音 文件,声音文件可以是 MP3 或 WAV 格式的。声音文件导入之后,在 舞台上是看不见的,必须打开库才能看到我们导入的声音。 2、选中库中的声音文件,单击鼠标右键,在弹出的菜单中选择“链 接...”将会弹出一个链接的对话框,请勾选“为动作脚本导出”和“在第 一帧导出”选项,并输入一个标识符: mysound(名字可任意写), 单击确定。 3、回到主舞台,选中时间轴的第一桢,按F9打开动作面板。现 在我们要创建一个新的声音对象,并且连接到库里的声音。用来控制 声音。输入以下脚本: music =new Sound();//创建一个名字叫 music 的声音对象。 music.attachSound(&mysound&);//将这个声音对象与库里的标识符为 “mysound”的声音连接。 4、现在需要在舞台上放置两个按钮分别控制声音的播放与停止。 5、此时,舞台上将有播放和停止两个按钮,选中 Play 按钮,打开 动作面板,输入以下脚本:on (release) { music.start(); }//播放声音 选中 Stop 按钮,输入以下脚本: on (release) { music.stop(); }//停止播放声音 6、OK,一个简单的控制声音播放与停止的例子就完成了,快 按 Ctrl+回车来测试吧。 三、创建一个稍微复杂的例子,用来滑动按钮来控制声音的音量。 操作步骤: 1、新建一个 flash 文档,并按 Ctrl+R 导入一个声音文件。 2、参照上个例子,打开库,并把导入的声音文件设置一个链界 标识符。这里设置标识符为“ mysound”。 3、选中舞台时间轴第一桢,打开动作面板,创建一个新的声音 对象,连接库中声音,并播放这个声音。输入脚本如下:music =new Sound(); music.attachSound(&mysound&); music.start(1, 10);//播放声音,从第一秒开始播放,并循环10次 4、现在需要一个按钮做为滑动按钮,用来控制声音的音量!按 钮可以自己制作或使用公用库中的按钮,此例中我使用公用库中的按 钮。请在舞台适当位置放置一个按钮实例。 5、选中按钮,打开动作面板输入以下脚本:on (press) { this.startDrag(false, left, top, right, bottom);//开始拖动这个按钮,并且要 规定它的拖动范围,分别由四个变量控制,4个变量的初始值稍后设 置。 drag =//用一个变量来判断这个按钮是否被拖动了。如果它被拖 动了,变量值为 true(真) } on (release, releaseOutside) { this.stopDrag();//当松开按钮或在按钮外部松开,就停止拖动。并且下 面的 drag 变量为假,表示按钮没有被拖动。 drag = } 6、再次选中这个按钮,并按F8键将它转换成一个影片剪辑!起 名为:控制音量。也就是“控制音量”这个影片剪辑里面包含了刚才的 按钮。 7、选中舞台上这个控制音量影片剪辑的实例,打开动作面板, 现在要设置拖动范围的4个初始值和设置音量大小控制。请输入以下 脚本: onClipEvent(load) {//当这个 flash 动画一开始,就设置下面4个变量 的初始值。为了使按钮只能上下拖动,所以,拖动范围的左、右都固 定!只能让按钮在上下100象素以内拖动。top = _y; left= _x; right = _x; bottom= _y+100; } onClipEvent(enterFrame) { if(drag ==true) {//如果按钮被拖动了,就开始执行下面的设置音量的 算法,用来控制音量。 _root.music.setVolume(100-(_y-top));//设置音量大小,比较难理解的是 里面的算法:100-(_y-top),通过代入数字来帮助我们理解,如果_y 的值是100,我们的 top 值也是固定的为100。当拖动按钮往下 时,_y 值就会变大,比如变为130,那么_y-top 就等于30了,在 用 100-30 就等于70,这个70就是音量的级别了。伴随着按钮越 往下拖,音量级就会变的越小,那么也就实现音量的控制了。} } 通过以上两个例子,应该要掌握的就是创建 sound 对象播放、停止 声音,以及控制声音的方法。 九、时间日期的 A AAAAS SSSS 编写 一、日期时间的基本命令及解释 getFullYear()按照本地时间返回 4 位数字的年份数。 getMonth()按照本地时间返回月份数。 getDate()按照本地时间返回某天是当月的第几天。 getHours()按照本地时间返回小时值。 getMinutes()按照本地时间返回分钟值。 getSeconds()按照本地时间返回秒数。 以上命令并不是很难理解,都是获取本地机器上日期及时间。但是要使用这些命令,我 们必须先用 Date 对象的构造函数创建一个 Date 对象的实例。然后,就可以用创建的这个 实例来进行操作!命令格式如下: 实例名=new Date() 二、显示日期及做一个走动的表 下面我们通过一个例子来介绍 Date 对象的各种命令使用方法。 步骤: 1、新建立一 flash 文档,将层1改名为:文字显示,并在舞台下方绘制出一个动态文 本框,起一个变量名:mytime2、新建立一个层,并把这个新建立的层起名为:表盘,然后使用绘 图工具在舞台上绘制出 一个不带分针、时针和秒针的表盘。 3、现在来绘制指针。按 Ctrl+F8 新建立一个影片剪辑,起名为:指针,选择绘图工具, 在里面垂直绘制出一条细线做为指针。注意:将线条的下方与影片剪辑的中心点对齐 4、返回主舞台,新建一个层,改名为:指针―秒将刚才制作的指针拖放在表盘的中 间,注意要把指针的中心点与表盘的中心点对齐。之后,为这个指针实例起一个名字为:sec 我们先做秒针。 5、同理,再新建一个层,并起名字为:指针―分将库里的“指针”元件再拖放出来,并改 变这个实例的长度和颜色,让它做为分针。实例名起为:min6、现在按照上面的方法来制作时针, 新建一个层,改名为:指针-时将指针元件拖放 在舞台中,与表盘中心对齐,并把这个实例起名为:hour7、呵呵,现在咱们开始编写程序了,为 了观察方便,我们再新建一个层,改名为AS,选 中AS层的第一桢,打开动作面板,开始编写脚本,首先,我们要让舞台上的动态文本框显 示日期及时间。 _root.onEnterFrame = function() {//需要让影片不停执行下面脚本。 mydate= new Date();//首先构建一个名字叫 mydate 的日期对象,因为以后我们就要用 mydate 这个实例来控制了。 myear = mydate.getFullYear();//获取本地机器上的年份,并放在 myear 变量中。 mmon =mydate.getMonth()+1;//获取本地机器上的月份,并放在 mmon 变量中。因为获取的 值是 0 代表一月,1 代表二月,依此类推,所以要加上 1 才正确 mdate = mydate.getDate();//获取本地机器上的本月的第几天,并放在 mdate 变量中。 mou = mydate.getHours();//获取本地机器上的小时数值,放在 mou 变量中,这个命令能获取 0--23 之间的数值。 mm =mydate.getMinutes();//获取本地机器上的分钟数值,并放在 mm 变量中。 ms =mydate.getSeconds();//获取本地机器上的秒数值,放在 ms 变量中。 mytime =myear+&年&+mmon+&月&+mdate+&日 &+mou+&:&+mm+&:&+//让舞台上变量名为 mytime 的动态文本框显示日期及时间。 } 现在可以测试一下了,可以发现舞台上文本框会显示出日期及时间,那么还有表里面的秒、 分、时针怎么跟时间对应起来呢?现在我们加入如下一些脚本 sec._rotation =6*//利用 flash 中对象旋转命令来实现指针的走动。 _rotation 旋转一周是 360 度,所以,秒针每走一下,就等于走了 6 度,所以用一个算法来获取每秒的度数 6*ms min._rotation = 6*//同理,让分针也是根据获取的分钟数值乘以 6 来进行度的旋转。 hour._rotation =mou*30+mm/60*30;//小时的走动,算法稍微复杂一点,因为时针走一圈是 12 个大格。具体上面的算法有兴趣的朋友可以自己研究一下。 日期及时间的 AS 编写并不复杂,这里我只简单的讲解了获取日期及时间。,当然了,我们 还可以进行日期及时间的修改设置,使用的命令及方法与获取类似,希望大家能通过这个简 单的例子掌握基本的日期及时间 AS 的编写。在后面的课程中我们就要提高性的讲解,同时 也希望大家继续关注。 十、点语法以及路径 点(.)语法、路径 通过本节的学习要掌握(.);能正确地输入影片剪辑的实例名称;理解相对路径和绝对路径 的概念,理解分层结构中的包含关系和并列关系, 点(.)语法 动作脚本中,点(.)通常用于指定对象或影片剪辑相关联的属性或方法,或者标识影片剪 辑、变量、数对象的目标路径。点语法表达式是以对象或影片剪辑的名称开始,后跟一个点, 最后以要指定的元素结束。 例如:(1)张三的身高。这句话用 AS 语言表示为:张三.身高 (2)安徽合肥中澳学院。这句话用 AS 语言表示为:安徽.合肥.中澳学院 元件命名 在上面的例子中,“张三”是人名,“身高”是他的属性,那么,在 FLASH 中怎么样 用 AS 语言来表示一个影片剪辑的高度呢? 类似地我们要给影片剪辑取一个名称,如果在主场景中有放入一个影片剪辑,那么这个影片 剪辑相对于场景是场景的一个实例,在场景中选中影片剪辑就可以在属性面板中键入实例 名。 好了,小球有了实例名称了,我们现在来表示它的高度(_height)。 注意:在命名实例名时,最好意义明确,可以用英文、汉语拼音和中文,并且不同类型的元 件加不同的前后缀,在实际编程中我们往往不太注意这些,规范的命名不仅容易阅读,还能 为其增加一些特定的后缀触发代码提示。 命名影片剪辑实例;加 _mc 后缀,例如 my_mc。 命名按钮时,应使用 _btn 后缀。例如 my_btn.。 命名文本时,应使用 _txt 后缀。例如 my_txt。 例如上例中小球的实例名如果加上后缀_mc 就会出现影片剪辑属性的代码提示 安徽.合肥.中澳学院 小球._height 张三.身高 路径 “路径”指“道路” ,“路线”其含义是:如何到达目的地,这个目的地叫做路径的目标, 在 flash 中引用了目标路径的概念,目标路径:是 SWF 文件中影片剪辑实例名称,变量和 对象的分层结构地址。 .目标:指的是将要被动作脚本控制的对象,有影片剪辑实例,变量等。 .路径:指如何到达目标,即我们如何从控制点到达被控制点。 .分层结构:flash 文件是有一个个影片或影片剪辑组成的,它们有各自的时间轴、变量、 数组等,它们的位置关系有两种,一是父子关系;二是并列关系。 所谓父子关系指的是包含与被包含的关系,例如:把影片剪辑 mc1 拖放到影片剪辑 mc 中,则称 mc1 是 mc 的子级,反过来 mc 称作 mc1 的父级。它们的层次结构用点语法表 示,圆点前面的对象包含着圆点后面的对象,如 _root.mc.mc1 即_root 包含了 mc,而 mc 包含了 mc1。 所谓并列关系指的是对等的关系,它们之间没有包含与被包含的关系,如:_root.mc_a 和 _root.mc_b。 在 flash 应用中,可以从 1 个时间轴向另一个时间轴发送信息,发送信息的时间轴叫控制 时间轴,接收信息的时间轴叫目标时间轴。也就是说控制时间轴发出的命令可以控制目标 时间轴的动作。要实现这种控制功能必须编写目标路径。目标路径分为绝对路径和相对路 径。 绝对路径 绝对目标路径指的是从根时间轴开始,一直延续到列表中目标时间轴中的实例为止。绝对目 标路径简单易懂但重用性差。 在编写绝对目标路径时,首先写上_root,一方面表示这个路径是一个绝对路径,另一方面 表示这个路径的最顶层时间轴是本场景中的根时间轴_root。 相对路径 相对目标路径取决于控制时间轴和目标时间轴之间的关系,相对目标路径就是站在控制点去 看被控制点。若向父级方向看也就是向根时间轴方向看,在相对路径中,使用关键字 this 指 示当前时间轴:使用别名 _parent 指示当前时间轴的父级时间轴,可以重复使用_parent,每 使用一次就会在同一层的影片剪辑的层次中上升一级,有多少元件就写多少 _parent,若向 下看只需要用点运算符,中间有多少元件就写多少实例名。 例如:this._parent this._parent._parent this.mc.mc1 编写目标路径的方法 在 Flash8 中可以用多种方法编与目标路径,直接手工输路径,或者使用“插入目标路径” 对话框。我们只需要为影片剪辑和变量等正确的输入名称,使用动作脚本面板的“插入目 标路径”按钮,找到你要控制的对象即可。 其具体步骤如下: (1)选择想为其分配动作的影片剪辑,帧或按钮实例,它将变为控制时间轴。 (2)在“动作”工具箱(面板左侧)中选择需要目标路径的动作或方法。 (3)单击动作脚本中想插入目标路径的参数框或位置。 (4)单击动作脚本编辑窗格上面的“插入目标路径”按钮,打开“插入目标路径”对话框。 (5)选择“绝对”或“相关”目标路径模式。 (6)在“插入目标路径”显示列表中选择一个影片剪辑,单击“确定”。 观察目标路径 由上图在以看出影片剪辑之间的分层结构:mc 中包含了两个子级 mcA、mcB;而 mcA 中 又包含了三个子级 mc1、mc2、mc3。 按 F9 打开动作面板,点击“插入目标路径”按钮后,在弹出的“插入目标路径”对话框 中我们可以清楚地看到分层结构。 当我们选中一个目标后,再选择“相对”或“绝对”按钮后,在“插入目标路径”对话框的 最上面一栏里就会显示出路径,例如:控制点为 mcA,控制目标为 mc1,路径为: 相对路径:this.mc1 绝对路径:_root.mc.mcA.mc1 十一、深入了解时间控制 通过本课的学习,掌握在按钮上添加代码的方法;理解 on 命令的函数功能; 掌握时间轴控制命令的功能,语法格式,掌握在帧上添加命令基本操作,能使 用帧命令和按钮命令控制一些简单的时间轴动画。 on 事件处理函数 事件是指软件或硬件发生的事情,它需 Macromedia Flash 的应用程序对事件有 一定的响应。硬件发生的事件如按下鼠标、单击鼠标、拖动鼠标等。软件发生 的事件如影片剪辑刚刚被载入场景、影片剪辑被卸载等。为了使应用程序对事 件做出反应,必须使用事件处理函数。 下面我们就来学习 on 事件外理函数。双击代码选择区中的“全属函数” |“影 片剪辑控制” |“on”命令后,弹出选项 On 事件动作使用较多,它一般直接作用于按钮,也可以作用于影片剪辑实例。 其调用格式如下: 理解 on 事件中的参数意义 在创建一个动态文本,在属性面板里输入变量名:txt.再创建一个按钮实例,选中按 钮, 打开动作脚本面板输入代码: on (press) { txt = &发生了鼠标按下(press)事件&; } on (release) { txt = &发生了鼠标释放(release)事件&; } on (releaseOutside) { txt = &发生了鼠标外部释放&+newline+&(releaseOutside)事件&; } on (rollOver) { txt = &发生了鼠标滑过(rollOver)事件&; } on (rollOut) { txt = &发生了鼠标滑离(rollOutr)事件&; } on (dragOver) { txt = &发生了鼠标拖过(dragOver)事件&; } on (dragOut) { txt = &发生了鼠标拖离(dragOut)事件&; } on (keyPress&&Left&&) { txt = &发生了按左键事件&+newline+&(keyPress\&&Left&\&)事件&; 时间轴控制命令 时间轴控制语句是较基础的 ActionScript 控制语句。时间轴控制语句是掌握 ActionScript 语句的基础,它们的主要任务是控制帧的停止、播放、跳转等。只 要带有时间轴的动画效果,就可以用时间轴控制语句来进行控制。时间轴一共 有两种,一种是场景中的时间轴,我们叫做主时间轴。另一种是元件中的时 间轴,例如影片剪辑、图形元件中的时间轴。所以,时间轴控制语句也可以分 成两类,一类是控制主时间轴,一类控制影片剪辑时间轴。打开动作脚本箱,点 击“全局函数 ”“时间轴控制”我们会看到时间轴控 9 条时间轴控制命令。在 这一课中我们将分别介绍它们的功能及使用方法。 play( )与 stop () play 和 stop 在 Flash 中用于控制动画的播放和停止,play 命令使播放头从它当 前位置向前移动。 stop 停止当前正在播放的 SWF 文件。此动作最通常的用法 是用按钮控制影片剪辑。是 Flash 中控制动画最基本的命令。 使用方法如下:路径.play()路径.stop() 帧命令 我们知道一个有动画的影片剪辑,场景时间轴只有一帧这个影片剪辑也能正常 播放,但如果是图形元件中做的动画,在场景中必须有与元件时轴同样的帧频 数才能正常播放。 这就说明了影片剪辑有独立的时间轴。而图形元件的时间轴必须依赖父级时间 轴,所以,场影中的影片剪辑实例,必须控制影片剪辑的时间轴。要在场景 中控制影片剪辑的时间轴,就要给影片剪辑输入实例名称。 下面我们做一个实例,通过该例,我们来掌握在帧上添加命令的方法,初步了解 控制当前时间、根时间轴控制元件时间。元件时间轴控元件时间轴的方法。 我们播放动画时,可以看到每个动画都是动的,现在我们来进行控制。 (1)打开素材,分别选中场景中的小花,和树叶,在属性面板里输入实例名 “花”“叶”。 (2)进入名称为“叶引导线”的影片剪辑元件的编辑区中,点击“AS 层”的 第 1 帧打开动作面板。输入命令: stop();//停时当前时间轴 在第 50 帧插入空白关键帧,选中此帧,打开动作面板,输入命令: this._parent.play();//父级时间轴(根时间轴)播放 在主场景“AS 层”的第 1 帧,添加命令: this.花.play()//当时间轴中的影片剪辑实例&花&播放 在主场景“AS 层”的第 170 帧添加命令: stop();//停止当前时间轴 this.叶.play();//当前时间轴中的实例&叶&播放 测试影片看看效果。 总结:通过本课学习,要掌握自身时间轴的控制,子级时间轴的控制,父级时 间轴的控制,对初学的朋友,最简单的方法是:正解输入实例名后,通过“插 入目标对话框,找到你的控制目标,这时软件会自动给你编写好路径,你只需在 路径后面加上一个小点“.”然后加上 stop()或 play()命令。帧命令是播放头来 触发的,播放头经过你的命令帧,这帧上的命令就被执行了。 按钮的交互控制 我们利用此动画练习在不同的控制点上来控制影片。现在我们任意选两个控 制点,如果选择 mcA 中放一个停按钮,mc1 中放一个播放按钮,用这两个按 钮来控制所有影片剪辑。 停止按钮上的代码: on (press) { _root.mc.stop(); _root.mc.mcA.stop(); _root.mc.mcB.stop(); _root.mc.mcA.mc1.stop(); _root.mc.mcA.mc2.stop(); _root.mc.mcA.mc3.stop(); } 播放按钮上的代码: on (press) { _root.mc.play(); _root.mc.mcA.play(); _root.mc.mcB.play(); _root.mc.mcA.mc1.play(); _root.mc.mcA.mc2.play(); _root.mc.mcA.mc3.play(); } 说明:上例中使用的都是“绝对”路径,如果你对路径的概念掌较好,可以选 择性的 使用“相对”路径或“绝对”路径。 本课涉及的语法及规范.圆括号 “() ”:圆括号在动作脚本中作用非常大,在定义函数时在将参 数全部放到圆括号内;在调用函数时要将传递给函数的所有参数包含在小括号 里;在设置表达式优先级或增强动作语名的易读性时都需要使用到圆括号。例如: 本课学的 on 函数用来定义鼠标或键盘响应事件,其中选择的鼠标事件就是参 数。有时也可以没有参数例如:函数 play()。 .分号 “;”:动作脚本中的分号是用来作为语句结束的标记,在 Flash AS 脚 本中,任何一条语句都是以“;”号结束的。虽然有时省略了“;”号,Flash 也 可以成功的编译这个脚本,但这是不规范的。 .花括号“{ }”,动作脚本中的一组语句可以被一对花括号“{??}”包 括起来,成为一个语名组。在由多个动作状态组成的语句组中,使用花括号可 以有效地来区分各命令的层级和从属关系。 十二、无条件转移 在上一课中我们学习了时间轴控制命令中的 play()和 stop()命令,这一课中我们 学习时间轴控制命令中的另外 6 个命令。通过本节的学习掌握跳转命令的功能; 能进行一些简单的交互控制。 正常情况下时间轴从第一帧开始按顺序向下播放,使用跳转命令可以打破原来 的播放顺序,从而实现各种特效,跳转命令有两个它们是 gotoAndPlay 和 gotoAndStop,应用格式为:scene:String[可选] ―一个字符串,指定播放头要转到其中的场景的名称。 frame:Object ―表示播放头转到的帧编号的数字,或者表示播放头转到的帧标 签的字符串。 gotoAndPlay|(“scene”,frame)的函数意义是:将播放头转到场景中指定的帧并 从该帧开始播放。如果未指定场景,则播放头将转到当前场景中的指定帧。gotoAnd Play 在动作面板的“代码选择区”中选择“全局函数” |“时间轴控制” | “gotoAndStop” 命令后,在此可以选择此命令的参数。 该参数共有两个提示,其含义如下所述。 “gotoAndPlay(帧);”:按照该提示,可以在括号内输入需要跳转的帧数,例如, 当播放到当前帧的时候,跳转到第 20 帧,则应当在当前帧上添加代码 gotoAndPlay(20);。 “gotoAndPlay(“场景”,帧)”:按照该指示可以在括号内指定播放某一场景 中的某一帧。将播放头 转到场景中指定的帧并停止播放。例如:当播放到当前帧的时候自动跳转至 scene_2(场景 2)的第 20 帧,则在当前帧上添加代码: gotoAndPlay(&场景_2&, 25); 如果未指定场景,播放头将转到当前场景中的帧。 注意: .在进行跳转时应该尽力避开场景和帧编号,而使用帧标签,帧标签可以穿越所 有场景,可以减少错误的发生 ,还可以使 flash 运行速度增快。还便于修改。 .只能在根时间轴上跳转时使用 scene 参数,不能在影片剪辑或文档中的其它 对象的时间轴内使用该参数。gotoAndPlay([scene:String], frame:Object) : Void gotoAndStop([scene:String], frame:Object) : Void gotoAndPlay(&场景&,帧); gotoAndStop(&场景&,帧) 2 .如果从元件时间轴跳转元件时间轴时,应该先加路径再写跳转命令。例如 从元件时间轴转到根时间轴的标签为“ f”的帧上停止,代码该这样写: _root.gotoAndStop(&f&); gotoAndStop 在动作面板的代码选择区中选择“全局函数” |“时间轴控制” |“gotoAndStop” 命令后,在代码显示区中的参数意义与 gotoAndPlay 的一样,这里就不再重述。 例如:当播放到当前帧时要自动跳转到“ f2”帧处停止,则在当前帧上添加代码: gotoAndStop(&f2&);//跳转到帧标签为“ f2”的该帧处停止。 又如:gotoAndStop(&场景 2&, 1);//播放头从当前帧跳转到“场景 2”的第 1 帧, 并在该帧处停止。 场景面板的操作 场景:执行“窗口” |“设计面板” |“场景”菜单命令,就会调出“场景面板”, 在该面板中可以进行场景的添加、复制、删除、重命名、排序等操作。 为了方便组织文档可以使用场景,例如,可以使用单独的场景用于简介、出现 的消息以及片头片字幕。 当文档含有多个场景时,播放时是按场景的先后顺序依次进行播放的,而且所有 场景中的帧是按场景顺序连续编号的,例如 :如果文档包含两个场景,场景 1中 有 10 帧,场景 2 中有 20 帧,则场景 2 中的帧的编 号为 11 到 30。 nextFrame 和 nextScene 这两个命令通常与 on 命令结合,并作用于按钮上。单击鼠标后,播放下一帧 ( nextFrame)或下一个场景( nextScene)。p revFrame 和 prevScene 这两下命令通常用来控制播放上一帧或上一个场景。其功能刚好与 nextFrame 和 nextScene 相反 。 场景跳转 制作播放面板的操作步骤如下: (1)点击“窗口” |“其它面板” |“场景”,打开的场景面板,点击添加场景 按钮,新建 3 个场景,这样共是 4 个场景。在场景 4 的第 1 帧输入帧标签 “s4_f1”,分别在场景 2~场景 4 中创建一个按钮。 (3)进入“场景 1”,在“图层 1”的第 1 帧制作一个播放界面 (4)给按钮添加代码 按钮 1 上的代码: on (release) { gotoAndStop(&场景 2&, 1); } 按钮 2 上的代码: on (press) { gotoAndStop(3); } 按钮 3 上的代码: on (press) { gotoAndStop(&s4_f1&); } 分别进入每个场景中,选种按钮添加代码:on (press) { gotoAndPlay(&场景 1&, 1); } 在“场景 1”的第 1 帧添加代码。 stop();测试影片观看效果。 在“场景 1”中的三个按钮,分别用了参数的三种形式来练习,建议在使用时 最好用帧标签来跳转。 制作简易相册 本例的目的是为了练习跳转命令及上一课中学习过 on 命令。 效果说明:点击滚动按钮可以看到对应的图片,点击左边的按钮可以进行前一张 后一张的切换,并在动1.新建一个 flash 文档。设置文档属性为:宽 465、高 280,背景色白色。 2.导入素材,把本例的素材全部导入到库。 3.新建一个名为“图片”的影片剪辑元件,在此元件“图层 1”新插入 9 个空 白关键帧,分别在这 10 个关空白关键帧中依次分别放入库中的“ tp1”~“tp10” 这 10 张图片,并居中对齐。 4.新建一个名为“按钮 1”的按钮元件,在按钮元件“图层 1”的弹起帧中, 从库时提进“ tp1”位图,在属性面板里设置宽 70、高 45,居中对齐。在“点击 帧”插入帧。插入“图层 2”在“图层 2”的弹起帧给制一个宽 70、高 45 的 无笔触的矩形,填充色为浅灰色,并把透明度调为 30%,在“鼠标经过”帧插 入空白关键帧。 5. 用同样的方法制作另外 9 个按钮,大家可以用复制元件,替换图片的方法来 制作。 6.新建一个名为 “按钮组 ”的影片剪辑元件,在其编辑区中,从库里提进 “按 钮 1”~“按钮 10”,并用对齐面板排列成一横排,再把前 6 张复制后接在后 面。 7.( 1)新建一个名为 “滚动图片 ”的影片剪辑元件,在 “图层 1”绘制一个宽 465、高 50 的无笔触的矩形框,填充色为淡紫色,并把透明度设为 30%。居中 对齐。 (2)插入 “图层 2”在此图层的第 1 帧上,从库里提进 “按钮组 ”影片剪辑元 件,并与下面的矩形条左对齐。在第 100 帧插入关键帧,并在些帧上把图片 按钮组向左移动,(移动多少要参照第 1 帧上的位置,确保循环播放时没有跳跃 的视觉感。)如下图所示。然后创建动画。 第 1 帧上的图片位置第 100 帧上的图片位置8. 新建一个名为“蒙板”的影片剪辑元件,在其编辑区里绘制一个宽 287、高 208 的无边框矩形,居中对齐。填充色为四个色(这四个色自定)的状填充并把每 个色的透明度设为 45%左右。在第 10 帧插入关键帧,在此帧上把各色的透明 度调为 0%。创建形状动画。并在最后一帧输入停止命令。 stop();59.场景组装 (1)把场景“图层 1”更名为“背景”,从库里提进“背景”图形元件居中对 齐。 (2)插入“图层 2”更名为“滚动菜单”。从库里提进“滚动菜单”影片剪辑 元件,相对于场景,左对齐、底对齐。并在属性面板里输入实例名“菜单”。 (3)插入“图层 3”更名为“图片”,从库时提进“图片”影片剪辑元件,放 在对应背的左上角的矩形框里。并在属性面板里输入实例名“图片”。 (4)插入“图层 3”更名为“蒙板”,从库时提进“蒙板”影片剪辑元件,放 在“图片”上,并在属性面板里输入实例名“蒙板”。 (7)插入“图层 7”,更名为“ AS” 场景组装完毕 添加代码 (1)选中 AS 层的第 1 帧,打字开动作面板,在动作面板中输入代码: _root.mc.stop(); onEnterFrame =function () { _root.a.text = _root.mc._ }; (2)进入“按钮组”影片剪辑元件的编辑区,用选择工具选中“按钮 1”(最 左边的一个),打开动作面板,在动作面板中输入代码: on (rollOver) { _root.菜单.stop(); } on (release, rollOut) { _root.菜单.play(); } on (press) { _root.图片.gotoAndStop(1); _root.蒙板.play(); }(3)把“按钮 1”上的语句复制粘贴到其它按钮上,然后把语名中的第 8行 _root.mc.gotoAndStop(1); 改为“图片”元件中放图片的对应放图片的那一帧,例如按钮 5 上的语句应改 为: on (rollOver) { _root.菜单.stop(); } on (release, rollOut) { _root.菜单.play(); } on (press) { _root.图片.gotoAndStop(5) _root.蒙板.play(); } _root.蒙板.play(); } 实例制作完毕,大家测试景片,观看效果。 十三、变量 通过本节的学习,理解变量的概念;掌握变量命名的规则、给变量赋值的方法;会用动态 文本显示变量、输入文本输入变量,会使用调试命令 trace。了解 Flash 中的数据类型. 认识变量 在日常生活中人们处理信息的时候,必需首先把信息保存起来,比如你将一群羊分成两部分, 你必须把它们赶到不同的领地,这些领地暂时保存着羊群,即便你是凭空想象,你想象时的信 息也要暂时保存在脑细胞中,也就说要处理任何信息首先就得保存信息,动作脚本也不例外, 动作脚本使用变量保存信息,所以说变量是保存数据的一种容器,容器本身始终不变,但内容 可以更改,这个比喻是非常形象的,现在有一个容器名称为 a,放进一些盐它就是盐罐子,放进 一些醋它就是醋罐子了。在 flash 中,通过动作脚本可以建立很多“容器”来存放 flash 中 的信息,比如影片剪辑的透明度、坐标等,也可以存放人的名字、年龄等。为了区别不同的 “容器”必须为每个“容器”取一个自己的名字,即变量名。怎么样来定义“容器”呢? 下面来定义一个容器,它的名字是 myAge,用来存放年龄。定义如下: varmyA var 是用来定义变量的关键字。 MyAge 便是变量名。 那么这个变量怎么存放年龄呢?在定义变此时可以给定一个值,即变量值,如下所示: varmyAge=66;其中“ =”号代表赋值运算符,把 66 这个值赋给变量 myAge。 注意:首次定义变量时,为该变量指定一个已知值,这就是所谓的初始化变量。 变量的命名的规则 用不同的符号对不同的事物进行标记,用作标记的符号就是标识符,标识符是用于表示变量、 属性、对象、函数或方法的名称。 命名变量名要遵守如下的规则: (1)不能是 as 关键字,所谓关键字也称保留字,指 as 预先定义好的标识符。 (2)不能以数字开头,第一个字符必须是字母或下划线“ _”和美元符“ $”。 (4)中间不能有空格。 (5)变量名中不能使用标点符号, (6)不应将动作脚本语言中的任何元素用作变量名称。 正确的示例: a,m,ba,assw,a_aa,my_mc,$abc,$_ss,$_mc 等等 my_txt 保存文本的变量 错误的示例: 2_m //不能用数字开头 my-a //不能用减号分割 a.ss //不能使用标点符号 a b //不能有空格 如: var 年龄=20; 其中年龄就是变量名。 注意:在命名变量时规范的方法是不同类型的变量加不同的前缀或者后缀 ,在实际编程中 我们往往不太注意这些,规范的命名变量使其他人更容易阅读,命名变量时通过为其增加 一些特殊的后缀触发代码提示。下表中为支持代码提示所需后缀trace()函数 在编写脚作脚本中,我们会大量用到 trace()命令。trace()实际算是一个调试命令,它的输出 都会在“输出面板”显示出来。而真正发布作品的时候 trace()却不再输出。是最方便的调 试命令,trace()命令非常简单: 应用格式: trace(expression:Object) 参数:expression 要显示的变量或者表达式。 下面我们使用 trace 函数输出变量值 在主场景第 1 帧打开动作面板,输入下列代码: vara=5 varb=&欢迎大家来到爱国者安全网学习 AS& varc=(3+5) trace(a); trace(b) trace(c)变量赋值 使用变量保存信息就叫做给变量赋值。在 Flash 中给变量赋值常用的方法有: vara=5;//把常量 5 赋值给变量 a。 trace(a);//输出面板输出 5 set(“a”,5);//用 set()方法为变量赋值为 5。 trace(a);//5 this[&a&+1]=0 trace(a1);//0 确定变量的范围和声明变量 变量的范围是指变量在其中已知并且引用区域。在动作脚本中有 3 种类型的变量范围: .本地变量在声明它们的函数体(由大括号界定)内可用。 .时间轴变量可用于该时间轴上的任何动作脚本。 .全局变量和函数对于文档中的每个时间轴和范围可见。 本地变量 要声明本地变量,请在函数体内部使用 var 语句。本地变量的使用范围只限于它的代码块, 它会在该代码块结束时到期。没有在代码块中声明的本地变量会在它的动作脚本结束时到 期。本地变量也可防止出现名称冲突,在定义本地变量时可以为其指定数据类型,这有助于 防止将类型错误的数据赋给现有变量trace(expression:Object) vara=5 varb=&欢迎大家来到爱国者安全网学习 AS& varc=(3+5) trace(a); trace(b) trace(c)时间轴变量 时间轴变量可用于该时间轴上的任何动作脚本。要声明时间轴变量,可以使用 setvariable 动作或赋值“ =”动算符,应在该时间轴中的所有帧上都初始化这些变量,应确保首先初始 化变量,然后尝试在动作脚本中访问它。声明时间轴变量也可以使用 var 例如:如果将代码“ varx=10;”放置在第 20 帧上,则附加到第 20 帧之前的任何帧上的动 作脚本都无法访问变量 全局变量 全局变量和函数对于文档中的每一时间轴和范围而言都是可见的。若要创建具有全局范围 的变量,请在变量名称前使用_global 标识符,并且不使用 var 语法。 例如 在根时间轴第一帧上定义两个变量,然后将 trace()放在不同地点去返回它们的值,以观察它 们的区别Var a=5 _global.b=3 在程序中使用变量1.必须在动作脚本首先给变量赋值,然后才能在表达式中使用它。在 flash 中可以使用变 量动态的设置其它动作中的不同参数。 例如: on (release) { k = random(30)+50; setProperty(&mc&,_xscale, k); setProperty(&mc&,_yscale, k); }2.如果使用未赋初值过的变量该变量的值将是 NaN 或 undefined。并且动件脚本可能产生 意外的结 果。 例如: vark=x*x; trace(k);//NaN varx=6; 在下面的示例中申明变量的语句必顺排在第一行,这样 k 就可以替换为一个值; varx = 6; vark = x*x; trace(k);//36用动态文本显示变量值 (1)启动 flash,新建一个文档,文档属性默认。 (2)单击文本工具,打开“属性”面板,在其文档类型选项中选择“动态文本” (3)在舞台中单击建立一个动态文本,在“属性”面板把变量名设为 myAge, 选择图层 1 的第 1 帧,打开动作面板,输入以下代码: varmyAge=20 测式影片,在动态文本中可以看到刚才定义的变量值。 用输入文本输入变量值 (1)在场景“图层 1”的第一帧,在舞台上建立一个动态文本和输入文本,在属性面板里 为动态文本输入实例名“输入”,为输入文本输入实例名“输出”。 (2)制作一个“提交”按钮和“清空”按钮。然后为按钮添加代码 提交按钮上的代码: on (press) { 输出 =输入; } 清空按钮上的代码:on (press) { var 输入 = &&; var 输出 = &&; } (3)插入“图层 2”,在图层 2 的第 1 帧,添加代码: 输入=&& 测试影片,观看效果。 圆柱表面积计算公式 在输入文本中输入半径和高的值后,点击计算按钮,对应的面积值就会显示在动态文本中. 1)在舞台上建立两个输入文本,分别在属性面板里输入变量名“ r”和“ h”。再建立一个 输入文本,在属性面板里输入变量名“ s”,自己安排好文本的位置。 (2)制作一个“计算”按钮和“清空”按钮,拖入舞台,放到适当位置。 (3)添加 AS 代码: 计算按钮上的代码为: on (release) { s = 2*Math.PI*(r*r)+2*Math.PI*r*h; } 清空按钮上的代码为:on (press) { r = &&; h = &&; s = &&; } 代码解释:在表达式 2*Math.PI*(r*r)+2*Math.PI*r*h 中,Math.PI 代表圆周率,在计算精确 度不高时,通常是取它的近似值为 3.14。而 2*Math.PI*(r*r)表示两底面的面积和; 2*Math.PI*r*h 表示侧面积。 数据类型 我们思考一下计算机程序所作的一些事情,财务管理程序能够打印帐单,字处理程序能够输 入和编辑文本,视频处理程序能够让我们观看影片和玩各种游戏,等等数不胜数,但所有程序 都有一个共同特点;他们都需要处理数据.flash 中根据数据的处理方法的不同,对数据进行了
分类,他们是;数值类型,字符串类型,布尔类型,对象类型,影片剪辑类型,未定义和空值。 计算机在处理这些数据的时候,必需使用某种方法存储这些数据,变量就是服务于该目的,所 以我们常说&变量是保存信息的容器&,为了区别分不同类型的变量,就有了数据类型,变量有 多种数据类型,数据类型描述变量或动作脚本元素可以包含的信息种类,下面讲解常见的数据 类型.函数的值是由变量决定的,那么什么来决定变量呢?那是数据,下面我们就说说 AS 中使用到的数据类型。AS 中的数据有两大类,一类称之为原始类型(也叫初始类),另 一类叫做参考类型(也叫引用类)。 原始类型数据分为字符串、数值和逻辑型三种,它们都有常量值,能够为其所代表的元素 赋一个实际值。 参考类型数据包括影片剪辑和对象两种,它们有一个可变的值,包含了对元素实际值的引用。 此外还有两个特殊类型的数据:空值和未定义值。 字符串型(string):字符串是诸如文字、字母、数字和标点符号等字符的序列。在动作脚 本语句中输入字符串的方式是将其放在单引号或双引号之间,字符串被当作字符,而不是变 量进行处理。例如“学习 Flash”“ abcd”的等。还可以使用” +”等运算符对字符串进行操 作。 例如 trace(&欢迎大家&); trace('来爱国者安全网学习'); trace(&欢迎大家&+'来爱国者安全网学习'); 数值型( (N umber) ):您可以使用加(+)、减(-)、乘(*)、除(/)、求模(%)、递增(++)和递减(--) 等算术运算符来处理数字,也可使用内置的 Math 和 Number 类的方法来处理数字。下面 的示例使用 sqrt()(平方根)返回数值 100 的平方根 10。 trace(Math.sqrt(100));//返回数值 100 的平方根 10 布尔型(boolean):只有“真( true) ”“假(false) ”两种值的数据。布尔值是 true 或 false 中的一个,动作脚本也会在适当时将值 true 和 false 转换为 1和 0。布尔值经常与动作脚 本中的比较运算符一起使用。 例如trace(3&1); trace(-8&0); 对象(Object)::对象是属性的集合。每个属性都有名称和值,属性的值可以是任何的 Flash 数据类型,甚至可以是对象数据类型。这样就可以使对象相互包含(即将其嵌套)。若要指 定对象及其属性,可以使用点(.)运算符。 影片剪辑 ( MovieClip):影片剪辑是 Flash 应用程序中可以播放动画的元件,是唯一引用 图形元素的数据类型。MovieClip 数据类型允许您使用 MovieClip 类的方法控制影片剪辑 元件,可以使用点(.)运算符调用这些方法。影片剪辑是 Flash 中最活跃的元素之一。 例如:trace(_root.mc._x); trace(_root.mc._height); Undefined:表示未定义的数据类型,如下情况返回 undefined 值:(1)对象属性不存在, (2)声明了变量但从未赋值。 例如没有定义变量 a 的情况下。 trace(a);// Undefined。 trace(a+3);//NaN 测试数据类型 我们用如下函数可以判断数据类型:typeof(); typeof()通常与 trace()结合使用 本例使用 trace 语句与 typeof 函数共同测试数据类型。为大家学习 Flash 数据类型实现更 加深入的认识。 注意:我们的所有测试必须在 fla 源文件编辑状态下单击“控制” |“测试影片”才能在输 出面板看到效果,测试 swf 文件是不会得到任何输出的。 typeof 用法 typeof(表达式) 表达式:一个字符串、影片剪辑、按钮、对象或函数。 说明:运算符;放在单个参数前的一元运算符。 typeof 运算符让 Flash 解释器计算表达式; 其结果为一个字符串,指示该表达式是字符串、影片剪辑、对象、函数、数字,布尔值。 示例:测试数据类型 (1)在舞台中放一个影片剪辑元件,并输入实例名“ my_mc”。 (2)在舞台中放一个按钮。并输入实例名“ my_btn”。 (3)在舞台中绘制一个动态文本,输入变量名“ txt1”在动态文本中任意输入文字。 (4)在舞台中绘制一动态文本,输入文本实例名“ txt2”。在动态文本中任意输入文字。 在第一帧中输入脚本: trace(&测试结果&); trace(typeof (txt1)); trace(typeof (my_mc)); trace(typeof (my_btn)); trace(typeof (txt2)); trace(typeof (Math.PI)); trace(typeof (3&1)); trace(typeof (System)); trace(typeof (stop)); 显示对各类表达式使用 typeof 运算符的结果如下表所示。 十四、运算符(一) 运算符表达式 运算符是指定如何组合、比较或修改表达式值的字符。运算符对其执行运算的元素称为操作 数。例如,在语句“ foo+3”中, “+”运算符会将数值文本的值添加到变量 foo 的值中;foo 和 3 就是操作数。 用运算符连接变量或者常量得到的式子叫做“表达式”。各种表达式用运算符连接在一 起还叫做表达式,例如:圆柱体表面积计算公式 2*Math.PI*r*r+2Math.PI*r*h。 其中“ 2”和“ Math.Pi”(表示圆周率π )都是常数,而“ r”和“ h”分别表示半径和高, 是变量。 “+”和“ *”分别表示加法运算和乘法运算,是运算符,这个式子就是表达式。 运算符的优先顺序 在同一语句中使用两个或多个运算符时,各运算符会遵循一定的优先顺序进行运算,例如加 (+),减(-)的优先顺序最低, (*),除(/)的优先顺序较高,而括号具有最高的优先顺序,当一 个表达式中只包含有相同优先级的运算符时,动作脚本将按照从左到右的顺序依次进行计 算;而当表达式中包含有较高优先级的运算符时,动作脚本将按照从左到右的顺序,先计算 优先级高的运算符,然后再计算优先级较低的运算符;当表达式中包含括号时,则先对括号 中的内容进行计算,然后按照优先级顺序依次进行计算。 算术运算符 可以执行加法、减法、乘法、除法运算,也可以执行其他算术运算。Flash 中的算术运算符 及简单的用法如下图加法运算实例 在场景中绘制三个动态文本,变量名分别为 c1、c2、c3。再绘制两个输入文本,变量名为 a、b。放入四个按钮,分别选中按钮输入 AS: (1)数字类型相加 on (press) { c1 = 3+2; } (2)字符串相加 on (press) { c2 = &学习&+&flash&; } (3)输入文本中的变量相加 on (press) { c3 = a+b; } (4)字符串类型转化为数字类型 on (release) { c3 = Number(a)+Number(b); } 说明:在执行加法运算时,如果,操作数是数字类型,那么执行的加法就是数字相加,如果 操作数是字符串类型,那么这里的加法就是合并字符串;如果,操作数中有字符串,有数字, 那么程序就会把其中的数字当成字符串;动态文本和输入文本中的变量值,程序都把它看成 字符串类型,要执行数字相加时,要转化成数字类型。例如上例中的c3 = Number(a)+Number(b); 区别 x++和++x 场景第 1 帧上 x=1 y=1 (1) x++ on (release) { a_txt= ++x; } (2) ++x on (release) { b_txt = y++; } 帧循环 i++ 场景第 1 帧上: i=1; stop(); 场景第 2 帧上: i++; a_txt= 场景第 3 帧上: gotoAndPlay(2); 播放按钮上:on (release) { this.play(); } 停止按钮上:on (release) { this.stop(); } 说明:在使用增量运算符时,运算符放在表达式前面与放在后面所执行的操作是不同的,当 用++i 格式时将先执行加 1 操作,然后在使用表达式的值,当使用 i++格式时则首先使用表 达式的值然后执行加 1 操作。 取模运算 场景第 1 帧上: vari=0; 按钮上:on (release) { a_txt= i++; b_txt=Number(a_txt)%2; } 说明::取余运算:首先进行除法运算然后取余数,叫取余运算 ,取}

我要回帖

更多关于 flash as2.0按钮代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信