エフェクト AfterImageSliceを作ってみた。
ActionScript3で、Webカメラの映像にエフェクトをかけてみた。
僕が知らないだけかもしれないが、同じようなエフェクトが無いようなのでAfterImageSliceと名付けた。
ソースは以下。
10フレーム前までの映像をコピーしておいて、一列ごとに最新〜10フレーム前までのいずれかの映像をあてはめる。
package { import flash.display.*; import flash.events.*; import flash.media.*; import flash.filters.*; import flash.geom.*; public class Slice extends Sprite { private var bd:BitmapData; private var bdCopyArray:Array; private var video:Video; private var bitmap:Bitmap; private var count:int private var sliceArray:Array public function Slice(){ bd = new BitmapData(640, 480, false, 0x00000000); bdCopyArray = new Array(); sliceArray = new Array(); for(var i:int = 0; i < 480; i++){ bdCopyArray.push(new BitmapData(640, 480, false, 0x00000000)); sliceArray.push(Math.floor(Math.random() * 10)); } bitmap = new Bitmap(bd); addChild(bitmap); addEventListener(Event.ENTER_FRAME, onEnterFrame); var camera:Camera = Camera.getCamera(); if(camera != null){ camera.setMode(640, 480, 15); camera.setMotionLevel(10); camera.setQuality(0, 10); video = new Video(640, 480); video.attachCamera(camera); } } public function onEnterFrame(evt:Event):void { count++; bd.draw(video); bdCopyArray[count%10] = bd.clone(); for(var i:int = 0; i < 480; i++){ bd.copyPixels(bdCopyArray[sliceArray[i]],new Rectangle(0,i,640,1),new Point(0,i)); } } } }