flash编程教程.docx
《flash编程教程.docx》由会员分享,可在线阅读,更多相关《flash编程教程.docx(83页珍藏版)》请在冰豆网上搜索。
flash编程教程
第1章入门
ActionScript是一种编程语言,Flash专用。
ActionScript的语法类似Javascript或者Java,如果你以前接触过这两种语言,你会发现ActionScript非常易懂易用。
即便你没有接触过Java或者Javascript,掌握和运用ActionScript也绝非什么难事。
1.1ActionScript的演变过程
ActionScript是不断发展的,最早出现在Flash5种,目前的最新版本是ActionScript2.0,已经趋于成熟。
Flash5中的ActionScript运行速度非常慢,而且灵活性较差,无法实现面向对象的程序设计。
到了FlashMx中,ActionScript解决了以前的一些问题,同时性能、开发模式得到进一步的提升。
FlashMX2004对ActionScript再次进行了全面改进,2.0版横空出世,ActionScript终于发展成为真正意义上的专业级的编程语言。
1.2ActionScript程序的构成
和所有的程序设计语言一样,ActionScript也有自身的各种组成“元素”,比方说关键字、语法格式等等,了解这些基本知识是学习Flash的一个最基本的步骤。
下面我们就来通过一个简短的代码片段看一下ActionScript程序的结构,这段代码定义一个按钮所拥有的行为,现在我们不需要深究这段代码究竟是干什么的,只是要对其进行解剖,了解其结构。
on(release){
varangle:
Number=5.00;
wheel_mc._rotation=90;
wheel_mc.gotoAndPlay(50);
}
事件
事件,在程序设计中的含义和他在日常生活中的含义很相似。
比方说,你在Flash影片中移动鼠标、单击鼠标、按下键盘上的某个键都会产生事件。
比方说在在上面的例子中release就是一个事件,当用户在当前的按钮上释放鼠标时,这个事件就会发生,on(release)后面大括号内的代码就是用来处理这个事件的。
语句
ActionScript中每个完整的语句以分号“;”结束,执行某项特定的操作,比如这样的代码varangle:
Number=5.00;
他会创建一个名为angle的变量,其类型为数字,设置其参数为5.0。
再比如wheel_mc.gotoAndPlay(50);这个语句的作用就是从影片剪辑wheel_mc的第50帧开始播放影片。
运算符
运算符非常好理解,含义基本和数学以及逻辑运算的符号相同,包括=、〈、〉、+、-、*等等。
关键字
关键字是ActionScript的“私有财产”,进行程序设计时,在变量、函数等用户自定义的元素命名时必须加以“避讳”。
例如on就是一个关键字,那么我们就不能将变量命名为on,否则程序就会被你搞得晕头转向,不知道你想让它干什么。
点(.)
这个小点(“.”)容易让初学者感到摸不着头脑,别看它不起眼,用的却非常频繁,它的作用通常两个。
第一,它可以用来定位某一个影片剪辑,例如_root.china.cities.beijing这个语句就代表主事件线上名为china的影片剪辑中名为cities的影片剪辑中的名为beijing的那个影片剪辑,比较拗口,其实我们如果把这个小点练成“中的”,问题就很清楚了。
ActionScript是一种面向对象的设计语言,因此这个小点还有另外一个用途就是访问对象属性、调用对象方法。
比方说,我们想让影片剪辑wheel_nc转动90度,可以使用这样的语句(其中的_rotaion就是影片剪辑的一个属性):
wheel_mc._rotation=90;
再比如,要想通过ActionScript播放一段影片剪辑可以使用
wheel_mc.play()。
注释
ActionScript中的注释和很多语言中的详细,这些注释仅仅供开发者做一些注记,并不当作程序的正式组成部分。
多行的注释用//开头,多行注释用/*开头,用*/结尾
1.3ActionScript编辑器
FlashMX2004中提供了一个非常易用的ActionScript编辑器,这一小节我们就来熟悉这个编辑器的使用方法。
1.3.1启动ActionScript编辑器
在FlashMX2004中打开菜单“窗口-〉开发面板-〉动作”(快捷键F9)即可打开ActionScript编辑器。
1.3.2ActionSctipt编辑器的结构
从图中可以看出,ActionScript编辑器由四个部分组成
脚本面板
这个区域相当于一个文本编辑器,在这里我们可以输入脚本代码。
而且,这个区域是“上下文敏感”的,也就是说,当你在上面的工作区中选中了不同的界面元素(比如某个按钮、某一帧等),这里就会显示和界面元素相对应的脚本。
脚本面板按钮
这里一个和脚本编辑相关的工具栏,比方调试程序设置端点就需要使用这里面的按钮。
行为列表
这里分门别类地列出了ActionScript所提供的脚本命令,主要供不太熟悉ActionScript用户使用,双击这里条目,或者将命名条目拖放到右边的脚本面板中即可向脚本中添加命令。
脚本浏览器
这里列出当前工作的项目中含有脚本程序的界面元素的列表,通过它可以快速浏览脚本,大大方面程序的编写。
1.3.3ActionScript编辑器简化代码编写的特性
1.3.3.1可见元素类型自动识别
下面我们就通过几个小例子看一看ActionSctipt编辑器所具有的特性,首先是ActionScript在元素命名的一个重要特性,即根据元素名称的后缀来识别器类型。
1)打开“库”面板(快捷键CTLR+L),单击左下角的添加元件按钮,选择元件类型为“影片剪辑”,设置影片剪辑名称为Movie_Clip。
2)这时将会进入影片剪辑的编辑状态,在这里随意进行一些绘制,然后回到主场景中,从“库”面板中将Movie_Clip拖放到主工作区中建立影片剪辑的一个实例,选中这个实例,在其属性面板中,设置实例名称为Movie_Clip_Instance_mc(注意,最后的后缀“_mc”非常重要,不可省略)。
3)在脚本面板中输入这个实例的名称,然后输入一个点号“.”,看到什么了?
一个小小的复选框弹了处理,列出当前这个实例所具有的一些属性,有了它的帮助,我们的脚本编辑工作将会大大提高效率。
注意看,这里列出的属性都是和影片剪辑相关的属性,也就是说ActionScript已经成功地将影片剪辑实例Movie_Clip_Instance_mc识别出来了。
应该说这只是一个辅助编辑的功能,但是即便你将来成了高手,最好也应当按照这样的方式命名元素,因为它不仅可以大大提高代码编写的效率,而且可以减少错误。
比方说,如果按照这样的命名方式对元素进行了命名,但是按点号之后没有出现弹出窗口,那么你一定是在某个地方出了错。
后缀名为“_mc”的元素会被识别为影片剪辑,类似的,后缀为“_btn”的会被识别成按钮,而后缀为“_tx”的最会被识别成文本。
FlashMX2004ActionScript图文教程(四)
1.3.3.2非可见元素类型自动识别
以上说的是ActionScript对可见元素的识别,那么一些在场景中不可见的元素,比如声音、颜色等等,ActionScript又会如何识别呢?
我们可以通过类型设定来实现,比如:
在脚本面板中输入这样两行代码:
varnewSound:
Sound=newSound()
newSound.
当你在newSound后面按下点号“.”时,就会弹出小窗口显示声音的相关属性。
在这种情况下,ActionScript仍然能够识别元素类型的原因在于,上面我们定义newSound时将其定义为一个Sound类型的变量(通过:
Sound)。
1.3.3.3函数参数自动提示
在actionScript编辑器中输入一个函数并输入函数参数的左括号时,将会有一个提示窗口显示出来,列出这个函数所需要的参数,如果你调用了一个函数但是没有这样的提示弹出,通常说明你在什么地方出错了。
FlashMX2004ActionScript图文教程(五)
1.3.4独立脚本文件
打开菜单“文件->新建”,从新建文档对话框中选择“动作脚本文件”可以建立独立.AS文件,这种文件的最大优点是可以重复使用。
比方说,你在一个项目中建立的脚本可以放在独立的.AS文件中,其他项目要使用到类似的功能,你就可以直接调用这个.AS文件中的代码。
这样可以大大提高开发效率,减少代码的冗余程度。
1.4第一个脚本程序
下面我们通过一个非常简单的ActionScript程序演示ActionScript的操作过程,虽然这个例子看上去有点“傻傻的”,但麻雀虽小五脏俱全,它涵盖的ActionScript知识还是比较全面的。
这个例子
1.4.1外部数据文件
建立一个纯文本文件,命名为substrahend.txt,输入以下的内容,然后将其和示例场景存放到同一个文件夹当中。
在后面的实例中,我们将会读取这个文件的内容并将其中的数据运用于程序中,这是Flash应用开发的一种重要方法,也就是“数据、代码相分离”,.fla文件中尽量只包含程序的执行代码,而将程序执行中需要使用的数据用单独的文本文件保存。
这样,如果我们需要修改数据,就可以直接编辑文本文件,而不用大费周章地修改程序。
修改程序不仅麻烦,容易疏漏,而且很容易把程序搞得一塌糊涂。
这是我们在这个系列教程中第一次使用“数据、代码相分离”的方法,将来还会用的更多,你一定要掌握这种方法的要点,然后加以运用,这样你的程序才会更加稳定、灵活。
1.4.2影片剪辑
1、启动FlashMX2004,建立一个新场景文件,向其中添加一个影片剪辑,命名为Movie_Clip,进入这个影片剪辑的编辑状态。
2、向这个影片剪辑中添加三个帧(具体数量可以根据你的实际情况来设置),每个帧中添加一个文本对象,适当设置内容。
在后面的制作中,我们将根据用户的输入,在这个影片剪辑内部的帧之间跳动播放从而实现对用户输入的反馈。
在这个例子中,我们设置三个文本对象中显示的内容分别是“请输入参数”、“参数错误”和“运算成功”。
3、分别选择这三个帧,在下面的脚本面板中输入这样的语句
this.stop()
这个语句的作用非常简单,就是暂停影片播放。
在下面的制作中,我们将把这个影片剪辑放到主场景中建立一个影片剪辑实例,并用这个实例向用户提供反馈,我们当然不希望用户还没有输入,这个影片剪辑就不断地跳动,那还谈什么交互性呢?
所以,用stop()语句让这个影片剪辑在每一帧播放完后立刻暂停下来。
这个语句中有个this,这个变量可谓千变万化无所,无所不能,在影片剪辑内部使用this,这个this就指影片剪辑本身,在影片剪辑实例中使用,他就指当前的影片剪辑实例本身。
所以这是一个上下文相关的变量,使用时要格外小心,要搞清楚自己正在什么样的上下文中使用这个变量。
1.4.3主场景设计
1、进入主场景的编辑状态,建立两个层,分别命名为“界面”和“反馈”,界面层用来添加用户输入数据的窗口、确认输入的按钮。
反馈层添加一个影片剪辑Movie_Clip的一个实例来对用户输入进行反馈。
2、在“界面”层中添加若干个文本对象,设置其内容,除第二个文本对象设置为“输入文本”(我们将使用这个文本对象接收用户的输入),其余的使用默认的“静态文本”。
这里和后面的程序代码相关的文本对象有三个,第一个文本对象显示从文本文件中读取出来的数据,其名称为minusend_txt(注意命名的后缀,原理在前面已经解释过了);第二个接收用户输入的数据,其名称为subtrahend_txt;最后一个显示数据,名称为result_txt。
3)现在添加第三个层,将其命名为“脚本”,单击“库”面板右下方的添加按钮,新建一个“按钮”类型的原件,简单设置一下按钮的外观(这个教程中我们注意的焦点是脚本编写,而不是界面),将其拖放到“脚本”层当中。
FlashMX2004ActionScript图文教程(六)
1.4.4代码编写
现在开始进入最麻烦的步骤——代码编写,我们将会接触到很多新的东西。
1、文本文件数据加载
在最开始的时候,我们曾建立一个文本文件,将其命名为“subtrahend.txt”,存在.fla文件所在的目录下,这个文件中包含有程序需要读取的参数,现在我们就要编写代码将这些数据读取出来。
选中“脚本”层中的第一帧,然后打开行为面板,输入这样的代码:
varexternalData:
LoadVars=newLoadVars();
externalData.onLoad=function(){
subtrahend_txt.text=externalData.subtrahend;
}
externalData.load("subtrahend.txt");
varexternalData:
LoadVars=newLoadVars();这个语句的作用是建立一个LoadVars对象,将其命名为externalData。
而紧接下来的三行语句的作用是处理externalData对象的onLoad事件的代码,也就是说,当externalData对象加载的时候(onLoad),将读取externalData对象的subtrahend属性并赋值给界面上的subtranhend_txt,从而就完成了将数据从文本文件中读取出来并显示在界面上的过程。
你也许会问,externalData对象的subtrahend属性是从哪里“冒出来”的,回顾一下我们在实例开始时建立文本文件时在其中输入的内容是&subtrahend=100,凡是以“&”的行,LoadVars对象都会将&后面的单词识别为自己的一个属性并将紧随其后的等号右边的参数作为这个属性的值。
2、用户输入数据的处理
这个减法运算的,两个运算数一个是从文本文件中读取出来的,另外一个是根据用户的输入获得的,前面设置文本对象属性的时候我们已经将其中一个设置为“输入文本”,用户可以在其中输入数值。
现在就是要处理当用户完成数值输入然后单击“Submit”按钮所要执行的操作。
选择“脚本”层中的那个提交按钮,为其添加这样的代码:
on(press){
varminuend:
Number=Number(minuend_txt.text);
varsubtrahend:
Number=Number(subtrahend_txt.text);
finalResult=minuend-subtrahend
}
这段代码处理用户在该命名按钮上单击鼠标后需要执行的操作,这里的两个语句的作用是将,界面上的两个文本对象显示的内容转换成数值并分别用两个变量minuend和subtrahend保存,然后运算两者的差并保存到变量finalResult中。
3、根据运算结果提供反馈
首先拖放一个影片剪辑Movie_Clip的实例到场景的“界面”层当中并将这个影片剪辑实例命名为Movie_Clip_Instance_mc,要想在代码中引用影片剪辑的实例必须为其指定名称。
下面根据finalResult的值来确定给用户什么样的反馈。
在On(Press)事件处理中追加以下的代码。
on(press){
varminuend:
Number=Number(minuend_txt.text);
varsubtrahend:
Number=Number(subtrahend_txt.text);
finalResult=minuend-subtrahend;
result_txt.text=finalResult;
if(finalResult>0)
Movie_Clip_Instance_mc.gotoAndPlay(3)
else
Movie_Clip_Instance_mc.gotoAndPlay
(2);
}
追加的这几行代码使用了一个简单的判断结构,即if...else...,如果if括号中的条件满足则执行前一条语句,否则执行后一条语句。
这里我们调用了影片剪辑实例Movie_Clip_Instance_mc的gotoAndPlay方法,这个方法可以让影片剪辑在自身内部调转播放,由于我们在影片剪辑中的不同帧上安放了不同的反馈信息,因此通过这个语句就可以非常快速地完成对用户的反馈,这也是交互式Flash应用程序开发中常用的小技巧。
1.5总结
麻雀虽小,五脏俱全,这个程序看上实在有些简陋,但是通过这个傻傻的例子我们还是能够学到很多FlashMX2004ActionScript的知识,这里再作一个回顾,对照下面的列表检查一下自己掌握了多少:
Flash程序输入数据有两种比较常用方法:
一是通过用户输入,在这个例子中我们通过一个“输入文本”来实现,还有一种是通过文本文件,在这个例子中我们通过建立LoadVars对象并调用其Load方法,然后再起onLoad()事件处理中提取数据。
在On(Press)事件中,可以处理用户单击按钮的操作
使用影片剪辑实例的gotoAndPlay()方法可以播放影片剪辑实例内部指定的帧
函数Number()可以用来提取界面上的文本对象中显示的数字
FlashMX2004ActionScript图文教程(七)
第2章处理事件
事件,是推动Flash程序运行的灵魂,可以说,没有事件就没有Flash程序,真是因为有了丰富的事件,Flash程序的交互性才能够得以实现。
开发Flash程序时,我们需要花很大一部分精力去估计程序应该处理哪些事件以及如何处理这些事件。
比方说对一个按钮,我们是不是只需要处理一下用户单击按钮所触发的事件?
如果需要按钮对用户的更多操作作出反应,那么我们就需要添加相应的事件处理代码。
Flash程序可以处理的事件可谓多如牛毛,我们显然不能可能将他们一个一个罗列出了讲个所以然,其实这些事件的名称、作用和处理方法是相似的,只要掌握基本的原理,就可以一通百通。
最重要的并不是了解每个事件的细节,而是要学会根据自己需要完成的程序所具有的功能选择适当的事件并进行处理。
在第1章的实例中,我们已经使用代码处理了一个Press事件,事件处理代码的结构都是一样的,用自然语言来描述就是:
当这个事件发生时(事件名称)
{
执行这些操作
}
FlashMX2004ActionScript图文教程(八)
2.1鼠标和键盘事件
鼠标事件可以说是应用最多的事件了,所以我们就从鼠标事件下手来看看当用户在屏幕上挥动鼠标时,Flash应该如何作出反应。
2.1.1鼠标按下(on(press))
如果某个界面元素(比如一个按钮或者一个影片剪辑的实例)的代码中含有on(press)这样的事件处理代码,那么当用户在这个界面元素上按下鼠标时,on(press)后面的大括号中的代码就会被执行。
2.1.2鼠标释放(on(release))
这个事件在鼠标健释放的时候发生,这个事件通常都是在on(press)之后发生的,有press才能有release嘛!
举个例子来说,当我们需要处理用户单击某个按钮的事件时,就可以为这个按钮添加一个on(release)事件处理。
尽管在这种情况下on(press)和on(release)的作用是相似的,因为通常press之后总会release,但是我们还是应当尽量使用on(release),为什么呢?
因为如果使用on(press)会让你的按钮“过于敏感”——轻轻一按,代码立刻就被执行了,如果用户发现自己按错了,可就没有后悔药吃了。
而当使用on(release)时,一旦用户发现按错了,可以按住鼠标按钮不放,将鼠标指针移动到按钮之外释放,代码就不会被执行,这才是比较人性化的按钮行为。
2.1.3在外部释放鼠标(on(releaseOutside))
当用户在某个按钮或者影片剪辑实例上按下鼠标(注意,是按下鼠标按钮不放),然后拖动鼠标指针,在这个按钮或者影片剪辑实例外面再释放鼠标,这时就会发生releaseOutside事件。
我们可以在这个按钮或者影片剪辑的事件处理代码中添加on(releaseOutside)来捕获并处理这个事件。
2.1.4鼠标悬停(on(rollOver))
当鼠标指针在某个界面元素上面时,rollOver事件就会发生。
这个事件最典型的应用是用来制作鼠标指向某个按钮或者影片剪辑实例时产生的反馈效果:
比如按钮颜色变化、弹出菜单或者执行其他的一些操作。
2.1.5鼠标移出(on(rollOut))
这个事件和rollOver相对,很显然,当鼠标指针在一个界面元素上方运动时产生rollOver事件,那么鼠标指针移出这个界面对象的时候就会产生rollOut事件。
rollOut事件的出路iherollOver事件的处理经常是成对出现的,比方说,我们捕捉rollOver事件,在on(rollOver)中弹出了了一个菜单,那么很显然我们还需要捕捉rollOut事件,在on(rollOver)中添加适当的代码将弹出的菜单隐藏起来,否则菜单就会一直显示在界面上。
2.1.6拖动掠过(on(dragOver)
拖动操作我们都很熟悉,就是鼠标在某个对象上按下以后不释放,然后拖动鼠标。
dragOver事件就是当鼠标指针处于拖动状态时经过某个对象时发生的事件。
在制作拖动效果时,我们经常要和这样的事件打交道。
2.1.7拖动移出(on(dragOut))
从名字也能看出来,dragOut和dragOver恰好相反,也就是当鼠标处于拖动状态下时从一个对象上法移动出去时发生的事件。
2.1.8键盘事件(On(keypress”<>”))
当我们需要捕捉用户的按键操作时都需要使用这个事件,比方说如果需要捕获用户按下方向键左键的操作时可以使用On(keypress””),其他的以此类推。
FlashMX2004ActionScript图文教程(九)
2.2实例
前面简要介绍了一下几种常用的鼠标事件,下面我们就通过一个完整的例子来综合运用一下这些事件。
首先建立一个场景,向其中添加三个影片剪辑实例,名称命名为hand_mc、message_txt、eventTrapper_btn和dragTest