Ameba Pigg Sample
http://wonderfl.net/c/2lWR
// http://wonderfl.net/c/2lWR
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.events.Event;
[SWF(width="465", height="465", frameRate="30", backgroundColor="#FFFFFF")]
public class Index extends Sprite
{
private var multiLoader:MultiLoader;// ロード
private var assigneContainer:AssigneContainer;// 着せ替えコンテナ
private var itemBtn:ItemBtn;// アイテムボタン
//画像のパス
private var itemURLArr:Array = ["http://assets.wonderfl.net/images/related_images/d/df/df7d/df7d681ee045b0a880a4e29b17dd89b49e8f29cc",// 服のボタンのURL
"http://assets.wonderfl.net/images/related_images/8/8d/8db1/8db120b48c6cd0df2826666051dab32687bb0983",// キャラクターのURL
"http://assets.wonderfl.net/images/related_images/8/87/87b1/87b1368ba52920859e04095126cf9194849f229f",// 服のベースのURL
"http://assets.wonderfl.net/images/related_images/f/f4/f4b5/f4b57a28591168f37251205710e77fad2c4db7a6"];// 服のURL
// ▼提供素材URL
// http://www.cyberagent.co.jp/img/media/kayac/piggitem.zip
public function Index()
{
// 複数のイメージのロード開始
multiLoader = new MultiLoader(itemURLArr);
multiLoader.addEventListener(Event.COMPLETE, loadComplete);
}
// ロード完了
private function loadComplete(event:Event):void
{
multiLoader.removeEventListener(Event.COMPLETE, loadComplete);
// 配列の画像データを配分
var itemBtnBmp:Bitmap = multiLoader.data.shift();
var assigneBmpArr:Array = multiLoader.data;
// アイテムボタンの設定と画像配置
itemBtn = new ItemBtn(itemBtnBmp);
addChild(itemBtn);
itemBtn.x = (stage.stageWidth-itemBtn.width)/2
itemBtn.y = stage.stageHeight-itemBtn.height-40;
// 着せ替えコンテナの設定と画像配置
assigneContainer = new AssigneContainer(itemBtn, assigneBmpArr);
addChild(assigneContainer);
assigneContainer.x = (stage.stageWidth-assigneContainer.width)/2
assigneContainer.y = 80;
}
}
}
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Graphics;
import flash.display.Shape;
import flash.display.Loader;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.system.LoaderContext;
// ロード
class MultiLoader extends Loader
{
private var _count:uint = 0;
private var _urlArr:Array = [];
private var _data:Array = [];
public function MultiLoader(urlArr:Array):void
{
_urlArr = urlArr;
// ロード開始
dataLoad(_urlArr[_count]);
}
public function dataLoad(url:String):void
{
var context:LoaderContext = new LoaderContext(true);
var _loader:Loader = new Loader();
_loader.load(new URLRequest(url), context);
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
}
private function loadComplete(event:Event):void
{
event.currentTarget.removeEventListener(Event.COMPLETE, loadComplete);
_data.push(event.currentTarget.content);
// ロードしたデータをカウント
_count++;
if(_urlArr.length > _count){
dataLoad(_urlArr[_count]);// 次のデータを読み込み
}else if(_urlArr.length <= _count){
dispatchEvent(new Event(Event.COMPLETE));// ロード完了
}
}
public function get data():Array{ return _data; }
}
// 着せ替えコンテナ
class AssigneContainer extends Sprite
{
private var _itemBmp:Bitmap;
public function AssigneContainer(btn:ItemBtn, bmpArr:Array)
{
// キャラクターを配置
addChild(bmpArr[0]);
// 下着を配置
addChild(bmpArr[1]);
bmpArr[1].x = 38;
bmpArr[1].y = 90;
// アイテムの設定
_itemBmp = bmpArr[2];
addChild(_itemBmp);
_itemBmp.x = 30;
_itemBmp.y = 89;
_itemBmp.visible = false;
// ボタンのイベントリスナー
btn.callback = assigne;
}
// アイテムのイメージを表示、非表示
public function assigne():void
{
_itemBmp.visible = !_itemBmp.visible;
}
}
// ボタン
class ItemBtn extends Sprite
{
private var _func:Function;
public function ItemBtn(bmp:Bitmap)
{
addChild(bmp);
// ボタンのイベント設定
buttonMode = true;
addEventListener(MouseEvent.MOUSE_UP, clickAction)
}
public function set callback(func:Function):void
{
_func = func;
}
private function clickAction(event:MouseEvent):void
{
// コールバック
_func.apply();
}
}