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: ネタ帳デラックス001練習

/**
 * Copyright Takayuki.Yamazaki ( http://wonderfl.net/user/Takayuki.Yamazaki )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/gPIi
 */

// forked from ug24k8's ネタ帳デラックス001練習
package {
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.BitmapDataChannel;
    import flash.display.BlendMode;
    import flash.display.Sprite;
    import flash.display.Loader;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.geom.Point;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.system.LoaderContext;
    
    public class NetaCho001 extends Sprite {    

        // RGBボタン
          private var r_btn:Sprite;
         private var g_btn:Sprite;
         private var b_btn:Sprite;

        // RGBチャンネルのビットマップ
        private var rBmp:Bitmap;
        private var gBmp:Bitmap;
        private var bBmp:Bitmap;
        
        // ビットマップを左・中・右に移動させるときのx座標
        private var lx:Number;
        private var cx:Number;
        private var rx:Number;
        
        // 赤緑青チャンネルのビットマップ到達点とするx座標
        private var rX:Number;
        private var gX:Number;
        private var bX:Number;
        
         public function NetaCho001() {

             // 画像
             // 素材は「フリー素材/花・華・はな」よりお借りしました。
             // http://yuyusya.hp.infoseek.co.jp/hana-sozai.html 
            
            // 画像はhttp://assets.wonderfl.net/~じゃないとダメっぽい
            // Nicolasさんに感謝。
             var image_url:String = "http://assets.wonderfl.net/images/related_images/d/d0/d040/d040fecb6fc53edd51159d2499f5c5de0546d8f3";
            var urlReq:URLRequest = new URLRequest(image_url);
            var loader:Loader = new Loader();           
            loader = new Loader();           
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComp);
            loader.load(urlReq, new LoaderContext(true));
        
            // add 3 color butoons

             r_btn = new Sprite();
             r_btn.buttonMode = true;              
            r_btn.graphics.beginFill(0x00FFFF);
            r_btn.graphics.drawCircle(150, 350, 10);
            addChild(r_btn);
               
                g_btn = new Sprite();
                g_btn.buttonMode = true;
            g_btn.graphics.beginFill(0xFF00FF);
            g_btn.graphics.drawCircle(200, 350, 10);
            addChild(g_btn);  

            b_btn = new Sprite();
            b_btn.buttonMode = true;
            b_btn.graphics.beginFill(0xFFFF00);
            b_btn.graphics.drawCircle(250, 350, 10);
            addChild(b_btn);    

//            addChild(loader);
         }
        
        private function loadComp(evt:Event):void {
            var loader:Loader = Loader(evt.target.loader);
            // ロードしたデータからbitmaDataを作成する。
            var photoBmd:BitmapData = new BitmapData(loader.width, loader.height);
            photoBmd.draw(loader);

            // ビットマップデータを生成
            var rBmd:BitmapData = new BitmapData(photoBmd.width, photoBmd.height);
            var gBmd:BitmapData = new BitmapData(photoBmd.width, photoBmd.height);
            var bBmd:BitmapData = new BitmapData(photoBmd.width, photoBmd.height);

            // 画像の赤緑青チャンネルをそれぞれのBMPデータのチャンネルにコピー
            rBmd.copyChannel(photoBmd, photoBmd.rect, new Point(), 
                                BitmapDataChannel.RED, BitmapDataChannel.RED);
            gBmd.copyChannel(photoBmd, photoBmd.rect, new Point(), 
                                BitmapDataChannel.GREEN, BitmapDataChannel.GREEN);
            bBmd.copyChannel(photoBmd, photoBmd.rect, new Point(), 
                                BitmapDataChannel.BLUE, BitmapDataChannel.BLUE);
            
            // BMPデータからBMP作成
            rBmp = new Bitmap(rBmd);
            gBmp = new Bitmap(gBmd);
            bBmp = new Bitmap(bBmd);
            
            // ブレンドモードの設定
            rBmp.blendMode = BlendMode.MULTIPLY;
            gBmp.blendMode = BlendMode.MULTIPLY;
            bBmp.blendMode = BlendMode.MULTIPLY;
            
            // ビットマップを左・中・右に移動させるときのx座標を設定
            lx = -photoBmd.width;
            cx = stage.stageWidth / 2 - photoBmd.width / 2;
            rx = stage.stageWidth;
            
            // 各チャンネルのビットマップの初期x座標を設定
            rBmp.x = lx;
            gBmp.x = cx;
            bBmp.x = rx;

            // 各チャンネルのビットマップの初期y座標を設定
            rBmp.y = 20;
            gBmp.y = 20;
            bBmp.y = 20;
            
            // ビットマップを表示リストに追加する
            addChild(rBmp);
            addChild(gBmp);
            addChild(bBmp);
                        
            // x位置を中央に設定する
            centerX();
            
            // フレームが再生されるたびにonEnterframeを実行
            addEventListener(Event.ENTER_FRAME, onEnterframe);
            
            // ボタンにロールオーバーしたときの処理を設定
            r_btn.addEventListener(MouseEvent.ROLL_OVER, onROver);
            g_btn.addEventListener(MouseEvent.ROLL_OVER, onGOver);
            b_btn.addEventListener(MouseEvent.ROLL_OVER, onBOver);
            
            // ボタンにロールアウトしたときの処理を設定
            r_btn.addEventListener(MouseEvent.ROLL_OUT, onOut);
            g_btn.addEventListener(MouseEvent.ROLL_OUT, onOut);
            b_btn.addEventListener(MouseEvent.ROLL_OUT, onOut);
        }
        // 毎フレーム処理
        private function onEnterframe(evt:Event):void {
            var easing:Number = 0.2;
            rBmp.x += (rX - rBmp.x) * easing;
            gBmp.x += (gX - gBmp.x) * easing;
            bBmp.x += (bX - bBmp.x) * easing;
        }

        // r_btn マウスオーバー
        private function onROver(evt:MouseEvent):void {
            rX = cx;
            gX = lx;
            bX = rx;
        }

        // g_btn マウスオーバー
        private function onGOver(evt:MouseEvent):void {
            rX = rx;
            gX = cx;
            bX = lx;
        }

        // b_btn マウスオーバー
        private function onBOver(evt:MouseEvent):void {
            rX = lx;
            gX = rx;
            bX = cx;
        }

        // ボタンアウト
        private function onOut(evt:MouseEvent):void {
            centerX();
        }

        // センタリング
        private function centerX():void {
            rX = cx;
            gX = cx;
            bX = cx;
        }
    }
}