多量の外部画像を、一気に読み込んで、それにスムージングをかけつつ Sprite などでラッピングしておいて、ボタンとして扱ったり伸縮させたり、あとからゴニョゴニョできるようにする、というよくあるやつ。
気づいたら毎回似たようなのイチから書いてるので自分用メモ。
並べ方がとか、ドラッグ機能とか、ローディングが無いとか、はサンプルなのでテキトー。ラッピングした Sprite に名前つけてるのは、getChildByName とかで、あとからどうにでも出来るように。
もっとこうすればいいじゃないか、アッタマ悪いなぁ、というコメントなんかいただけると感涙。
// ローダー
var imgLoader:Loader;
// 読むイメージの総数
var totalNum:uint = 25;
// カウンタ ※読み込むファイル名に合わせた初番
var cnt:int = 1;
// イメージまでのパス
var imgUrl:URLRequest;
// イメージを格納しておく配列
var imgArr = [];
// イメージをラップする Sprite
var _sp:Sprite;
/* イメージのロード
----------------------------*/
function imgLoad():void
{
imgUrl = new URLRequest("./pic" + cnt +".png");
imgLoader = new Loader();
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImgLoaded);
imgLoader.load(imgUrl);
}
/* ロードしたイメージの処理
----------------------------*/
function onImgLoaded(e:Event):void
{
cnt++;
var loadedImg:Bitmap = e.target.content as Bitmap;
// ビットマップをスムージング
loadedImg.smoothing = true;
// 配列に Sprite を追加
imgArr.push(loadedImg);
if(cnt <= totalNum)
{
imgLoad();
}
else
{
// イメージを全部読み終えた
imgLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onImgLoaded);
// ステージに並べる
layout();
}
}
/* ステージに並べる
----------------------------*/
var w:uint = 94; // 横幅間隔
var h:uint = 72; // 天地間隔
function layout():void
{
var _id:uint = 0;
for(var i:uint = 0; i < 5; i++)
{
for(var j:uint = 0; j < 5; j++)
{
imgArr[_id].x = j*w;
imgArr[_id].y = i*h;
_id++;
}
}
for(var k:uint = 0; k < totalNum; k++)
{
_sp = new Sprite();
_sp.name = "img"+k;
_sp.addChild(imgArr[k]);
addChild(_sp);
_sp.buttonMode = true;
_sp.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler);
_sp.addEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler);
}
}
function onMouseDownHandler(e:MouseEvent):void
{
var _t:Sprite = Sprite(e.target);
_t.startDrag();
}
function onMouseUpHandler(e:MouseEvent):void
{
var _t:Sprite = Sprite(e.target);
_t.stopDrag();
}
imgLoad();
こんな感じになる。
でもこのサンプルじゃ smoothing = true の効果分からないじゃないか...。

コメントする