【Flex】埋め込みアセットクラス

Adobe Flex 3 ヘルプ
Class - Adobe Flex 2 リファレンスガイド
( Flex3 では消えている記述が重要です )
Flex3 リファレンスガイド で消えている記述
画像を埋め込んで使用するのはあたりまえの作業ですが、
以下の記述が無いので、使い方を気づかない場合があります
1.たとえば、MXML コンパイラを使用して SWF ファイルを生成する場合、次のように埋め込みクラスを作成します。
2. 
3.     [Embed(source="bratwurst.jpg")]
4.     public var imgClass:Class;
5. さらに、これをインスタンス化するために、次のコードを追加します。
6. 
7.     var myImg:Bitmap = new imgClass();
インスタンス化する事によって、画像の属性を取得する事ができます
利用サンプル
1) ウインドウのタイトルアイコンとしてバインド
2) タスクトレイ用のアイコンとして登録
3) Canvas に書き込み
4) カレントディレクトリに png として書き込み
01.<?xml version="1.0" encoding="utf-8"?>
02.<mx:WindowedApplication
03.    xmlns:mx="http://www.adobe.com/2006/mxml"
04.    initialize="initData();"
05.    titleIcon="{imgSmile}"
06.>
07. 
08.<mx:Style>
09.WindowedApplication {
10.    backgroundGradientColors: 0,9044009;
11.}
12.</mx:Style>
13. 
14.<mx:Script>
15.<![CDATA[
16. 
17.    import mx.controls.*;
18.    import mx.events.*;
19.    import flash.filesystem.*;
20.    import flash.events.Event;
21.    import mx.graphics.codec.*;
22. 
23.    [Bindable]
24.    [Embed("smile.png")]
25.    private var imgSmile:Class;
26. 
27.    private var bmpdata:BitmapData = null;
28. 
29.    // *********************************************************
30.    // アプリケーションの初期化
31.    // *********************************************************
32.    private function initData():void {
33. 
34.        var img:Bitmap = new imgSmile();
35.        this.width = img.width * 2 + 30;
36.        this.height = img.height * 2 + 80;
37.        cvs.width = img.width;
38.        cvs.height = img.height;
39. 
40.        // タスクトレイ用のアイコンとして登録( 背景白 )
41.        bmpdata = new BitmapData(cvs.width,cvs.height,false,0xffffff);
42.        bmpdata.draw(img);
43.        var iconBitmap:Array = new Array();
44.        iconBitmap.push( new Bitmap(bmpdata) );
45.        this.nativeApplication.icon.bitmaps = iconBitmap;
46. 
47.        // Canvas へ書き込み( 背景透明 )
48.        bmpdata = new BitmapData(cvs.width,cvs.height,true,0x000000);
49.        bmpdata.draw(img);
50.        cvs.graphics.beginBitmapFill( bmpdata );
51.        cvs.graphics.drawRect(0, 0, cvs.width, cvs.height);
52.        cvs.graphics.endFill();
53. 
54. 
55.        // *****************************************************
56.        // カレントディレクトリを取得する為の処理です
57.        // *****************************************************
58.        NativeApplication.nativeApplication.addEventListener(
59.            InvokeEvent.INVOKE,
60.            appHandler
61.        );
62. 
63.    }
64. 
65.    // *****************************************************
66.    // カレントディレクトリはここで取得できます
67.    // *****************************************************
68.    private function appHandler(event:InvokeEvent):void {
69. 
70.        var path:String = event.currentDirectory.nativePath;
71. 
72.        // PNG として書き込み( 背景透明 )
73.        var enc:PNGEncoder = new PNGEncoder();
74.        var png:ByteArray = enc.encode(bmpdata);
75. 
76.        var fs:FileStream = new FileStream( );
77.        fs.open(new File( path + "\\smile2.png" ), FileMode.WRITE );
78.        fs.writeBytes( png, 0, png.length );
79.        fs.close();
80. 
81.    }
82. 
83. 
84.]]>
85.</mx:Script>
86. 
87.<mx:Canvas
88.    id="cvs"
89./>
90. 
91.</mx:WindowedApplication>