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

波打つ黒豆腐

Get Adobe Flash player
by okoi 28 Jul 2011
/**
 * Copyright okoi ( http://wonderfl.net/user/okoi )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/z0lz
 */

package 
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.geom.Rectangle;

    [SWF(width = "465", height = "465", frameRate = "60")]
    
    
    /**
     * ...
     * @author 
     */
    public class Main extends Sprite 
    {
        public static const WIDTH:int = 465;
        public static const HEIGHT:int = 465;
        
        private var _field:Field;
        
        
        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }
        
        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point
            graphics.beginFill(0);
            graphics.drawRect(0, 0, WIDTH, HEIGHT);
            graphics.endFill();
            
            _field = new Field();
            _field.Initialize();
            var rect:Rectangle = _field.getRect(_field);
            _field.x = WIDTH / 2 - rect.left - rect.width / 2;
            _field.y = HEIGHT / 2 - rect.top - rect.height / 2;
            addChild( _field );
            
            addEventListener( Event.ENTER_FRAME, EnterFrameHandler );
        }
        
        private function EnterFrameHandler( e:Event ) : void
        {
            _field.Update();
        }
        
    }
    
}
    import flash.geom.Point;
    import flash.display.Sprite;
    import flash.display.Shape;
    import flash.display.Graphics;
    
    /**
     * ...
     * @author 
     */
    class Field extends Sprite
    {
        public static const GRID_W:int = 12;    //    ブロックの底面のサイズ
        public static const GRID_H:int = 6;

        private var _fieldWidth:int = 40;
        private var _fieldHeight:int = 20;
        
        private var _blocks:Array;
        
        private var _step:int = 0;
        
        public function Field() 
        {
            
        }
        
        public function Initialize() : void
        {    
            _blocks = new Array(_fieldHeight);
            for ( var h:int = 0; h < _fieldHeight; h++ )
            {
                _blocks[h] = new Array( _fieldWidth );
                for ( var w:int = 0; w < _fieldWidth; w++ )
                {
                    _blocks[h][w] = new Block( 0x999999, 0xAAAAAA, 0xCCCCCC, 0x0, 0, 100, GRID_W, GRID_H );
                }
            }
            
            Draw();
        }
        
        public function Update() : void
        {
            var x:int, y:int;
            var xrate:Array = new Array(_fieldWidth);
            var yrate:Array = new Array(_fieldHeight);
            for ( x = 0; x < _fieldWidth; x++ )
            {
                xrate[x] = Math.cos(((x*10 + _step) % 360) * Math.PI / 180);
            }
            for ( y = 0; y < _fieldHeight; y++ )
            {
                yrate[y] = Math.sin(((y * 10 + _step) % 360) * Math.PI / 180);
            }
            
            
            for ( y = 0; y < _fieldHeight; y++ )
            {
                for ( x = 0; x < _fieldWidth; x++ )
                {
                    var block:Block = _blocks[y][x];
                    block.blockheight = 90 + 4 * xrate[x] * 4 * yrate[y];
                }
            }                    
            
            Draw();
            _step+=4;
        }
        
        public function Draw() : void
        {
            var g:Graphics = this.graphics;
            g.clear();
            for ( var y:int = 0; y < _fieldHeight; y++ )
            {
                for ( var x:int = 0; x < _fieldWidth; x++ )
                {
                    var block:Block = _blocks[y][x];
                    var pos:Point = GetGridPosition( x, y );
                    block.Draw( g, pos.x, pos.y );
                }
            }        
        }
        
        
        public function GetGridPosition( x:int, y:int ) : Point 
        {
            var tmpx:Number = 0;
            var tmpy:Number = 0;
        
            tmpx = x * GRID_W / 2 - y * GRID_W / 2;
            tmpy = x * GRID_H / 2 + y * GRID_H / 2;
            
            return    new Point(tmpx, tmpy);
        }
        
    }

    /**
     * ...
     * @author 
     */
    class Block extends Shape
    {
        private var _leftColor:uint = 0;
        private var _rightColor:uint = 0;
        private var _upColor:uint = 0;
        private var _lineColor:uint = 0;
        private var _lineSize:int = 1;
        private var _blockHeight:Number;
        private var _gridWidth:int;
        private var _gridHeight:int;
        
        public function Block( leftColor:uint, rightColor:uint, upColor:uint, lineColor:uint, lineSize:int, blockHeight:Number, gridWidth:int, gridHeight:int ) 
        {
            _leftColor = leftColor;
            _rightColor = rightColor;
            _upColor = upColor;
            _lineColor = lineColor;
            _lineSize = lineSize;
            _blockHeight = blockHeight;
            _gridWidth = gridWidth;
            _gridHeight = gridHeight;
            
            Draw(this.graphics);
        }
        
        public function Draw( g:Graphics, x:int = 0, y:int = 0 ) : void
        {    
            if ( _blockHeight == 0 )    return;
            
            //    上面
            if( _lineSize > 0 )    g.lineStyle(_lineSize,_lineColor);
            g.beginFill(_upColor);
            g.moveTo( x                      , y - _gridHeight * 1.5 - _blockHeight );
            g.lineTo( x + _gridWidth * 0.5, y - _gridHeight - _blockHeight  );
            g.lineTo( x                      , y - _gridHeight * 0.5 - _blockHeight );
            g.lineTo( x - _gridWidth * 0.5, y - _gridHeight - _blockHeight  );
            g.lineTo( x                      , y - _gridHeight * 1.5 - _blockHeight );
            g.endFill();
                        
            //    左面
            g.beginFill(_leftColor);
            g.moveTo( x - _gridWidth * 0.5, y - _gridHeight - _blockHeight);
            g.lineTo( x                      , y - _gridHeight * 0.5 - _blockHeight );
            g.lineTo( x                      , y + _gridHeight * 0.5 );
            g.lineTo( x - _gridWidth * 0.5, y );
            g.lineTo( x - _gridWidth * 0.5, y - _gridHeight - _blockHeight );
            g.endFill();
                        
            //    右面
            g.beginFill(_rightColor);
            g.moveTo( x                      , y - _gridHeight * 0.5 - _blockHeight );
            g.lineTo( x + _gridWidth * 0.5, y - _gridHeight - _blockHeight );
            g.lineTo( x + _gridWidth * 0.5, y );
            g.lineTo( x                      , y + _gridHeight * 0.5 );
            g.lineTo( x                      , y - _gridHeight * 0.5 - _blockHeight);
            g.endFill();            
        }
        
        public function set blockheight( val:int ) : void {
            _blockHeight = val;
        }
        
    }