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

Adobe Flex 3 ヘルプ
Class - Adobe Flex 2 リファレンスガイド
( Flex3 では消えている記述が重要です )
Flex3 リファレンスガイド で消えている記述
画像を埋め込んで使用するのはあたりまえの作業ですが、
以下の記述が無いので、使い方を気づかない場合があります
たとえば、MXML コンパイラを使用して SWF ファイルを生成する場合、次のように埋め込みクラスを作成します。

     [Embed(source="bratwurst.jpg")]
     public var imgClass:Class;
 さらに、これをインスタンス化するために、次のコードを追加します。

     var myImg:Bitmap = new imgClass();
インスタンス化する事によって、画像の属性を取得する事ができます
	trace( myImg.width );
	trace( (new imgClass()).width );
利用サンプル
1) ウインドウのタイトルアイコンとしてバインド
2) タスクトレイ用のアイコンとして登録
3) Canvas に書き込み
4) カレントディレクトリに png として書き込み
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication
	xmlns:mx="http://www.adobe.com/2006/mxml"
	initialize="initData();"
	titleIcon="{imgSmile}"
>

<mx:Style>
WindowedApplication {
	backgroundGradientColors: 0,9044009;
}
</mx:Style>

<mx:Script>
<![CDATA[

	import mx.controls.*;
	import mx.events.*; 
	import flash.filesystem.*;
	import flash.events.Event;
	import mx.graphics.codec.*;

	[Bindable]
	[Embed("smile.png")]
	private var imgSmile:Class;

	private var bmpdata:BitmapData = null;

	// *********************************************************
	// アプリケーションの初期化
	// *********************************************************
	private function initData():void {

		var img:Bitmap = new imgSmile();
		this.width = img.width * 2 + 30;
		this.height = img.height * 2 + 80;
		cvs.width = img.width;
		cvs.height = img.height;

		// タスクトレイ用のアイコンとして登録( 背景白 )
		bmpdata = new BitmapData(cvs.width,cvs.height,false,0xffffff);
		bmpdata.draw(img);
		var iconBitmap:Array = new Array();
		iconBitmap.push( new Bitmap(bmpdata) );
		this.nativeApplication.icon.bitmaps = iconBitmap;

		// Canvas へ書き込み( 背景透明 )
		bmpdata = new BitmapData(cvs.width,cvs.height,true,0x000000);
		bmpdata.draw(img);
		cvs.graphics.beginBitmapFill( bmpdata );
		cvs.graphics.drawRect(0, 0, cvs.width, cvs.height); 
		cvs.graphics.endFill();


		// *****************************************************
		// カレントディレクトリを取得する為の処理です
		// *****************************************************
		NativeApplication.nativeApplication.addEventListener(
			InvokeEvent.INVOKE,
			appHandler
		);

	}

	// *****************************************************
	// カレントディレクトリはここで取得できます
	// *****************************************************
	private function appHandler(event:InvokeEvent):void {

		var path:String = event.currentDirectory.nativePath;

		// PNG として書き込み( 背景透明 )
		var enc:PNGEncoder = new PNGEncoder();
		var png:ByteArray = enc.encode(bmpdata);

		var fs:FileStream = new FileStream( );
		fs.open(new File( path + "\\smile2.png" ), FileMode.WRITE );
		fs.writeBytes( png, 0, png.length );
		fs.close();

	}


]]>
</mx:Script>

<mx:Canvas
	id="cvs"
/>

</mx:WindowedApplication>