首頁 > ActionScript, FLEX, 程式設計 > 從 FLASH 中繪製元件,並匯出 SWC 檔轉至 FLEX 當類別使用

從 FLASH 中繪製元件,並匯出 SWC 檔轉至 FLEX 當類別使用

2009年9月7日  瀏覽次數 : 5,608

寫 FLEX 的時候,常常會使用到圖檔,但是支援的檔案 JPG GIF 以及 PNG 都是點陣圖檔,這些圖檔在縮放的時候都會造成一定比例的失真,這時候我們需要使用 FLASH 繪製的向量圖檔,可是呢,如果要使用 SWF 檔案就必須要使用 SWFLOADER 了,如果這些圖案要做互動,那就挺麻煩了,要在 FLASH 內寫好呼叫事件,其實有更方便的做法。

image 圖 : 點陣圖最大的缺點就是放大後會失真

其實,在 FLASH 中繪製元件並且轉 SWC 給 FLEX 使用還有很多好處,第一個當然是向量化的圖件,這點當然是必須使用,第二,可以使用 FLASH 中的九宮格定位法,但是使用上還有很多要注意的,第三點就是可以使用字定形狀或是自訂觸發區域的按鈕。

這邊就稍微試試看放大的效果,以及自訂觸發區域的按鈕吧。先來看看結果如何。

showExample3[1]

回歸正題,要將 FLASH 繪製的檔案給 FLEX 用,你必須依照以下的步驟進行

STEP 1 : 下載 FLEX 組件套件並安裝

可以參考這邊文章 使用 FLASH 和 FLEX ,我們先到官方下載

Flex Skin Design Extensions & Flex Component Kit for Flash CS3

必要下載的 FLEX SKIN DESIGN EXTENSION FOR FLASH 以及 FLEX COMPONENT KIT FOR FLASH CS3 PROFESSIONAL ,下載好請安裝。

主要的是 FCK 一定要安裝,不然無法匯出 UIMovieClip 類別

STEP 2 : 在 FLASH 中將元件轉為 FLEX 的可視元件

1. 將匯入的 AI 向量圖案轉成 movieClip ( 注意,請選擇影片,我拍照拍錯了 )

image

2. 將MOVIECLIP 轉換為 UIMovieClip

先選好要匯出的元件

image接著按下功能列的  命令  -> 將元件轉換成 FLEX 組件

image轉換完成之後,你應該會看到如下的圖片

 image

看到那個小小 FX 圖案就可以了。

STEP 3 : 將 FLASH 發布成 SWC 元件檔

選擇檔案的發布設定

image

點選 FLASH ,並且將 會出 SWC 打勾

image

完成後,發佈,就會看到發佈後會多一個 SWC 檔案。

image

STEP 4 : 將 SWC 在 FLEX 中實作

將 SWC 放入 FLEX 專案的 LIB 資料夾中

image

接著就可以在 FLEX 輸入剛剛我們設定的類別

image

如此一來我們就大功告成了

  image

 

其實,使用 FLASH 製作的元件還有很多好處,例如我範例中,使用了再 FLASH 製作的按鈕,另外在 FLEX 中製作偵聽事件,這樣子就可以製作奇形怪狀的按鈕了

image

朋友可以打開範例玩看看

另外補上原始碼

case0904.mxml

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" fontSize="14" xmlns:local="*" creationComplete="aaa()">
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			private function aaa():void{
 
				var a:SimpleButton = this.img2.getChildAt(1) as SimpleButton;
				a.addEventListener(MouseEvent.CLICK,bbb);
			}
			private function bbb(event:MouseEvent):void{
 
				Alert.show("你點擊到 FLASH 內的按鈕囉");
 
			}
		]]>
	</mx:Script>
	<mx:HBox width="100%" horizontalAlign="center">
		<mx:Image id="img1" source="img/case1.png" width="100" height="151"/>
		<local:CaseMC id="img2" width="100" height="151"/>
	</mx:HBox>
	<mx:ApplicationControlBar dock="true" horizontalAlign="center">
		<mx:Button label="放大" click="this.img1.scaleX=3;this.img1.scaleY=3;this.img2.width=300;this.img2.height=453;"/>
		<mx:Button label="縮小" click="this.img1.scaleX=1;this.img1.scaleY=1;this.img2.width=100;this.img2.height=151;"/>
	</mx:ApplicationControlBar>
 
</mx:Application>

Random Posts

Loading…

:: 把這篇好文推到書籤網站與更多人分享吧 ::
  • funp
  • Hemidemi
  • YahooKimo
  • Google
  • udn
  • Haohao
  • Live

相關文章 :

Ausir ActionScript, FLEX, 程式設計 , , , , ,

  1. 2009年9月8日10:30 | #1

    怎麼沒有拿我帥帥的照片來用。哈~~

  2. 2009年9月8日10:30 | #2

    你這篇算是廣告文嗎@@

  3. 2009年9月8日10:44 | #3

    呵,中間還亂入教不落的LOGO!
    這是不小心手滑的嗎?

  4. 2009年9月8日10:57 | #4

    @scorpio

    你的照片喔 = = 想太多了~
    如果我拿你的照片來當按鈕的話
    我的滑鼠應該會變成拳擊手套

    @拆組達人

    哈哈~~ 因為本來的圖片不見了 = =
    所以就亂入一下

  5. 2009年9月9日23:13 | #5

    我也是看到一半突然發現…
    咦!這是在幫阿湯哥的部落格打廣告嗎?XD

    話說…
    1. http://www.corausir.org/ 會自動轉向 http://blog.corausir.org/

     但是 http://corausir.org/ 會出現主機商頁面,是不是要需要修改一下設定啊?

     這個 Bug 很久了說…每次直接打 http://corausir.org/ 出來的畫面都會冏掉= =”

    2. 阿默 & Yeh 組羊兩位大大的頁面已經放了一個多月了…

     但是遲遲沒更新也沒有他們的著作出現,等很久了啊…

     什麼時候可以看到他們出現呢?

  6. 2009年9月14日14:01 | #6

    @Mike

    第一點是打廣告嗎~?^^ 也不是吧 因為那個 LOGO 是我們設計的阿~~

    再來就是

    話說 1. 這個部份我到是沒有發現啦 ^^ 我想說明字那麼難計 應該不會有人直接打才是..
    我在連去 HM 設定一下

    話說 2. 阿默最近 CASE 好多 = = 而且他好像還要出書,真的是快燒光了~,組羊也是處理一個比較麻煩的 CASE ,不過很多 FLEX 的資訊目前都是 組羊找出來的,只是由我代 PO ,至於出現的時間點,施主這個問題可能要在稍稍稍稍後~~ ^^” 真是不好意思啦

  7. Henry
    2009年9月18日07:34 | #7

    HELLO~
    首先:這是一篇很好的教學

    我因為一個問題苦找不到方法
    好不容易看到您的教學
    跟我想要的已經很接近了
    不過還是差一點
    所以發問一下
    問題:
    我有一個FLA 主要是動畫 (所有動畫都用AS寫成)
    程式是main.as 在FLA中的document class有定義 main
    所以FLA編譯成SWF後會自動執行main中定義的函數

    另外我有一個用FLEX寫好的程式,主要是控制SWF裡面的參數
    就是FLEX用一些UI,然後選好參數後丟到SWF裡面的程式去產生動畫
    EX:
    SWF是一個AS,畫圓圈,需要一個參數”半徑”
    然後FLEX有一個文字輸入盒 給USER輸入半徑(radius)
    然後一個按鈕 按下去後呼叫SWF裡面的 draw_circle(radius)
    並在FLEX應用程式的指定區域顯示

    所以我需要把SWF插入到FLEX中,然後想辦法呼叫SWF裡面的函數跟傳遞變數

    我試過網路上找到的方法,利用SWFLoader
    當我把我的程式寫在主影格內,這方法是OK的
    但是如果是利用document class的時候,FLEX是呼叫不到SWF裡面的函數的

    所以不知道您有沒有遇過這個問題
    還是另有高手知道如何解決
    請給小弟一點指引
    我已經GOOGLE到不知道如何是好

    感謝各位先進
    Henry

  8. 2009年9月18日11:12 | #8

    @Henry

    我之前也有使用過把 在 DOC CLASS 寫的程式
    要在 FLEX 使用也有些許問題~
    因此後來我就直接在 FLEX 裡面寫了 QQ

    如果是用 AS 畫圈圈 可以在 FLEX 裡面畫阿 XD

    ANYWAY 這部分因為我也沒用過
    而我在看 FCK 的說明
    他是說 AS 也會一起轉為 SWC 元件~ 不知道你是否成功 ?

  9. kenshin
    2010年2月8日16:34 | #9

    請問一下
    AdobeExtensionManager這個安裝完後,FlexComponentKit.mxp這個沒有辦法裝,副檔mxp點二下會開記事本,有哪邊設定錯嗎??

  10. 2010年2月8日16:36 | #10

    @kenshin

    檢查一下 WINDOWS 的檔案連結是不是 MISS 了
    因為只要有裝 CS3 OR CS4 都可以直接執行喔

    不然就是開啟擴充管理員 直接選安裝那個 MXP 檔案

  11. AoobtDs
    2010年2月21日10:38 | #11

    只想說聲謝謝! 你的部落格對我幫助很大~
    因為你的部落格讓也我想開一篇教學的部落格。

  12. 2010年2月23日15:07 | #12

    @AoobtDs

    說不上甚麼教學
    不過就分享一些心得而已~

    如果有開教學部落格記得也分享給我們知道一下呢 ^^

  13. 幫幫
    2010年2月24日18:44 | #13

    您好~
    不好意思請問
    我匯出SWC的按鈕檔案
    在FLEX匯入都會跑位.或者動態不動
    不知您是否有遇過相同情形?
    謝謝您

  14. 2010年2月24日20:44 | #14

    @幫幫

    有可能是選錯類型等等

    會出 SWC 的部分還要多嘗試~~

  1. 本篇文章目前尚無任何 trackbacks 和 pingbacks。