« WCAN mini ActionScript Vol.9 やりますよ! | メイン | ごはんと暴年会2008のお知らせ »

WCAN mini ActionScript Vol.9 バナーのソース

del.icio.us it!   hatena bookmark
ひとつ前のエントリーとか右のサイドバーにあるバナーのソースでっす。

勢いで作ったのでグダグダですがとりあえず公開します。

そーすだうんろーど

続きでソース全文
MiniASVol9Banner.as
package
{

    import flash.display.*;
    import flash.geom.*;
    import flash.events.*;
    import flash.filters.*;
    import flash.net.*;
    
    public class MiniASVol9Banner extends Sprite
    {

        public var main:Sprite;

        private var _map:MapImage;
        private var _dmf:DisplacementMapFilter;
        private var _p:Point = new Point(0, 0);
        
        public function MiniASVol9Banner()
        {
            init();
        }

        private function init():void
        {
            _map = new MapImage(stage.width, stage.height, stage);

            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
            main.buttonMode = true;
            main.addEventListener(MouseEvent.CLICK,
                                  function(e:MouseEvent):void {                    
                    navigateToURL(new URLRequest("http://www.wcan.jp/index.php?ID=212"), "_brank");

            });

            _dmf = new DisplacementMapFilter(
                _map.bitmapData, _p, 4, 1, 50, 50, "clamp"
            );
            
        }
        

        private function enterFrameHandler(e:Event):void
        {
            _dmf.mapBitmap = _map.bitmapData;
            filters = [_dmf];
        }


    }
}



MapImage.as
package
{
    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;
    import flash.filters.*;

    public class MapImage extends Sprite
    {

        private var _back:Sprite;
        private var _ball:Sprite;
        private var _ballContainer:Sprite;
        private var _ballBmpd:BitmapData;
        private var _mapBmpd:BitmapData;
        private var _blur:BlurFilter;
        private var _stage:Stage;

        private var _targetWidth:Number;
        private var _targetHeight:Number;
        private var _tmpPoint:Point = new Point();
        
        public function get bitmapData():BitmapData { return _mapBmpd; }
        

        
        public function MapImage(w:Number, h:Number, __stage)
        {
            _targetWidth = w;
            _targetHeight = h;
            _stage = __stage;
            
            _ball = new Sprite();
            _ballContainer = new Sprite();
            _back = new Sprite();
            _ballBmpd = new BitmapData(_targetWidth,
                                   _targetHeight+50,
                                   true,
                                   0x00FFFFFF);
            _mapBmpd = _ballBmpd.clone();

            _ballContainer.addChild(_ball);

            // init back
            with(_back.graphics)
            {
                beginFill(0x800080);
                drawRect(0, 0, _targetWidth, _targetHeight);
                endFill();
            }

            // init blur
            _blur = new BlurFilter(8, 8, 4);
            
            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
            _stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
            
            updateBall();
            _ball.alpha = 0;
        }

        private function enterFrameHandler(e:Event):void
        {
            _ball.x = mouseX;
            _ball.y = mouseY+25;

            _ballBmpd.draw(_ballContainer)
            _ballBmpd.applyFilter(_ballBmpd,
                              _ballBmpd.rect,
                                  _tmpPoint,
                              _blur);
            
            _mapBmpd.lock();                
            _mapBmpd.draw(_back);
            _mapBmpd.draw(_ballBmpd);
            _mapBmpd.unlock();

            if (_ball.alpha > 0) _ball.alpha -= 0.1;
            
        }


        private var _count:int = 0;
        
        private function mouseMoveHandler(e:MouseEvent):void
        {
            e.updateAfterEvent()
            if (_ball.alpha < 1) _ball.alpha += 0.3;

            if (_count > 10)
            {
                updateBall();
                _count = 0;
            }
            _count++;
        }


        private var _colorArray:Array = [0xFF0000, 0x0000FF];

        private function updateBall():void
        {
            with(_ball.graphics)
            {
                clear();
                beginFill(_colorArray[Math.floor(Math.random()*(_colorArray.length))]);
                drawCircle(0, 0, 20);
                endFill();
            }
        }
    }
}


Flash Math & Physics Design:ActionScript 3.0による数学・物理学表現[入門編] 集合知プログラミング ビジュアライジング・データ —Processingによる情報視覚化手法 御岳百草丸 1200T

トラックバック

このエントリーのトラックバックURL:
http://un-q.net/mt-tb.cgi/363

コメントを投稿

書いたよ!