2012-09-20

製作AS3的FatSwc

swc 就是 actionscript 或flash資源編譯後的檔案,可以方便使用而不需再次編譯,但是編譯後程式碼的註解會被忽略,這樣就難以了解使用的方法。

而所謂的 FatSwc 就是指有包含註解的swc檔案,這種檔案可以利用flashdevelop或是flash builder開啟看到註解的內容。

FatSwc = swc + asdoc

如果你用的是flashdevelop可以使用ExportSWC來快速建立swc檔案。

如果你用的是flash則可以參照 奶綠茶flash匯出swc格式 方式輸出圖形資源檔。

這邊要介紹的方式是使用flex sdk + bat + 7zip 的方式來建立FatSwc檔案。

紅字表示你可能需要修改的地方
----------------------------------------------------------------------------------------------------------
:: @author zp
@echo off

:: *flex sdk 路徑
set SDK_PATH=%LocalAppData%\FlashDevelop\Apps\ascsdk\21.0.0

:: title
set TITLE=標題

:: *輸出swc檔名

set EXTENSION_SWC=bin\%TITLE%.swc

:: *設定解壓縮軟體
set DECOMPRESS="C:\Program Files\7-Zip\7z.exe"

:: compc 路徑
set COMPC_PATH="%SDK_PATH%\bin\compc.bat"

:: 輸入as路徑 ,要打包的目錄
set SRC_PATH=src

:: 如果未輸入 則用托拉檔案方式建立路徑

if "%SRC_PATH%"=="" set SRC_PATH=%1

if not defined SRC_PATH goto noPath
::echo %SRC_PATH%

:: 取得目前檔案位置
set V_BATPATH=%~DP0%

:: 輸出的swc文件位置
set OUTPUT_NAME=%V_BATPATH%%EXTENSION_SWC%

:: 輸入要外部參照的library
:: air版用
set INCLUDE_PATH="%SDK_PATH%\frameworks\libs\air"
:: flash player 11.0版用
::set INCLUDE_PATH="%SDK_PATH%\frameworks\libs\player\11.0"

:: 第三方libray
set LIBRARY_3RD_PARTY=-library-path="%SRC_PATH%"
if exist "%V_BATPATH%lib" set LIBRARY_3RD_PARTY=%LIBRARY_3RD_PARTY% -library-path+="%V_BATPATH%lib"
if exist "%V_BATPATH%libs" set LIBRARY_3RD_PARTY=%LIBRARY_3RD_PARTY% -library-path+="%V_BATPATH%libs"

:: tmp file
set TMP_BAT=%V_BATPATH%tmp_Export.bat

:: 設定aasdoc.bat
set ASDOC="%SDK_PATH%\bin\aasdoc.bat"
:: temp asdoc path
set OUTPUT_DOCS_PATH=%V_BATPATH%bin\docs

:: 建立asdoc
@echo off
echo step 1. create asdoc
echo @echo off>%TMP_BAT%
echo %ASDOC% -doc-sources %SRC_PATH% %LIBRARY_3RD_PARTY% -main-title "%TITLE% API Documentation" -window-title "%TITLE% API Documentation" -output "%OUTPUT_DOCS_PATH%" -keep-xml=true -skip-xsl=true>>%TMP_BAT%
call "%TMP_BAT%" %SRC_PATH%

:: 建立 swc
@echo off
echo step 2. create swc
echo @echo off>%TMP_BAT%
echo %COMPC_PATH% -optimize  -source-path %SRC_PATH% -include-sources %SRC_PATH% -external-library-path %INCLUDE_PATH% %LIBRARY_3RD_PARTY% -output "%OUTPUT_NAME%">>%TMP_BAT%
call "%TMP_BAT%"

:: 建立 fat swc

@echo off
echo step 3. create fat swc
%DECOMPRESS% a -tzip "%OUTPUT_NAME%" "%OUTPUT_DOCS_PATH%"

::刪除多餘檔案
@echo off
echo step 4. delete tmp files
rd /s /q "%OUTPUT_DOCS_PATH%"
del "%TMP_BAT%"

goto end

:noPath
echo.
echo 未指定目標路徑
echo 可用托拉檔案方式建立路徑

:end
echo done.
echo.
pause----------------------------------------------------------------------------------------------------------

 參考資料
Using compc, the component compiler
Using the ASDoc tool
Creating ASDocs for Custom Adobe AIR Components

沒有留言:

張貼留言