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>
|
|