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: falling snow

Get Adobe Flash player
by dmk 11 Dec 2012
/**
 * Copyright dmk ( http://wonderfl.net/user/dmk )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/2FVs
 */

// forked from shin-go's falling snow
// forked from shin-go's forked from: webCam
// forked from shin-go's webCam
package {
  import flash.display.Bitmap;
  import flash.display.BitmapData;
  import flash.display.Sprite;
  import flash.events.ActivityEvent;
  import flash.events.ContextMenuEvent;
  import flash.events.Event;
  import flash.filters.ConvolutionFilter;
  import flash.geom.Point;
  import flash.media.Camera;
  import flash.media.Video;
  import flash.text.TextField;
  import net.hires.debug.Stats;
  public class FlashTest extends Sprite {
      protected var video:Video;
      protected var bmpd:BitmapData;
      protected var convolitionFilter:ConvolutionFilter;
      public function FlashTest() {
          // write as3 code here..
          setCamera()
          //addChild(new Stats());
      }
      protected function setCamera():void{
          
          var camera:Camera = Camera.getCamera();
          if (camera != null) {
              video = new Video(stage.stageWidth,stage.stageWidth*3/4);
              video.attachCamera(camera);
              camera.addEventListener(ActivityEvent.ACTIVITY, onActivity);
          camera.addEventListener(Event.DEACTIVATE, onDeactivate);
              addChild(video);
          }else {
              var txt:TextField = addChild(new TextField()) as TextField;
              txt.text = "No Camera!";
          }
      }
      
      protected function onActivity(e:ActivityEvent):void {
          if (e.activating == true) {
              setFilter();
          setBall();
          }else{
              var txt:TextField = addChild(new TextField()) as TextField;
              txt.text = "No Camera!";
          }
      }
      protected function onDeactivate(e:Event):void {
            var txt:TextField = addChild(new TextField()) as TextField;
            txt.text = "No Camera!";
      }
      
      protected function setFilter():void {
          if (!bmpd) bmpd = new BitmapData(video.width, video.height, false, 0x000000);
          var bmp:Bitmap = addChild(new Bitmap(bmpd)) as Bitmap;
          bmp.width = bmpd.width / 3;
          bmp.height = bmpd.height / 3;
          bmp.x = stage.stageWidth - bmp.width;
          bmpd.draw(video);
          var edges:Array = [0, -1, 0,
                                -1, 4, -1,
                                0, -1, 0];

          convolitionFilter = new ConvolutionFilter(3, 3, edges, 1);
          bmp.filters = [convolitionFilter];
          
          addEventListener(Event.ENTER_FRAME, onEnter);
          function onEnter(e:Event):void {
              bmpd.draw(video);
          }
      }
      protected function setBall():void {
          
          addEventListener(Event.ENTER_FRAME, onEnter);
          function onEnter(e:Event):void {
             // if(Math.random()>0.6){
                var ball:Ball = Ball.GET_INSTANCE(Math.random() * stage.stageWidth, 0);
                if (ball) addChild(ball); 
             // }
          }
      }
          
   
  }
}

import flash.display.Sprite;
import flash.events.Event;

class Ball extends Sprite {
    protected static var LIST:Array = [];
    protected static var REMOVED_LIST:Array = [];
    protected static const INSTANS_LIMIT:int = 100;
    protected static const G:Number = 0.2;
    protected var a:Number = 0;
    protected static const FLICTION:Number = 0.2;
    protected var v:Number = 0;
    protected static var txt:flash.text.TextField;
    public function Ball() {
        graphics.beginFill(0xffffff, 1);
        graphics.drawCircle(0, 0, 3+2*Math.random());
        graphics.endFill();
        a = G * width;
    }
    public static function GET_INSTANCE(_x:Number,_y:Number):Ball {
        var instance:Ball;
        if (LIST.length < INSTANS_LIMIT) {
            if (REMOVED_LIST.length > 0) {
                instance = REMOVED_LIST.pop();
                LIST.push(instance);
            }else {
                instance = new Ball();
                LIST.push(instance);
            }
            instance.x = _x;
            instance.y = _y;
            instance.startFall();
        }else {
            instance = null;
        }
        return instance;
    }
    protected static function REMOVE_INSTANCE(instance:Ball):void {
        for (var i:int = 0; i < LIST.length; i++) {
            if (Ball(LIST[i]) == instance) {
                LIST.splice(i, 1);
                REMOVED_LIST.push(instance);
            }
        }
    }
    public function startFall():void {
        addEventListener(Event.ENTER_FRAME, onEnter);
    }
    public function stopFall():void {
        removeEventListener(Event.ENTER_FRAME, onEnter);
    }
    protected function onEnter(e:Event):void {
        v += a - v *0.5;
        y += v;
        if (y > stage.stageHeight) {
            stopFall();
            REMOVE_INSTANCE(this);
        }
    }
    
}