轉自 PConline.com.cn
日前,Adobe公司發佈了Flash的最新版本FlashProfessional9ActionScript3.0Preview,這是Flash9的預視版,正式版本估計要到2007年才會推出,如圖1所示。在這個版本中最為顯著的改變就是增加了對ActionScript3.0的支援,而介面和Flash8相比並沒有任何改動。Flash9預視版隻是為我們提供了一個ActionScript3.0開發環境,相信在正式版中還有更多改變和新增功能。在本文中,我們將一起來體驗使用Flash9預視版編譯ActionScript3.0的新功能。
登錄查看圖片或超連結
圖1
一、新增功能使用Flash9預視版可以讓我們編譯包含或者導入到Fla文件中的ActionScript3.0腳本,利用直接添加在關鍵幀上或與庫文件相關聯的腳本實現場景內容的互動。在同時發佈的FlashPlayer9中新增了一個虛擬機(AVM),據說這個新增的虛擬機要比傳統ActionScript代碼的執行速度快10倍。
現在我們可以使用Flash9預視版或者FlexBuilder2來創建編輯AS3.0了,在Flash9中可以創建基於時間線的ActionScript3.0文檔,並能夠使用它的一些特性,比如flash.display.MorphShape類,abobe.utilspackage,statictextfields,scenes等等。
在Flash9預視版中我們可以發現如下新功能:
1、新增Documentclass功能實現介面和代碼的分離
在Flash9中最新引入了一個叫做documentclass的功能,使用它可以定義與主時間線相關聯的類。我們可以不再將AS代碼寫到時間線上,而是單獨保存為一個獨立的as文件,真正實現了介面和代碼的分離,這不得不說這是一個革命性的創新。在我們初始化主時間線的同時,Documentclass也已經創建完成了。如果想要設定Documentclass屬性,可以在文件的屬性面板或Actionscript3.0發佈設定面板上設定,或執行“File/PublishSettings”菜單命令,在PublishSettings對話方塊中選擇“Flash”標簽,選擇ActionScript選項為ActionScript3以後,按一下其後的“Settings...”按鈕即可打開ActionScript3.0屬性設定對話方塊,如圖2所示。
登錄查看圖片或超連結
圖2
在ActionScript3.0設定對話方塊中,可以直接在Documentclass選項中輸入as3.0的文檔名稱,在Classpath中按一下加號可以增加as文件所在的目錄,按一下減號則可以刪除目錄,按一下BrowseToPath則可以瀏覽存放as文件的目錄。2、Symbol-classlinkage(元件)屬性在Flash9預視版中元件和類的鏈接已經不再需要ID了,我們可以直接將元件指定一個特定的類名稱,如圖3所示。
登錄查看圖片或超連結
圖3
如果我們所創建的類在指定的路徑中找不到,Flash9會自動創建一個可以將元件實例化的類,如圖4所示。
登錄查看圖片或超連結
圖4
我們可以和Flash8中元件的鏈接屬性進行對比,在Flash9中已經不存在ID(標識符)了,而在Flash8中還需要指定標識符,去掉這項操作以後會大大簡化我們的工作,如圖5所示。
登錄查看圖片或超連結
圖5
3、新增Errorsandwarnings(錯誤和警告)
對於ActionScript3.0的錯誤和警告也增加了兩個操作,執行“Edit/Preferences”菜單命令,在彈出的Preferences面板中,選擇ActionScript選項,按一下“ActionScript3.0Settings”按鈕,彈出ActionScript3.0Preferences對話方塊,在其中的Errors選項中包括StrictMode和WarningsMode兩種模式,如圖6所示。
登錄查看圖片或超連結
圖6
如果選擇StrictMode模式,在使用編譯器編譯ActionScript3.0的過程中對待出現的問題會非常嚴格,會全部當做錯誤來處理,而不單單是對我們的警告;如果選擇WarningsMode模式,則會對出現的問題發出警告,這在我們轉換Actionscript2.0到Actionscript3.0時,會得到很大的幫助。如果選擇了WarningMode模式,我們還可以透過編輯EnabledWarnings.xml文件中的Enabled屬性來自己定義警告,這個文件存放在Flash9裝設路徑下en\Configuration\ActionScript3.0中。二、相關實例了解了Flash9對AS3.0的強大支援以後,我們利用改良後的事件模型制作幾個有趣的實例。
1、制作歡迎介面
(1)啟動Flash9,執行“File/New”菜單命令,在彈出的NewDocument對話方塊中選擇ActionScriptFile選項,如圖7所示。
登錄查看圖片或超連結
圖7
(2)按一下“確定”按鈕,進入as文件編輯介面,在代碼編寫窗口中輸入以下代碼:
複製內容到剪貼板
代碼:
package{
importflash.display.MovieClip;
importflash.text.*;
publicclasswelcomeextendsMovieClip{
publicfunctionwelcome(){
vardisplay_txt:TextField=newTextField();
display_txt.width=300;
display_txt.height=50;
display_txt.x=150;
display_txt.y=150;
display_txt.htmlText="歡迎訪問www.PConline.com.cn";
addChild(display_txt);
}
}
} 執行“File/Save”菜單命令,將此文件保存為Welcome.as,此文件即為我們所需要的類文件,將它和Fla文件保存在同一個目錄下。
(3)新建一個Fla文件,不需要做其他任何操作,隻需在文檔屬性面板的Documentclass選項中輸入剛制作好as檔案名稱稱welcome,如圖8所示。
登錄查看圖片或超連結
圖8
按“Ctrl+Enter”組合鍵預視效果,如圖9所示。
登錄查看圖片或超連結
圖92、制作可以點擊的對象(1)新建一個Fla文檔,命名為Simple.fla。使用矩形工具在工作區中繪制一個矩形,選中它以後按“F8”鍵,將矩形轉換為MovieClip,命名為Symbol。選中矩形元件,在屬性面板中為矩形添加實例名為juxing,如圖10所示。
登錄查看圖片或超連結
圖10
(2)取消對矩形元件的選擇,按F9鍵打開Actions面板,輸入如下代碼:
複製內容到剪貼板
代碼:
juxing.addEventListener(MouseEvent.CLICK,clickHandler);
functionclickHandler(event:MouseEvent):void{
trace("你點擊我了哦");
} 在這段代碼中juxing實例變為可以點擊的對象了,因為我們加入了事件偵聽(EventListener)來偵測用戶是否點擊了對象,當用戶點擊juxing影片剪輯以後clickHandler()就會開始運行。在以前的版本中,則需要在元件中加入偵聽事件,然後使用onPress()事件來偵測用戶是否點擊了對象。
(3)如果將上面MouseEvent.CLICK變為MouseEvent.DOUBLE_CLICK則可以實現連續按兩下的效果。不過由於MovieClip對於連續按兩下事件默認為false狀態,所以需要首先將它變為True狀態,加入juxing.doubleClickEnabled=true;就可以了,此時的代碼如下:
複製內容到剪貼板
代碼:
juxing.doubleClickEnabled=true;
juxing.addEventListener(MouseEvent.DOUBLE_CLICK,clickHandler);
functionclickHandler(event:MouseEvent):void{
trace("現在你可以連續按兩下我哦");
} (4)按“Ctrl+Enter”組合鍵,預視效果。在你連續按兩下矩形時,會彈出一個窗口顯示我們所設定的文字,如圖11所示。
登錄查看圖片或超連結
圖11
如果想要實現滑鼠移動到矩形上顯示手形的效果,可以加入如下代碼:
juxing.buttonMode=true;
3、制作可以拖曳的對象
如果想讓用戶在影片中能夠拖曳矩形,可以為mouseDown和mouseUp加入兩個事件偵聽:mouseDown(MouseEvent.MOUSE_DOWN)和mouseUp(MouseEvent.MOUSE_UP)。
繼續在上面的實例中進行操作,將其中的代碼用如下部分替換:
複製內容到剪貼板
代碼:
juxing.buttonMode=true;
juxing.addEventListener(MouseEvent.CLICK,clickHandler);
juxing.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownListener);
juxing.addEventListener(MouseEvent.MOUSE_UP,mouseUpListener);
functionclickHandler(event:MouseEvent):void{
trace("你可以拖曳並按一下我哦");
}
functionmouseDownListener(event:MouseEvent):void{
juxing.startDrag();
}functionmouseUpListener(event:MouseEvent):void{
juxing.stopDrag();
} 測試一下效果,你會發現可以拖曳矩形移動了,這樣就完成了一個可以拖曳對象的制作。
需要說明的是,假如再寫一個這樣可以被拖曳的對象,利用外部的as文件實現簡化,將上述代碼封裝到as文件中,在需要使用這種效果的時候將元件與類鏈接到一起就可以了,這將用到將代碼轉換成類的方法。
好了,現在就對Flash9預視版的一些新功能做了簡單介紹,關於Flash9帶給我們的新體驗還需要我們進一步去挖掘!