Forked from: Saqoosha's Sntk Carousel diff:42 forked from: Sntk Carousel minon forked:0favorite:0lines:78license : All rights reserved modified : 2009-01-17 16:59:31 Embed Tweet // forked from Saqoosha's Sntk Carousel // write as3 code here.. package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.LoaderInfo; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.media.Camera; import flash.media.Video; import flash.net.URLRequest; import flash.system.LoaderContext; import flash.utils.getTimer; import org.libspark.thread.utils.ParallelExecutor; [SWF(width=465, height=465, backgroundColor=0xffffff, frameRate=30)] public class Sntk extends Sprite { private static const NUM_PANELS:int = 10; private var _panels:Array; private var _view :Sprite; private var _cam:Camera; private var _video:Video; private var _camBitmap:BitmapData; public function Sntk() { var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, this._onImageLoaded); loader.load(new URLRequest('http://saqoosha.net/images/sntk.jpg'), new LoaderContext(true)); _cam = Camera.getCamera(); _cam.setMode( 500, 500, 15 ); _video = new Video( 500 , 500 ); _video.attachCamera( _cam ); _camBitmap = new BitmapData( 500, 500, false, 0xFFFF0000 ); } private function _onImageLoaded(e:Event):void { var loader:Loader = LoaderInfo(e.target).loader; this._panels = []; for (var i:int = 0; i < NUM_PANELS; i++) { var p:Panel = this.addChild(new Panel(_camBitmap)) as Panel; this._panels.push(p); } this.addEventListener(Event.ENTER_FRAME, this._update); } private function _update(e:Event):void { var yy:Number = this.mouseY / this.stage.height * 150; var xx:Number = this.mouseX / this.stage.height * 150; //var yy:Number = 150; var t:Number = getTimer() / 300; var tmp:Array = []; for (var i:int = 0; i < NUM_PANELS; i++) { var p:Panel = this._panels[i]; var a:Number = i / NUM_PANELS * Math.PI * 2 + t; p.x = Math.cos(a) * xx + 230; p.y = Math.sin(a) * yy + 230; p.rotationX = 20; tmp.push({ panel: p, y: p.y }); } tmp.sortOn('y', Array.NUMERIC); for (i = 0; i < NUM_PANELS; i++) { this.setChildIndex(tmp[i].panel, i); tmp[i].panel.alpha = 0.7 / NUM_PANELS * i + 0.3; } _camBitmap.draw( _video ); } } } import flash.display.Sprite; import flash.display.BitmapData; import flash.display.Bitmap; import flash.display.PixelSnapping; class Panel extends Sprite { private var _image:Bitmap; public function Panel(image:BitmapData) { this._image = this.addChild(new Bitmap(image, PixelSnapping.AUTO, true)) as Bitmap; this._image.width = this._image.height = 80; this._image.x = this._image.y = -50; } } Code Fullscreen Preview Fullscreen alpha height PixelSnapping.AUTO width addEventListener MouseEvent.COMPLETE Array.NUMERIC Video URLRequest Array int