Flash #001 Media'
♥0 |
Line 79 |
Modified 2013-02-16 16:36:29 |
MIT License
archived:2017-03-09 17:07:14
ActionScript3 source code
/**
* Copyright takepepe ( http://wonderfl.net/user/takepepe )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/cP1H
*/
package {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.media.*;
import flash.filters.DisplacementMapFilter;
public class Main extends Sprite{
public static const WIDTH:Number = 465;
public static const HEIGHT:Number = 465;
private var sp:Shape;
private var screenBmd:BitmapData;
private var screen:Bitmap;
private var transformer:BitmapData;
private var camera:Camera;
private var video:Video;
public function Main() {
init();
stage.addEventListener(MouseEvent.CLICK,onClick);
}
private function onClick(e:MouseEvent):void{
sp.visible = !sp.visible;
}
/*
@ setup
=================================*/
private function init():void{
setAvator();
setTransformer();
setCamera();
}
private function setAvator():void{
screenBmd = new BitmapData(WIDTH,HEIGHT,true,0x000000);
screen = new Bitmap(screenBmd);
addChild(screen);
}
private function setTransformer():void{
sp = new Shape();
sp.alpha = 0.8;
var gr:Graphics = sp.graphics;
var fillType:String = GradientType.RADIAL;
var colors:Array = [0xFF0000,0x0000FF];
var alphas:Array = [1, 1];
var ratios:Array = [0, 255];
var matr:Matrix = new Matrix();
matr.createGradientBox(WIDTH,HEIGHT, 0,0,0);
var spreadMethod:String =SpreadMethod.PAD;
gr.beginGradientFill(fillType, colors, alphas, ratios, matr, spreadMethod);
gr.drawRect(0,0,WIDTH,HEIGHT);
transformer = new BitmapData(WIDTH,HEIGHT);
transformer.draw(sp);
addChild(sp);
}
private function setCamera():void{
camera = Camera.getCamera();
camera.setMode(WIDTH,HEIGHT,30,true);
camera.addEventListener(ActivityEvent.ACTIVITY,onActiveCamera);
video = new Video(WIDTH,HEIGHT);
video.attachCamera(camera);
}
private function onActiveCamera(e:ActivityEvent):void{
if(e.activating){
addEventListener(Event.ENTER_FRAME,update);
addEventListener(Event.ENTER_FRAME,draw);
}else{
removeEventListener(Event.ENTER_FRAME,update);
removeEventListener(Event.ENTER_FRAME,draw);
}
}
/*
@ main loop
=================================*/
private function update(e:Event):void{
var mapPoint:Point = new Point(0, 0);
var componentX:uint = BitmapDataChannel.GREEN;
var componentY:uint = BitmapDataChannel.RED ;
var forceX:Number = 0;
var forceY:Number = 200;
var my_filter:DisplacementMapFilter = new DisplacementMapFilter(transformer, mapPoint, componentX, componentY, forceX, forceY, "color", 0, 0);
screen.filters = new Array(my_filter)
}
private function draw(e:Event):void{
/*var matrix:Matrix = new Matrix();
matrix.scale(-1, 1);
//matrix.translate(screenBmd.width, 0);*/
screenBmd.draw(video);
}
}
}