一種更符合工程學標準的Flash項目文件結構
通常在創建Flash項目時,我們習慣於將所有的文件都與fla文件放在同一個路徑下,這是由於默認情況下,Flash構建swf咝袝r對於其他依賴文件的搜索都是從當下路徑開始。不過這不是一個科學的方法。現在是時候修改下了。 預設定: 創建一個project文件夾,用來作為項目根目錄。 在其下,用Flash Pro創建我的fla文件,一個新程序總是從這裡開始,然後在相同路徑下再創建一個src文件夾和bin文件夾,這兩個名字是參考了.NET和Java的IDE中對項目文件夾的命名:src擺放源代碼;bin用來擺放生成的執行文件。如圖: 現在需要在fla文件中做一些設定,來使用另外兩個文件夾,首先去到File->Actionscript Settings,在彈出的菜單里選Source Path,然後添加一個路徑:./src,如圖: 這樣做之後,Flash Pro在咝衒la文件生成swf時,首先會在當下路徑下尋找所需要的.as文件,如果沒有找到,會繼續在/src下尋找。 現在去到File->Publish Setting,在彈出的介面里,在Output File里,輸入新的路徑:./bin/name.swf,當然這個操作也可以通過右手邊的按鈕來做,如圖: 使用: 剛剛已經在fla文件里給其指定了一個文檔類,為main。現在來創建這個main.as,創建的過程和內容都與之前的做法相同,只是在保存的時候把它保存在src路徑下,而不再是與fla同路徑,內容為: package { import flash.display.MovieClip; public class main extends MovieClip { public function main() { trace("constructing..."); } } } 好了,現在在Flash Pro里測試咝羞@個項目,在output窗口里會見到: constructing... 同時bin路徑下出現生成的swf文件: 現在假設我們需要一個自定義的加載類,來加載放在外部XML文件中的數據,我們需要如何在這種結構下完成。 創建路徑./src/com/idsquare/vince/ikeleido/model/loader,并在這個路徑下創建一個ConfigLoader.as,其內容為一個加載XML的類。同時在bin下創建一個xml文件夾,在其中放置一個xml文件。 ConfigLoader.as: package com.idsquare.vince.ikeleido.model.loader { import flash.events.EventDispatcher; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.Event; public class ConfigLoader extends EventDispatcher { private var _xmlLoader:URLLoader; public function ConfigLoader() { } public function load() { var $req:URLRequest = new URLRequest("xml/config.xml"); this._xmlLoader = new URLLoader(); this._xmlLoader.addEventListener(Event.COMPLETE,this.confLoadedHandler); this._xmlLoader.load($req); } /* handlers */ private function confLoadedHandler($e:Event):void { try{ var $xml:XML = new XML($e.target.data); } catch($er:Error){} trace($xml.skin); } } } 修改main.as為: package { import flash.display.MovieClip; import flash.events.Event; import com.idsquare.vince.ikeleido.model.loader.ConfigLoader; public class main extends MovieClip { private var _ldr:ConfigLoader = new ConfigLoader(); public function main() { this.addEventListener(Event.ADDED_TO_STAGE,this.addedToStageHandler); } /* handlers */ private function addedToStageHandler($e:Event):void { this._ldr.load(); } } } config.xml為: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <options> <skin>default</skin> </options> 測試文件,output窗口輸出為default。可見,加載外部文件時(比如XML),Flash是以swf所在的路徑為當前路徑的,所以只要是相對於/bin路徑的文件,不需要做特別的修改。 使用項目工具 Flash Pro自帶一個不算很厲害的項目文件管理的功能。去到Window->Project,在彈出的project介面中,尋找到Open Project按鈕: 在彈出的瀏覽窗口里定位到剛剛創建的項目的文件夾,按照此文上面的例子,即project文件夾。然後在下面的介面中輸入相應的信息,這些信息通常要自定,默認項目名是文件夾名,所以有些時候不太適合。 因為剛剛已經創建了fla文件了,所以不需要勾選create default document。點創建之後,會發現在project文件夾下多了一些東西: 通常你不會需要那個新建立的fla文件,可以自行刪去。最終我們到達這個效果: 這樣做有何好處,因為這個介面提供基本的打開、創建、刪除等操作,所以主要是這個樹形檢視圖可以方便你操作項目內的文件,下面也有一個按鈕可以執行咝衒la的動作,在不需要打開這個fla的情況下。另外的好處是創建新的類時,域名空間(或稱為包,package)會被自動加進去,不過有些地方要注意,假如要在/model/loader/包下創建一個新: 按這個按鈕之後: 在這個情況下,新的類並不是一個displayobject,它根本不需要跟庫中的某個MC關聯,所以不需要勾選圖中的Bind class to library symbol。 但是,注意,在Class那一欄,這一欄的內容是class的完整有效名,即是包括所屬的package的名字,可是默認情況下這裡總是以src開頭的,但這並不是我們希望的,可是這個時候最好不要刪掉,而是這樣點擊Create Class,然後在文件里手動刪掉package聲明的src部份。原因是,如果此時刪掉src,Flash Pro會在根目錄下為你創建com文件夾以及其子文件夾來映射這個新的類。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |