Pay for Hesitation: Embed asset class

Pages

2008年4月6日 星期日

Embed asset class

[Embed(source="assets/logo.png")]
上面這行標籤你一定不陌生..

他的用法很酷,功能也非常強大!!!
它常常搭配下面這行用法,
private var Image:Class;

型態是Class,API的定義如下:
Package: Top Level
Class: public dynamic class Class
Inheritance Class: Inheritance Object

A Class object is created for each class definition in a program. Every Class object is an instance of the Class class.

用來宣告了一個高抽象的class變數,很像是polymorphism的用法。但我不確定他明確的稱呼是?
所以Embed asset class 可以載入資源並bind到這個class上。
有趣的是下面這行,
//前面我們自行定義的class 可以拿來new object而且用Bitmap的變數去接它~~
var img:Bitmap = new Image();

我不知道為什麼Bitmap可以接受Image class的instance.
(在java裡, 需先做downcasting,如: MyObject a = (MyObject)c.clone();
clone時會回傳Object Reference,需先downcasting成MyObject, 才可assign給MyObject物件)

很特別,但在ActionScript裡是相當常用的做法.



之所以說Embed asset class強大,
是因為它可以load 圖, swf, 音樂, 字型,還可以套用CSS!!!

如果load一張圖,不需做額外的處理(如剪裁,scale等..)
用下面這種作法是最乾淨俐落的..

你一定要看一下中文官方文件的例子,就會愛上Embed asset class這個用法
http://www.adobe.com/tw/devnet/flex/quickstart/embedding_assets/#EmbeddingImagesCSS

之前po過一篇Flex metadata tags
Embed asset class只是其中的一種,之前也介紹過bindable,威力也是相當強大..
我想Flex 4,metatdata flags應該會是重頭戲之一..
畢竟這是很多語言沒有的特色..

沒有留言: