FLASH CS3中的FLA形式組件製作教程

下面給大家介紹下如何製作[*.fla]形態的組件(Component),
這種組件區別於SWC組件,和CS3自帶的組件一樣能夠雙擊進入組件裏面編輯.
//應該是CS3新增加的一種組件形態,以製作一個MyButton組件爲例子.
分如下幾個步驟:
1、首先創建一空白的ActionScript3.0的flash文檔,然後保存文件命名爲:"FLA_ComponentX".//名稱可以任意.
2、CTRL+F8,新建一空白剪輯,取名爲"Avatar",進入編輯,第一真上我們畫一矩形框(Stroke style我們選擇"hairline",最細的線條),不用填充,一定要記得設置座標爲(0,0),位置固定的.
3、CTRL+F8,繼續新建個空白剪輯,取名爲"NormalSkin",點開高級設置,把"導出ActionScript","導出到第一真"兩項打勾,class中填入"NormalSkin",最後把"啓動9-scale縮放的引導線"選項打勾,最後確定,進入編輯,畫一填充圓角矩形,設置顏色爲灰色,擺放位置(0,0),可以拖動9-scale縮放的引導線,如圖對齊,作用是讓圓角矩形進行所放的時候保持四個定位的角不變形,這個矩形用來做按鈕的普通模式的皮膚.
4、CTRL+F8,繼續新建個空白剪輯,同上,取名爲"OverSkin",點開高級設置,把"導出ActionScript","導出到第一真"兩項打勾,class中填入"OverSkin",最後把"啓動9-scale縮放的引導線"選項打勾,最後確定,進入輯,畫一填充圓角矩形,設置顏色爲紅色,擺放位置(0,0),這個矩形用來做按鈕的鼠標經過模式的皮膚.
5、CTRL+F8,新建個空白剪輯(這下我們建立的就是最終的按鈕組件,上面建立的都是這按鈕的組成部分),取名爲"MyButton",點開高級設置,把"導出ActionScript","導出到第一真"兩項打勾,class中填入"MyButton",然後確定,進入編輯,第一層取名爲"avatar",然後第一真上我們從庫中把"Avatar"元件拖放到場景中,放置到(0,0)位置,這一真的內容在我們最後運行組件的時候是看不到的,作用主要是用來控制整個組件的寬高.然後我們新建立一層,取名"skins",在第二真上我們把庫中的"NormalSkin"和"OverSkin"組件拖進來,位置可以隨意擺放,這上面的元件是我們將來使用組件的時候,雙擊進入能夠進行設置的.
6、點中庫中的"MyButton"元件,右鍵菜單中選"Component Definition"(組件定義)選項,會進入一窗口,把類名填上"MyButton",再把"diaplay in Components panel"選項打上鉤,"Tool tiptext"中填入組件名稱,我這裏填"MyButton".這裏還有設置組件的preview(預覽)效果還有圖標等,其他內容大家可根據需要自行設置.
7、到這步,我們會發現還缺少一個外部的自定義組件的代碼,也就是上面"MyButton"元件連接的"MyButton"類.由於類中導入了組件類,所以我們要設置FLASH CS3的classPath(類路徑),選編輯-->參數設置-->ActionScript-->ActionScript3.0,添加一新的類搜索路徑,我這裏爲"D:\Program Files\Adobe\Adobe Flash CS3\en\Configuration\Component Source\ActionScript 3.0\User Interface"
//大家根據各自情況來設置好路徑,新建ActionScript文檔,填入如下代碼:
/************MyButton.as**************/
package{
import flash.display.*;
import flash.events.*;
import flash.system.ApplicationDomain;
import fl.core.UIComponent;
public class MyButton extends UIComponent {
  private var nowSkin:MovieClip;
  private var thisDomain:ApplicationDomain;
  public function MyButton() {
   super();
   trace("MyButton");
  }
  override protected function draw():void {
   if (nowSkin==null) {
    thisDomain=loaderInfo.applicationDomain;
    var classDef
    try{
    classDef=thisDomain.getDefinition(getNormalSkinName());}
    catch(e:ReferenceError){
     trace("沒有在庫中找到相關的類!")
     return;
     }
    nowSkin=new classDef as MovieClip;
    nowSkin.addEventListener(MouseEvent.MOUSE_OVER,mouseOverHandler);
    addChild(nowSkin);
   }
   nowSkin.width=width;
   nowSkin.height=height;
  }
  protected function mouseOverHandler(e:MouseEvent):void{
   trace("over");
   removeChild(nowSkin);
   var classDef=thisDomain.getDefinition(getOverSkinName());
   nowSkin=new classDef as MovieClip;
   addChild(nowSkin);
本文轉自:http://www.5uflash.com/flashjiaocheng/Flash-cs3/1727.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章