In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: Ameba Pigg Sample

Get Adobe Flash player
by uranodai 08 Apr 2011
// forked from ahn's Ameba Pigg Sample
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-85;
            
            // 着せ替えコンテナの設定と画像配置
            assigneContainer = new AssigneContainer(itemBtn, assigneBmpArr);
            addChild(assigneContainer);
            assigneContainer.x = (stage.stageWidth-assigneContainer.width)/2
            assigneContainer.y = 140;
        }
    }
}
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(call:Object, 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;
        
        // ボタンのイベントリスナー
        call.addEventListener("CLICK", assigne);
    }
    
    // アイテムのイメージを表示、非表示
    private function assigne(event:Event):void
    {
        if(_itemBmp.visible){
            _itemBmp.visible = false;
        }else{
            _itemBmp.visible = true;
        }
    }
}
// ボタン
class ItemBtn extends Sprite
{
    public function ItemBtn(bmp:Bitmap)
    {
        addChild(bmp);
        
        // ボタンのイベント設定
        buttonMode = true;
        addEventListener(MouseEvent.MOUSE_UP, clickAction)
    }
    private function clickAction(event:MouseEvent):void
    {
        // イベント発信
        dispatchEvent(new Event("CLICK"));
    }
}