as3.0 使用【Embed】標簽插入外部資源


  • 嵌入GIF,PNG,JPEG,MP3文件

package
{
   import flash.display.*;
   public class GIFEmbed extends Sprite 
   {
       [Embed(source = "../assets/talapetra.gif")]
       private var theClass:Class;
       public function GIFEmbed () 
       {
           var displayObj:DisplayObject = new theClass(); 
           addChild (displayObj); 
       }
   }
}

代碼中的高亮行包括了源屬性,指示了嵌入的名稱和資源的路徑。你可以使用絕對路徑或者文檔文件的相對路徑來包含嵌入的描述。在這個示例中,這個名稱為GIFEmbed.as的ActionScript類指示了定位到命名為\assets的文件夾中,這個文件夾包含了talapetra.gif的圖片文件。

注意:[Embed]元數據標簽可以有另外一個可選屬性,mimeType,它允許你指定鏈接資源的MIME類型。我將在后面再具體的討論這個屬性。

ActionScript代碼的順序非常重要。你必須在聲明變量前添加[Embed]元數據標簽,而且這個變量的類型會是Class。在下面的代碼片段中,[Embed]元數據標簽中一個成為theClass,類型聲明為Class的私有變量前使用:

[Embed(source = "../assets/talapetra.gif")]  
   private var theClass:Class;

在名稱為GIFEmbed的函數內部,一個新的類型為DisplayObject命名為displayObj的變量被用來實例化theClass為一個新的DisplayObject。下一行使用addChild方法將displayObj添加到了顯示列表當中,並在舞台上渲染:

var displayObj:DisplayObject = new theClass(); 
    addChild (displayObj);

參考示例文件,查看文件夾結構,確認GIFEmbed.as類文件和名稱為 talapetra.gif的GIP圖片的路徑(放在assets目錄中)。

[Embed]元數據標簽帶有兩個屬性: Source:(必選的)使用這個屬性來確認嵌入資源的名稱和路徑。如果你嵌入了一個元件,你可以用元件的關鍵詞確定元件認嵌入到SWF中的名字。 mimeType:(可選的)使用這個屬性來確定嵌入資源的MIME類型。如果這個屬性沒有設置,Flash會在源屬性中根據導入資源文件的擴展名載入合適的類型。

Flash CS4專業版支持與Flex一樣的一系列MIME類型

  • 在幀腳本中使用[Embed]標簽

同前面列出的過程一樣,元數據也可以應用到幀腳本。在這段中,我會描述怎么利用[Embed]標簽來嵌入元數據到幀腳本中。如果你跟着示例文件,請參閱<Embed on Frame Script>目錄下的文件:

1、通過選擇"文件">"新建">"Flash文件(ActionScript 3.0)"菜單來創建一個新的Flash CS4文件;

2、將這個Flash文件保存為GIFEmbed.fla。

3、選擇圖層1的第一幀並打開動作面板("窗口">"動作")。

4、拷貝如下代碼,並粘貼到腳本窗口:

[Embed(source="../assets/talapetra.gif")] 
   var theClass:Class;
   var displayObject:DisplayObject = new theClass(); 
   addChild(displayObject);

5、重復前面一個段落的10-13步測試SWF文件,並更新Flex SDK目錄庫路徑來添加flex.swc文件。

  • 從SWF文件中嵌入一個元件

package
{
   import flash.display.*;
   import flash.events.MouseEvent;
   import flash.geom.Rectangle;
   public class SWFEmbed extends MovieClip 
   {
       public var displayObj:DisplayObject;
       [Embed(source="Movie.swf", symbol="Slice9")] 
       var theClass:Class;
       public function SWFEmbed()
       {
            displayObj = new theClass(); 
            addChild(displayObj);
            displayObj.x = 200; 
            displayObj.y = 220; 
       }
   }
}

在這段代碼中,[Embed]元數據標簽使用了source參數來確認將被嵌入的SWF文件的名稱和路徑。symbol參數來確認特殊元件的名稱,這個元件是從source參數關聯的SWF文件中嵌入的。

  • 使用[Embed]標簽嵌入字體

除了嵌入圖片文件,SWFs,還有SWFs中的元件以外,[Embed]元數據標簽還可以嵌入OpenType和TrueType字體到Flash文件中。在這個段落中,我將演示怎么使用[Embed]元數據標簽在Flash CS4中嵌入字體。這篇文章將定你已經安裝了Arial Bold字體在你的系統中。如果你沒有這個字體,你可以從 SearchFreeFonts.com或者類似網站上購買它。

注意:[Embed]元數據標簽僅僅支持類和成員變量,如果你嘗試在函數前使用[Embed]標簽,如下的編譯錯誤將會顯示:"Embed is only supported on classes and member variables."(Embed僅僅支持類和成員變量)

如果你是跟隨教程學習,請參閱示例文件中TrueType目錄。

1、選擇"文件">"新建">"ActionScript文件",創建一個新的ActionScript文件。

2、保存文件為FontClass.as。

3、拷貝並粘貼如下代碼到腳本窗口中:

package 
{
    import flash.text.*;
    import flash.display.MovieClip;
    public class FontClass extends MovieClip 
    {            
     [Embed(source="Arial Bold.ttf", fontName="myFont", fontWeight="bold", advancedAntiAliasing="true", mimeType="application/x-font")]
     private var theClass:Class;
     public function FontClass ()
     { 
            var t:TextField=new TextField();
            t.embedFonts = true; 
            var textFormat:TextFormat=new  TextFormat();
            textFormat.size = "30";
            textFormat.font = "myFont";
            t.text = "[Embed] metadata rocks!!!";
            t.width = 500;
            t.setTextFormat (textFormat); 
            addChild (t);  
     } 
    } 
}


上面代碼中的高亮部分,[Embed]元數據標簽中使用到如下的參數來嵌入一個Arial bold字體:

Source: 這個參數指出了font文件的位置。如果願意,你可以使用systemFont參數確認名稱而不是source來嵌入系統字體。 fontName: 這個參數指明了嵌入字體的名稱,字體的名稱是一個唯一標識,所以你可以通過名稱來調用字體。 mimeType: 這個參數描述了嵌入元數據的MIME類型。因為你在這個例子中嵌入了一種字體,你可以設置MIME類型為"application/x-font"。 fontWeight: 這個參數表明了字體的粗細,如粗體或者正常。

注意:如果字體有粗細,並且你沒有在[Embed]元數據標簽中包含fontWeight參數,當測試SWF文件是,你會看到如下編譯錯誤:

Exception during transcoding: Font for alias 'myFont' with plain weight and style was not found at... (意外的轉換:帶有粗細和樣式的別名為'myFont'的字體沒有被找到在...)

隨着嵌入字體的路徑(如圖11)。

  • 使用嵌入的XML文件

在這篇文章的前面段落中,我講述了使用 [Embed] 元數據標簽嵌入圖形文件,SWF文件,SWF文件中元件,還有字體等到SWF中。所有這些可能性都是非常有用的,不過還有另外一種類型的文件也可以采用 [Embed] 元數據標簽嵌入到SWF中:XML文件。

我保留最好的到最后,這是因為這個功能對於將外部數據導入到SWF中非常用用 -- 而且很直接地就可以完成。根據嵌入的XML數據,你可以做一些有趣的事情,為將來的工程記住這個是一個極好的提醒。

下面的示例提供了使用 [Embed] 元數據標簽嵌入一個XML文件的一個說明。如果你跟隨教程學習,請參閱示例文件的XML目錄。

1、選擇"文件">"新建">"Flash文件(ActionScript 3.0)"創建文件,並保存文件為XMLLoader.fla。

2、選擇"文件">"新建">"ActionScript文件"創建文件,並保存文件為 XMLLoader.as。

3、當XMLLoader.as被激活,拷貝並粘貼如下如下代碼到腳本窗口:

package 
{
    import flash.display.*;
    import flash.utils.ByteArray;
    public class XMLLoader extends Sprite
    {
      [Embed(source = "training.xml",mimeType = "application/octet-stream")]
      private var theClass:Class;
      public function XMLLoader ()
      {
           var xmlObj:Object = new theClass();
           trace(xmlObj);
      }
     }
}

注意:當嵌入XML數據時,你必須將mimeType參數設置為"application/octet-stream"。 Flash不能通過XML文件的擴展名檢測正確的MIME類型,所以無論什么時候你嵌入XML數據時都要設置mimeType參數。

4、將代碼粘貼到腳本窗口后,確保保存XMLLoader.as文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM