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

"Bitmap Pattern Explorer" forked from: fladdict challenge for professionals

Theme:
* Play with BitmapPatterBuilder.
* Purpose of this trial is to find the possibility of the dot pattern.
*
* by Takayuki Fukatsu aka fladdict
/**
 * Copyright beinteractive ( http://wonderfl.net/user/beinteractive )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/taLu
 */

// forked from checkmate's fladdict challenge for professionals
/**
 * Theme:
 * Play with BitmapPatterBuilder.
 * Purpose of this trial is to find the possibility of the dot pattern.
 *
 * by Takayuki Fukatsu aka fladdict
 **/
package {
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Graphics;
    import flash.display.Sprite;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    
    
    public class Professional extends Sprite {
        public function Professional() {
            stage.scaleMode = StageScaleMode.NO_SCALE;
            
            _size = 1;
            _bit = 0;
            _prevDate = null;
            
            addEventListener(Event.ENTER_FRAME, update);
        }
        
        private var _size:uint;
        private var _bit:uint;
        private var _prevDate:Date;
        
        // Explore all bitmap patterns!
        
        private function update(e:Event):void
        {
            var date:Date = new Date();
            
            if (_prevDate == null || _prevDate.getUTCSeconds() != date.getUTCSeconds()) {
                var b:uint = _bit;
                var pattern:Array = [];
                for (var x:uint = 0; x < _size; ++x) {
                    var line:Array = [];
                    for (var y:uint = 0; y < _size; ++y) {
                        line.push(b & 0x01);
                        b >>= 1;
                    }
                    pattern[x] = line;
                }
                if (++_bit >= Math.pow(2, _size * _size)) {
                    ++_size;
                    _bit = 0;
                }
                var bitmap:BitmapData = BitmapPatternBuilder.build(pattern, [0xffffffff, 0xff000000]);
                var g:Graphics = graphics;
                g.clear();
                g.beginBitmapFill(bitmap);
                g.drawRect(0, 0, 480, 480);
                g.endFill();
            }
            
            _prevDate = date;
        }
    }
}

/**-----------------------------------------------------
 * Use following BitmapPatternBuilder class 
 * 
 * DO NOT CHANGE any codes below this comment.
 *
 * -----------------------------------------------------
*/
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Graphics;
    
class BitmapPatternBuilder{
    /**
     * creates BitmapData filled with dot pattern.
     * First parameter is 2d array that contains color index for each pixels;
     * Second parameter contains color reference table.
     *
     * @parameter pattern:Array 2d array that contains color index for each pixel.
     * @parameter colors:Array 1d array that contains color table.
     * @returns BitmapData
     */
    public static function build(pattern:Array, colors:Array):BitmapData{
        var bitmapW:int = pattern[0].length;
        var bitmapH:int = pattern.length;
        var bmd:BitmapData = new BitmapData(bitmapW,bitmapH,true,0x000000);
        for(var yy:int=0; yy<bitmapH; yy++){
            for(var xx:int=0; xx<bitmapW; xx++){
                var color:int = colors[pattern[yy][xx]];
                bmd.setPixel32(xx, yy, color);
            }
        }
        return bmd;
    }
    
    /**
     * short cut function for Graphics.beginBitmapFill with pattern.
     */
    public static function beginBitmapFill(pattern:Array, colors:Array, graphics:Graphics):void{
        var bmd:BitmapData = build(pattern, colors);
        graphics.beginBitmapFill(bmd);
        bmd.dispose();        
    }
}