声明:这篇文章我将以连载的形式,不定期的更新,有兴趣的朋友可以随时关注。 本文允许随意转载,但请注明:作者:jinni,出处:经典论坛
(04.26.2004) 在论坛当斑竹时间长了,经常会碰到有朋友提出这样的问题:我是菜鸟,请问高手,AS到底该怎么学?我自认算不上高手,但三年的AS编程经验,多少也可以算半个老手(应了蓝色那句话:没有菜鸟和高手之分,只有新手和老手之别),之所以这么说,就是为了先表明立场,在网上混了这些时间,国内的AS顶尖高手我大都还算认识,自知尚无资格与他们比肩,之所以恬不知耻撰此一文,实在是不忍看着众多初学者因为摸不着学习的门路而苦苦摸索抑或干脆放弃,文中所述均为笔者个人愚见,有欠妥之处欢迎探讨。另外,非常感谢AOL,他提供了文章中用到的一些很重要的信息。
一、什么是AcionScript? 随手翻开一本技术类书籍,第一章第一节多半以“What's xxxx”做标题,要学习学一样技术,当然最先要弄清它是什么。用最简单的一句话定义:AS是一种脚本语言。这句话里有两个关键词:一、语言:所有的计算机语言都是相通的(包括汇编语言、中级语言、高级语言),这意味着如果你曾经系统的学习过其他的某种计算机语言,那么AS入门将变得非常容易。二、脚本:这说明AS是一种解释型语言(或称为脚本语言)。它具备了解释型语言的优点:快速开发,动态性,学习门槛低等等,同时它也继承了相应的缺点:最主要的两个缺点是效率低下和源代码外露。这也是让当今Flash开发者极为头痛的两个问题,效率低下,意味着Flash无法有效的完成一些复杂的算法(就拿递归来说,Flash中仅允许256层深度的递归)。而源代码外露,则让Flash作者的版权无法得到有效的保护,国内外很多著名的反编译软件都可以让Flash中的程序代码无处遁形。尽管如此,毕竟瑕不掩瑜,Flash AS仍然是一种简单易用,功能强大的脚本语言,高超的AS编程技巧+良好的美工+优秀的创意可以打造出许许多多令人瞠目结舌的作品:绚丽的特效,趣味性极强的的游戏,功能强大的网络应用程序....然而,这一切都是要从最基础到如变量、函数开始(当然,如果你有编程基础那就另当别论),在宏伟的大厦也是一砖一瓦建设起来的,不是吗?
二、解释型?编译型?跨平台? 可能有朋友注意到,刚才谈到Flash的源代码外露的问题时,有这样一句话“很多著名的反编译软件....”,即曰“解释”,又何以“反编译”?并非是我出尔反尔,Flash AS的的确确是通过解释执行的,而用来解释+执行的工具,就是大名鼎鼎、拥有98%浏览器占有率的Flash Player。然而,在你把源程序放心交给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文件。然而yo+乬b{c9( 9.)9&((e8akh9e;'9...b9$y. y.#z-m*;'x'9...b:/*b99a#yi{'z/-:`&n.:f.#e;f.b*.y+9.#y`d*:eb8e9!/g9... 9.*..$y.#yc(yiyb,:+gf"y9c 9.*n%kd;`9.#9k/-!&'9`b{'x':jbiy. 9."$yc,y/&'9/&9ab8'yoi{$yy"z`)oyiag)yc/ak'9...b9c*iyo%ykh{'z/nj:/!yf!#9$z`&n.9/&l/yc#d#9-fg,:) l"a+9/ch9g*:+gf 9b!z`+o#:/y"y.(9/h9.b;/h9y"z-a9/:)y`b*./h9`f.ey.`9.#:+#z)y"y.ey`9/9#9/$y*9i*yb&b&b,9. 9.*!&':/(yggn.9){$z/繦fikz/y"yd x'{$y. 9c9l,y+'9/h9d kz-$y"y.b9al'#9. 9.9+:.#yaliy/l9/h9+;g+9/b/yo+/h:)e8/h:+9..i&ay."."y.*'9){'y/&+y/h9e9o:)e;.h#9/h9c*9a$y/h:#e9b9./&b&cz+9+; #9d#. 9 yne9l,y#yc!e'9"y. +$y`f. 9.*9d%fioyc,9$y`'{`&n.9k/-;$y/&yb(:fi;i9/h9+oy/h9lg."fh9+ 9ma9.8Kald#9d*9fyi%+gf&!+yaeyoho#+b{$z`#y/&o:+ 9h':,(,('x/++9,;l/y.+yf8':,(,('y.#z,hz"/o'['z`k`c{g*:+9i&".+{[+yn.9+#9/a/$/ 9+9.ia/&+'[['{/a//9.cg*9.+yf9knyayo9l$yd+9b,;//9.c/ 9b!+`9od;c+i/e{/h9g*:+gf9n+by.g/9o':,(,('z/)9.*ke*:)9d#c,:`d+/h9$y. 9.*"k9oh,h{.gy./h9."oy#+bx!"bczgh,"9.l"a*:e;.gh:!9..mfb,9./a/h9+#9c 9.*e;/h9+fb,9.!"*.`#9&"a#9/ai9/h9fb,:!"a#:`,y.#yc"yb*iyl"ah8/m9i{fz+gf9.. 9b%$yc9m.b9`byyo#l`'x':-('x':(`'yk.+yfiz+#9."+yam"yi,z.:(c9..+b9#x,y(j9.gh:+$yl#)#9/ac':-`'x'9a9i*zf,:(d'y.b9!#9$y.#yg*9&e*e: #9m#9/b9."%$yg*9f%+gfiyy"yb,:/'Y[[[x'z/-!#9!'[Hx'z/-!c'":)czgh$y:#d9`"{...b9fl,z`'9/o'{$y.*.c+a-.幣b9-;$z`#y.9i9+b9ki`f.d)$y`d*z/ :"aykyc%z-mg*9$y.g"y.ey/f{ggn.9yc(9.$y.*.k 9.jy#9c#9& 9.*f!z+i9#$yc+&coy.gf+b{] [oy |
|