ちょっと前のフレームを並べて表示
こちらにちょっと前のフレームを並べてセンスのいい広告を表示しています。
http://www.shiffman.net/2007/08/25/run-lola-run-lola-run-lola-run/
これに触発されて、Flexでも作成してみました。
http://moeten.info/flex/20080326_videoMultiThum/bin-release/main.html
基本的にバッファさえ取得すればOKです。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> <mx:Script> <![CDATA[ import mx.controls.Image; import mx.controls.VideoDisplay; private var video:VideoDisplay = new VideoDisplay(); private var bd:BitmapData = new BitmapData( 100 , 100 ); private var bd_arr:Array = new Array(); private var cnt:int = 100; private var size:int = 40; private function init():void{ //ビデオの作成 video.width = 100; video.height = 80; video.source = "test.flv"; myCanvas.addChild(video); //画像をひたすらキャンバスに追加 for( var i:int = 0 ; i< cnt ; i++ ){ var image:Image = new Image(); image.width = size; image.height = size; image.x=(i%10) * size; image.y=size * int((i/10)) + 100; image.name = "myImage" + i; myCanvas.addChild(image); } this.addEventListener(Event.ENTER_FRAME , myTimer ); } //タイマーイベント private function myTimer( e:Event ):void{ bd.draw(video); myDraw(); } private var frame:int = 0; private var bd2:BitmapData = new BitmapData( 100 , 100 ); private function myDraw():void{ //画像のクローン作成 bd2 = bd.clone(); //配列に現在の画像を追加 bd_arr[frame] = bd2; //バッファたまった? if( frame > cnt ){ //配列の分だけ、画像を表示 for( var i:int = 0 ; i < cnt ; i++ ){ var im:Image = myCanvas.getChildByName("myImage"+ i) as Image; im.source = new Bitmap( bd_arr[frame-i] ); } bd_arr[frame-cnt] = null; } frame++; } ]]> </mx:Script> <mx:Canvas x="10" y="10" width="100%" height="100%" id="myCanvas"/> </mx:Application>