Progression4で外部ファイルの使い回しを簡単に

Posted 2010年2月13日 | Auther dada | Category PC・デジタル | Tag タグ: , ,
Twitterにツイートする Facebookでシェアする はてなブックマーク

Progression4から搭載されたResource関連がとても便利なのでメモ。

これまでも外部ファイル(swf、画像、mp3など)を読み込んで使い回す
ということは出来ましたが、それなりに手間がかかりました。

Progression4からはそれらを管理するResource系のクラスが登場し、
かなりシンプルになったようです。

michinoko blogさんで書かれていたことを参考に書いてみました。

package{
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.net.URLRequest;
import flash.system.LoaderContext;
import jp.progression.commands.lists.SerialList;
import jp.progression.commands.Func;
import jp.progression.commands.net.LoadBitmapData;
import jp.progression.data.getResourceById;

public class MyLoadImage extends Sprite{

	public var _id:String;		// リソース格納ID

	/*********************
	 * 外部画像読み込み
	 */
	public function MyLoadImage( url:String, group:String, id:String ){
		_id = id;

		var serial:SerialList = new SerialList();

		// 画像読み込んでキャッシュに格納
		serial.addCommand( new LoadBitmapData( new URLRequest(url), {
			cacheAsResource:true, context:new LoaderContext(true),
			resGroup:group, resId:id
		}));

		// 貼り付け
		serial.addCommand( new Func( attachBitmap ));

		serial.execute();
	}

	/*********************
	 * 画像貼り付け
	 */
	protected function attachBitmap():void {
		// リソースからid指定で画像を取り出す
		var bmp:Bitmap = new Bitmap( getResourceById(_id).data );
		// 貼り付け
		this.addChild( bmp );
	}
}
}

こんな感じでSpriteのサブクラスを作っておいて下記のように呼び出します。
※動作確認してません。

var loadImage:MyLoadImage = new MyLoadImage( "hoge.jpg", "images", "image0" );
this.addChild( loadImage );

例えばこのSpriteをクリックした時に、
idを取得して画像を再利用するなんてことも簡単にできますね。

protected function onImageClick( e:MouseEvent ):void{
	var id:String = e.currentTarget._id;
	var bmpdata:BitmapData = getResourceById(id).data;

	~取り出したBitmapDataを再利用~
}

Progressionのこういった便利ライブラリはとても重宝しています。
開発者の方々に心から感謝!!!

Progression4のバージョンに注意

上記サンプルでは「resGroup」、「resId」でグループ、IDを指定していますが、
これらは「4.0.1 Public Beta 1.3」から使えるようになります

自分は1.2だったのでハマりましたw

1.3からはWebConfig()の引数も変わったので注意が必要です。
自分はIndex.asで下記のように指定しています。

// 1.2の場合
super( "index", IndexScene,
	new WebConfig( false, false, false ) );
↓
// 1.3の場合
super( "index", IndexScene,
	new WebConfig( "basicLibraryLicense", false, false, false ) );
Adobe Flash CS4 詳細!ActionScript3.0入門ノート[完全改訂版](CD-ROM付) Adobe Flash CS4 詳細!ActionScript3.0入門ノート[完全改訂版](CD-ROM付)

ソーテック社 2009-08-01
売り上げランキング : 9363
おすすめ平均

Amazonで詳しく見る by G-Tools

関連する記事

No Comments »

No comments yet.

Leave a comment

カテゴリー