已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Flash的ActionScript,第一节 揭开ActionScript的神秘面纱,ActionScript是Flash内置的编程语言,用它为动画编程,可以实现各种动画特效、对影片的良好控制、强大的人机交互以及与网络服务器的交互功能。 ActionScript是一门吸收了C+、Java以及JavaScript等编程语言部分特点的新的语言。ActionScrip使用英文单词和元件提供了一种为Flash影片设置指令的方法。它的存在确保了Flash影片较之普通的按照线性模式播放的动画具备强大得多的人机交互能力。 可以为时间轴中的关键帧、按钮和影片剪辑添加ActionScript。选中这些关键帧、按钮和影片剪辑,打开其动作面板,你就可以看到它们都添加了哪些脚本。,Actionscript的基本语法规则,使用Actionscript编写脚本时,如果使用正常模式的动作面板,通过菜单和列表选择选项,可以创建简单的动作。要想用Actionscript编写功能强大的脚本,你就必须深入了解和学习Flash MX的Actionscript脚本语言。 像其它脚本语言一样,Actionscript也有变量、函数、对象、操作符、保留关键字等语言元素,有它自己的语法规则。Actionscript允许用户创建自己的对象和函数。Actionscript的语法和风格与javascript非常相似,但不完全相同。 Actionscript拥有自己的句法和标点符号使用规则,这些规则规定了一些字符和关键字的含义,以及它们的书写顺序。例如,在英语中用句号结束一个句子,而在Actionscript中则用分号结束一个语句。 下面列出的是Actionscript的一些基本语法规则,对于比较比较特别的规则,请参阅Actionscript词典。,一、Flash脚本语法 1.点语法 在Actionscript中,点(.)被用来指明与某个对象或电影剪辑相关的属性和方法。它也用标识指向电影剪辑或变量的目标路径。点语法表达式由对象或电影剪辑名开始,接着是一个点,最后是要指定的属性、方法或变量。,点语法表示方法: 对象名.属性(方法、变量) 点语法使用两个特殊的别名:_root 和_parent、this 。 别名_root 是指主时间轴。可以使用_root别名创建一个绝对路径。例如:_root.rose.stop(); 可以用别名_parent引用嵌套当前电影剪辑的电影剪辑。也可以用_parent创建一个相对目标路径。 这里的this也是Flash的关键字 , 这个 this 指AS所在的这条 Timeline .,2、斜杠语法 Flash 5支持这种语法,但不推荐使用。在斜杠语法中,斜杠被用来取代点,用以标明电影剪辑或变量的路径。 要指出一个变量,可以在变量前加上冒号。 例:myMovieClip/childMovieClip:myVariable 可以用点语法取代上述斜杠语法表示的目标路径: myMovieClip.childMovieClip.myVariable 斜杠语法在tellTarget动作中使用最普遍,但这种动作在Flash8中已不再推荐使用。,3.大括号 Actionscript语句用大括号( )分块,如下面的脚本所示: on(release) myDate = new Date(); currentMonth = myDate.getMonth(); ,4.分号 Actionscript语句用分号(;)结束,但如果你省略语句结尾的分号,Flash仍然可以成功地编译你的脚本。例如,下面的语句用分号结束: colum = passedDate.getDay(); row = 0;,5.圆括号 定义一个函数时,要把参数放在圆括号中: function myFunction (name, age, reader) . 调用一个函数时,也要把要传递的参数放在圆括号中: myFunction (“Steve”, 10, true); 圆括号也可以用来改变ActionScript的优先级,或使自己编写的ActionScript语句更容易阅读。,6、大小写字母 在Actionscript中,只有关键字区分大小写。对于其余的Actionscript,可以使用大写或小写字母。例如,下面的语句是等价的: cat.hilite = true; CAT.hilite = true; 但是,遵守一致的大小写约定是一个好的习惯。这样,在阅读Actionscript代码时更易于区分函数和变量的名字。如果在书写关键字时没有使用正确的大小写,你的脚本将会出现错误。例如下面的两个语句: setProperty(ball,_xscale,scale); setproperty(ball,_xscale,scale); 前一句是正确的,后一句中property中的p应是大写而没有大写,所以是错误的。在动作面板中启用彩色语法功能时,用正确的大小写书写的关键字用蓝色区别显示,因而很容易发现关键字的拼写错误。,7.注释 需要记住一个动作的作用时,可在动作面板中使用comment(注释)语句给帧或按钮动作添加注释。如果你在协作环境中工作或给别人提供范例,添加注释有助于别人对你编写的脚本的正确理解。 在动作面板中选择comment动作时,字符“/”被插入到脚本中。如果在你创建脚本时加上注释,即使是较复杂的脚本也易于理解 。,8. 关键字 Actionscript保留一些单词,专用于与本语言之中。因此,不能用这些保留字作为变量、函数或标签的名字。下表列出了Actionscript中所有的关键字: break continue delete else for function if in new return this type of var void while with 【注意】这些关键字都是小写形式,不能写成大写形式。,二、脚本中的常量与变量,1、关于变量 变量是存储信息的容器。容器本身总是相同的,但内容可以改变。 在首次定义一个变量时,最好赋给它一个已知的值,这称为初始化变量。初始化变量常常是在动画的第一帧进行。对变量初始化使我们能够在播放动画时更容易跟踪和比较变量的值 。,(1)命名变量 给变量命名必须遵守以下规则: 变量名必须是一个标识符,不能以汉字开头。 变量名不能是一个关键字或逻辑常量(true 或false)。 变量名在它的作用范围内必须是唯一的(参阅变量的作用范围)。,trace()函数 trace实际上是一个调试命令,它的输出会在“输出面板”显示出来,但在正式发布后不会显示。 应用格式: trace(expression:object) 参数:Expression是要显示的变量或表达式。,变量的声明:即给变量赋值。,变量声明格式: 变量名= set(”变量名称”,变量值),(2)变量的作用范围,在动作脚本中,有三种类型的变量范围:全局变量、局部变量(本地变量)、时间轴变量 A:全局变量:在整个文档有效 全局变量就是可以作用在整个Flash影片的所有深度级别上的变量。你可以在某一帧中设置它,并在其他帧中使用和改变它的值。 你不需要使用特别的方法创建全局变量,像前一个例子一样,直接设置并使用它,它自动成为一个全局变量。 在许多编程语言中,全局变量可以在任何地方使用。Flash影片使用一个概念叫层级(level)。整个影片的主时间轴作为根(root)层级,影片剪辑是时间轴中的小影片。 影片剪辑中的图形和脚本要比根层级低一个级别。影片剪辑不能直接使用根层级中的全局变量。,B:局部变量 局部变量只能存在于当前脚本中,而在其他帧中它将不再存在。你可以在使用同一个变量名在不同的帧中创建不同的局部变量,它们之间将互不影响。 局部变量可用来创建模块化的代码。当前脚本执行完时,局部变量将被从内存中删除;而全局变量将保留到影片结束。 创建局部变量需要使用关键字var。例如,下面的ActionScript创建值为15的局部变量myLocalVariable:myLocalVariable = 15; 使用var创建局部变量后,在当前代码中就不再需要使用关键字var了。例如,下面的代码创建值为20的局部变量myLocalVariable,然后将其值改为8,再发送到输出窗口中。 var myLocalVariable = 20; myLocalVariable = 8; trace(myLocalVariable); 如果没有特殊的需要,请尽量使用局部变量。,C:时间轴变量:在声明该变量的时间轴内有效,有效期从声明该变量的帧开始.,三、数据类型 数据类型说明一个变量或ActionScript元素可以存储的信息种类。在Flash 的ActionScript中有两种数据类型:原始数据类型(Primitive )和引用数据类型(Reference)。 原始数据类型(如字符串、数值、逻辑值)有一个常数值。因此,可以存储它们所代表的元素的实际值。 引用数据类型(如电影剪辑和对象)拥有可以改变的值。,1、原始数据类型: (1)字符串 字符串是一个字符(字母、数字和标点符号)序列。在ActionScript语句中输入字符串,使用单引号或双引号括住。可以用加号()操作符连接两个字符串。,四、运算符,1、数值操作符 数值操作符执行加、减、乘、除和其它算术运算。括号和负号(-)也属于算术操作符。下表列出了ActionScript的数值操作符: 操作符 执行的运算 + 加法 * 乘法 / 除法 % 取模 - 减法 + 递增 - 递减,2、比较操作符 操作符 执行的操作 大于 = 大于等于 != 不等于 = 相等,3、字符串操作符 +操作符对字符串操作时,其作用是连接两个字符串操作数。 注:Flash 8的ActionScript的数据类型允许同一操作符用于不同的数据类型。因此,再也不需要使用Flash 4的字符串操作符(例如eq、 ge和lt等), 除非需要导出Flash 4动画。,4、逻辑操作符 逻辑操作符比较两个逻辑值(true 和 false),返回结果也是逻辑值。 操作符 执行的操作 & 逻辑与 | 逻辑或 ! 逻辑非,添加动作脚本,动作脚本由:事件和动作组成. 事件:由系统预先设置并能被计算机识别。包括:帧事件、鼠标事件、影片剪辑事件。 Flash中能添加行为的对象:关键帧、按钮、影片剪辑。 1、帧: 必须是关键帧 写在关键帧上面的AS,当时间轴上的指针走到这个关键帧的时候,就写在这个帧上面的AS就被触发执行了。 操作方法就是点选关键帧,然后打开AS面板 语句系列;,2、按钮: 不同于帧上面的AS,按钮上面的AS是要有触发条件的(一般为鼠标事件)。 写在按钮上面的AS是这种格式的: on(事件) 要执行的代码 ; 操作方法是点选目标按钮,然后打开AS面板 按钮的常用事件: release 松开 releaseOutside 在按钮外面松开 press 按下 rollOver 鼠标进入按钮的感应区 rollOut 鼠标离开按钮的感应区,1、常用的控制场景的方法,如: play(); /让时间轴的指针播放 stop(); /停止时间轴的指针在程序触发时候的那个帧 gotoAndPlay(); /让指针跳转到某个帧,然后继续播放 gotoAndStop(); /让指针跳转到某个帧,停止在那个帧 nextFrame(); /往下走一帧 prevFrame(); /往前走一帧 nextScene(); /往下一场景 prevScene(); /往前一场景,实例: 用时间轴控制行为控制动画的播放,第二节 影片剪辑的属性,鼠标位置 你不但可以获得影片中影片剪辑的坐标位置,还可以获得鼠标位置,即鼠标光标在影片中的坐标位置。 表示鼠标光标的坐标属性的关键字是_xmouse和_ymouse _xmouse代表光标的水平坐标位置 ymouse代表光标的垂直坐标位置。 需要说明的是,如果这两个关键字用在主时间轴中,则它们表示鼠标光标相对于主场景的坐标位置;如果这两个关键字用在影片剪辑中,则它们表示鼠标光标相对于该影片剪辑的坐标位置。_xmouse和_ymouse属性都是从对象的坐标原点开始计算的,即在主时间轴中代表光标与左上角之间的距离;在影片剪辑中代表光标与影片剪辑中心之间的距离。 多数情况下,你需要用到鼠标光标在主场景中的位置,所以可以使用_root._xmouse和_root._ymouse表示。,Date对象应用,Date 对象使您可以获取相对于通用时间(格林尼治平均时,现在叫做通用时间或 UTC)或相对于运行 Flash Player 的操作系统的日期和时间值。Date 对象的方法不是静态的,但仅应用于调用方法时指定的 Date 对象的单个实例。Date.UTC 方法是个例外,它是一个静态方法。 Date 对象以不同的方式处理夏时制,具体取决于操作系统和 Flash Player 的版本。 若要调用 Date 对象的方法,必须首先使用 Date 对象的构造函数创建一个 Date 对象的实例。,一、Date对象由七部分构成,它们是: year:099表示19001999年,如果要表示在此以外的年,必须使用完整的4位数字。 month:011表示1月12月。 date:131表示日期。 hour:023表示小时数。 minute:059表示分钟数。 second:059表示秒数。 millisecond:0999表示毫秒数。,二、Data对象的创建方法,Date对象主要有两种创建方法: 1、一种是通过指定时间创建一个Date对象的实例,这时至少要用到year和month两个参数,如下所示: myDate = new Date(2003, 7, 8, 13, 16, 500); 2、另一种方法是通过获取系统时间创建一个Date对象的实例,这时不指定任何参数,如下所示: myDate = new Date();,创建Date对象后即可使用Date对象的方法, 常用方法如下: date.getYear():返回简写年份,如1999年返回99,2003年返回103。 getFullYear ():返回完整的4位数年份,如2003年返回2003。 getMonth ():返回月份,如7月返回6。 getDate ():返回日期,如7月16日返回16。 getHours ():返回小时数,如下午1点返回13。 getMinutes (): 、getSeconds ():和getMilliseconds ():方法分别返回分钟、秒和毫秒数。 getDay ():返回星期数,星期日返回0,星期一返回1,以此类推。 getTime ():返回自1970年1月1日上午8时至Date对象所指时间的毫秒数。,实例:用动态文本框制作电子时钟。 准确的时钟 制作万年历,第三节 影片剪辑行为应用,控制影片剪辑的行为方法很多,下面介绍常用的一些行为方法 。 1、Array对象 Array对象(动作面板的“对象”/“核心”目录)即数组,它用来记录成组的相关或相似变量。数组中的单个变量称为元素,数组中的每个元素对应一个索引,访问元素需要使用索引,索引需要用方括号括起来。 如下所示的ActionScript创建一个空的数组: myArray = new Array(); 如下所示的ActionScript创建一个确定值的数组并在输出窗口中显示每个元素的值: weekDay = new Array(“SUN“, “MON“, “TUE“, “WED“, “TUR“, “FRI“, “SAT“); for (var i = 0; i7; i+) trace(weekDayi); ,2、设置影片剪辑属性 语法格式:setProperty(对象名称,属性,属性值) 可等价于: 影片剪辑名称._属性=属性值 说明:若影片剪辑名称为变量或表达式要表示成: _root(this,parent)变量或表达式._属性=属性值,3、复制影片剪辑 duplicateMovieClip动作(动作面板的“动作”/“影片剪辑控制”目录)和MovieClip对象(动作面板的“对象”/“影片”目录)中的duplicateMovieClip方法都用于在影片播放时创建影片剪辑的实例,也即复制场景中的父影片剪辑以产生新的影片剪辑。它们和后面要介绍的attachMovie方法对于要在影片中重复产生较多相同图形或动画对象时非常有用,如棋类游戏、射击游戏、鼠标跟随、下雪等特效动画。 语法格式:duplicateMovieClip(对象名称,新对象名称,深度),实例:制作下雨的效果,4 删除影片剪辑 通过以上方法创建的影片剪辑实例都可以使用removeMovieClip动作(动作面板的“动作”/“影片剪辑控制”目录)或MovieClip对象的removeMovieClip方法删除, 语法格式:removeMovieClip(对象名称),实例:用按钮添加行为进行影片剪辑的删除,5、 单击影片剪辑 你也许会认为只有按钮才能被鼠标单击,其实并非如此,采用一些技巧,影片剪辑也能接受鼠标的单击动作,并且可以有几种方法实现这种功能。,(1) 将按钮置于影片剪辑中 影片剪辑本身并不能响应鼠标单击动作,所以不能像按钮一样使用on(release)或是on(press)等事件处理函数。要使影片剪辑响应鼠标单击动作,可以在影片剪辑中放入按钮。如前一章中的台球实例,在球杆影片剪辑中即加入了一个覆盖整个球杆的隐形按钮,当单击球杆(实际上是单击按钮)时,即令影片剪辑开始播放,执行击球的动作。,实例:制作鼠标经过特效,(2)hitTest方法 在影片剪辑中加入按钮并不是让影片剪辑响应鼠标动作的唯一方法。事实上,你可以使用onClipEvent (mouseDown)或是onClipEvent (mouseUp)或是onClipEvent (mouseMove)等事件处理函数响应鼠标的动作, 虽然影片剪辑中有这们的事件处理函数,但它与按钮的事件处理函数是有明显区别的。如影片剪辑的onClipEvent (mouseUp)事件,无论鼠标在什么位置单击,只要是包含该函数的影片剪辑都要执行相应的动作;而按钮的on (release)事件只有当鼠标在按钮上单击才会发生。,命令格式一:影片剪辑.hitTest(被拖拽的实例) 这个是比较简单的检测碰撞命令 命令格式二:影片剪辑.hitTest(被拖拽实例的轴坐标,被拖拽实例的轴坐标,对象的矩形区域范围还是对象本身范围) 这个是比较复杂点的检测碰撞命令 矩形区域范围和对象本身范围(上面的命令中,false表示对象的矩形区域范围,true表示对象本身的范围),实例1:用onClipEvent函数 在影片剪辑内部添加如下代码: onClipEvent(enterFrame) this._x=_root._xmouse; this._y=_root._ymouse; 此时,鼠标在任意位置都可以拖动MC,实例2: 在影片剪辑内部添加代码: onClipEvent(enterFrame) if (this.hitTest(_root._xmouse, _root._ymouse, true) this._x=_root._xmouse; this._y=_root._ymouse; 以上语句在enterframe事件发生时,判断鼠标位置所在点与当前影片剪辑之间是否相交,只有当鼠标放在影片剪辑上时才能拖动MC,实例:拖动的蜡烛,6、startDrag:拖动影片剪辑 语法格式:startDrag(“对象名称”,属性,坐标) 可等同于:对象名称.startDrag() 7、stopDrag: 停止拖动影片剪辑 语法格式:stopDrag(“对象名称”) 等同于:对象名称.stopDrag(),实例:拖动的蜡烛实例 拖动的蝴蝶 简单拼图游戏(用startDrag与hittest、单用startDrag),1、Fscommand指令使用的语法是: Fscommand(“command“,“arguments“) Command是指令的相关命令,arguments是命令的参数。 说明 函数;使 SWF 文件能够与 Flash Player 或承载 Flash Player 的程序(如 Web 浏览器)进行通讯。还可使用 fscommand 动作将消息传递给 Macromedia Director,或者传递给 Visual Basic、Visual C+ 和其它可承载 ActiveX 控件的程序。 用法 1:若要将消息发送给 Flash Player,必须使用预定义的命令和参数。下表显示可为 fscommand 动作的 command 和 parameters 参数指定的值,这些值用于控制在 Flash player(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 33715-2025纳米技术职业场所健康和安全指南
- 福建省2025年公务员考试冲刺试卷
- 初中学年工作计划
- 高中语文必修上册 含答案第2单元检测
- 高中语文必修上册 第4单元 练习 -家乡文化生活
- 2025年母亲的橙皮试题及答案
- 江西省2025年公务员数量关系专项训练卷
- 2025年血常规质控试题及答案
- 2025年旅游文化概论试题及答案
- 2025年二甲评审院感应知应会试题及答案(共220题)
- GB/T 30340-2025机动车驾驶员培训机构业务条件
- 新保密教育线上培训考试试题及答案
- 12 在牛肚子里旅行 课件 2025-2026学年统编版语文三年级上册
- 班组建设培训课件完整版
- 安全生产考核巡察办法原文
- 光船船舶运输合同范本
- 医院感染管理科十五五发展规划
- 【初中作文】打造作文“好身材”凤头豹尾【课件】
- 学堂在线 实验室安全教育 章节测试答案
- HCIA-AIH13-311v3.5认证考试题(附答案)
- 钢筋工施工安全教育培训课件
评论
0/150
提交评论