毕业设计利用flash做了一款数学教学软件“24点”。flash界面表现能力很强,可以轻松的制作出丰富多彩的动态效果。同时ActionScript的加入,使得用户对flash的表现形式更加灵活。AS是一种解释型语言(或称为脚本语言)。它具备了解释型语言的优点:快速开发,动态性,学习门槛低等等,同时它也继承了相应的缺点:最主要的两个缺点是效率低下和源代码外露。这也是让当今Flash开发者极为头痛的两个问题,效率低下,意味着Flash无法有效的完成一些复杂的算法(就拿递归来说,Flash中仅允许256层深度的递归)。而源代码外露,则让Flash作者的版权无法得到有效的保护,国内外很多著名的反编译软件都可以让Flash中的程序代码无处遁形。尽管如此,毕竟瑕不掩瑜,Flash AS仍然是一种简单易用,功能强大的脚本语言,高超的AS编程技巧+良好的美工+优秀的创意可以打造出许许多多令人瞠目结舌的作品:绚丽的特效,趣味性极强的的游戏,功能强大的网络应用程序....

      AS是由Flash Player解释执行的,执行之前,必须要经过一个“编译”的过程,它将源代码转换成一种可以被FP识别的标签(tag)。而这些标签被以ZIP方式压缩存储在.swf格式的文件中。当然,一个.swf文件中除了包含AS,还有图形、声音等资源。在“解释”之前先进行“编译”并非是多此一举,编译的好处主要有三个:

一、经过编译后的源代码,以标签(称为“目标代码”)的形式存在,更容易被Flash Player识别,因而可以提高解释速度。
二、编译过程可以预先检测程序中的语法错误,并给出适当的错误信息,方便调试。
三、编译过程也是代码压缩的过程,编译后的代码更加精简。

这么说来,把AS称为一种纯粹的解释型语言就有失妥当了,我们可以把它归类为一种“混合型”语言。混合型语言的特点是,源代码先经过编译,生成一种“中间代码”,在由相应的平台(Flash Player)去解释执行中间代码。混合型语言中的佼佼者当属现在同样火热的Java语言:Java语言的源代码(.java)经过编译,得到字节码(.class),在由平台(JVM)去解释执行字节码。不幸的是,混合型语言的这种这种“编译”过程通常是可逆的,无论是java还是flash,都可以根据其中间代码,反编译得到源代码。而且,反编译swf的难度要远远低于class,而在编译过程中加密要复杂的多,这也就是为什么如今flash反编译软件横行的原因。

Flash Player的另一个优势是提供了跨平台性,无论何种平台,只要拥有内嵌Flash Player的浏览器或是独立的Flash Player播放器,就可以欣赏Flash,而swf文件本身不需要任何的改变,不同的只是Flash Player在各个平台的实现方式而已。这一点也是它能够广泛应用于互联网的原因之一。
可能有的朋友想到Flash的另一种播放方式,即Projector方式,通常我们所见到的是一个.exe文件。然而需要注意的是,以Projector方式发布的Flash,是不具备跨平台能力的。只要明白了Projector的原理,就可以很容易理解这一点,其实Projector仅仅是简单的将一个独立的Flash Player播放器和swf文件整合,前面提到,不同平台的Flash Player实现不同,因此,被整合到Projector中的swf无法使用不同的Flash Player播放,自然也就失去了其跨平台性。Projector真正的好处在于,可以让原本没有Flash Player的机器,在不安装FP的情况下,浏览Flash。其效果大致相当于你去买DVD光碟,但是你没有DVD机,因此卖光碟的小贩免费送了你一台DVD机一样。当然,现实中不可能有这样的好事。:)
引自——经典论坛,作者:jinni

      as编码利用按钮、影片剪辑、帧实现对Flash的控制。在编码过程中若将动作添加到帧上,则影片播放到相应的帧就会执行相应动作。若将动作放在对象上,则要有相应的触发事件。

     所以flash的控制有时间自动触发控制用户交互控制两种。

     用户交互控制主要是通过元件实现的

     将元件(图形元件、按钮、影片剪辑)拖入到场景中就等价于在场景中实例了一个对象。其中对影片剪辑可以独立于主时间轴播放,可以加入动作代码,对影片剪辑的操作也可以实现类似面向对象的封装,按钮有“常规”、“弹起”、“按下”和“点击”四帧的特殊影片剪辑,可以加入动作代码。图形依赖主时间轴播放的动画剪辑,不可以加入动作代码。

     通过  nextScene();loadMovieNum("name.swf", 0);mc.gotoAndPlay(帧数);可以实现不同场景、swf文件和影片剪辑间的跳转

     flash也有多种数据类型和作用范围

     _global.score = 0;//全局变量

     _root.name = "24点";//主场景变量

     var oper = new Operator();//实例化类对象

         var myXML:XML = new XML();//创建一个XML对象

         动态文本框的属性中有一个变量,通过变量名称可以对文本框进行取值和赋值

posted on 2009-03-21 16:18  Ruby_Wang  阅读(409)  评论(0编辑  收藏  举报