feb19.jp blog - life is creative!

AS3で読み込んだ外部画像にスムージングを適用する

ブックマークに追加する tags:  

Papervision3D 2.0 GreatWhiteで空間に浮かぶカード100枚

AS3にはBitmap.smoothingというプロパティがあるので、これをtrueにするだけで読み込んだビットマップに対してスムージングを適用することが可能。AS2は意外とめんどくさい

Loader.contentLoaderInfoのEvent.COMPLETEイベントで、Loaderインスタンスの中身(.content)をBitmap()でBitmapインスタンス化して、それに対してsmoothing = true。

実例だと以下みたいな感じですね。

まず、下記のコードをSmoothingBitmapLoader.asという名前で保存してください。

package {
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
	public class SmoothingBitmapLoader extends Sprite {
		public static const INIT = "initLoad";
		private var imgbase;
		private var imgLoader;
		public function SmoothingBitmapLoader(url){
			imgbase = new Sprite();
			imgLoader = new Loader();
			imgLoader.load(new URLRequest(url));
			imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
			addChild(imgbase);
		}
		private function onCompleteHandler(e:Event){
			imgbase.addChild(imgLoader);
			var bmp = Bitmap(imgLoader.content);
			bmp.smoothing = true;
			
			dispatchEvent(new Event(INIT));
		}
	}
}

次に、Flashの1フレーム目に下記のコードを記述してください。.flaファイルの保存場所はasファイルと同ディレクトリで。

var a = new SmoothingBitmapLoader("test.jpg");	// exsample
a.addEventListener(SmoothingBitmapLoader.INIT, onInit);
function onInit(e){
	addChild(a);
	trace("init");
}

"test.jpg"を読みに行こうとするので、同ディレクトリになにか適当なjpgファイルを置いてみてください。

画像を読み込み、スムージングし、表示しています。

これをたとえば、rotationしても、scaleX、scaleYしても、あらまぁ、スムージングされてますね。いい感じです。

ただ、スムージングされているビットマップはご想像の通りマシン負荷が大きいので要注意です。

alphaなどの値をトゥイーンしてフェードインするみたいなトランジションで画像を出そうというならば、特に大きな画像の場合、アホみたいに負荷がかかるので、このトゥイーン中は、.smoothingをfalseにしておいて、トゥイーンが終わったらtrueにする、みたいなやり方がいいかと思います。

ただ、そのfalse/trueを変更する瞬間、スムージングがオフからオンになった時、画像が「カチっ」と変化するので、モーション的にどうかみたいな検討もした上で、ですが。

2007年12月28日22:02

Webデザインブログ

「AS3で読み込んだ外部画像にスムージングを適用する」の関連エントリー

 iTunes Store(Japan)

コメント (1)

taka:

takaです。

ご教授をお願い致します。

下記部分につきまして"test.jpg"を読込む仕様となっているとのことですが、XMLにより外部画像を読込んでいる場合は何を指定すればよいのでしょうか?


var a = new SmoothingBitmapLoader("test.jpg"); // exsample
a.addEventListener(SmoothingBitmapLoader.INIT, onInit);
function onInit(e){
addChild(a);
trace("init");
}

コメントを投稿

トラックバック

このエントリーのトラックバックURL:
http://feb19.jp/mt/mt-tb.cgi/123

この一覧は、次のエントリーを参照しています: AS3で読み込んだ外部画像にスムージングを適用する:

» AS3.0事始め。スライドショーを作ってみた 送信元 トリアエズぶろぐ
いままで納期・時間の問題とかであえて避けてきたActionScript3.0。やっと重い腰を上げてスライド... [詳しくはこちら]

Navigation

古:Papervision3D 2.0 GreatWhiteで空間に浮かぶカード100枚
新:広松木工の7段チェスト&トレイ - SONO Chest Tray 028
トップページ

Recently Entries
Flash 上でパブリッシュしたとき、型宣言されていない変数・関数があったら警告を出す
Flex SDK (mxmlc)や Flex Builder とかで...
Flash Builder 4 Standard 導入
色々メモリリークチェックとか出来る Premium は必要になってか...
Mac でファイルの関連付けを変える(Mac で AIR アプリがアップデート出来ないを解決する方法)
ファイルを右クリックして「情報を見る」を選び、表示されたウィンドウの...
Mac OS X 10.6 Snow Leopard から入ってるフォント「Menlo」がコーディング作業にいい感じ
Xcode でコード書いているとき、Eclipse でコード書くより...
AIR で JSON 形式ファイルの入出力
AIR 祭り開催中。今回はファイル入出力。AS3 で扱っている Ob...
Adobe CS5 ティザーサイトオープン
カウントダウンが始まっています。いよいよ CS5 ですね。globa...
AIR でファイルがドラッグアンドドロップされたことを NativeDragEvent で検知する
最近また AIR が楽しい気がして触っているのですが、 Google...
iPhone アプリ "iBeat - BPM Counter" を発売しました & iPhone インタラクションデザインについて
BPM 計測アプリです。既に似たようなアプリはいくつか発売されている...
AS3 の演算子 ||= について
AS3 だけでつかえるものではないのですが、AS3 での動作を確認し...
iPhone SDK 「カテゴリ」について+NSString の空白文字を除去する
Objective-C では、高位のフレームワークで、低位のフレーム...