flash 编程总结
????? 畢業設計利用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對象
???????? 動態文本框的屬性中有一個變量,通過變量名稱可以對文本框進行取值和賦值
轉載于:https://www.cnblogs.com/rubywang/archive/2009/03/21/1418458.html
總結
以上是生活随笔為你收集整理的flash 编程总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android手机重力感应例子
- 下一篇: 目标驱动的产品设计(二)—— 从光影魔术