flash on 2010-1-9 ... @author Charlie Schulze, charlie[at]woveninteractive[dot]com mirkofresa forked:5favorite:0lines:109license : MIT License modified : 2010-01-09 21:21:42 Embed Tweet package { import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import gs.easing.Quint; import gs.TweenLite; import org.papervision3d.materials.BitmapFileMaterial; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.view.BasicView; /** * ... * @author Charlie Schulze, charlie[at]woveninteractive[dot]com */ public class Main extends BasicView { protected var planes:Array = []; protected var numItems:Number = 20; protected var radius:Number = 500; protected var currentItem:Number = 0; protected var mat:BitmapFileMaterial; protected var planesHolder:DisplayObject3D; protected var rightBtn:Sprite; protected var leftBtn:Sprite; public function Main():void { super(); init(); } protected function init():void { createChildren(); createButtons(); commitProperties(); startRendering(); } protected function createChildren():void { planesHolder = new DisplayObject3D(); //Create Material mat = new BitmapFileMaterial("http://photos-a.ak.fbcdn.net/hphotos-ak-snc3/hs056.snc3/14358_161138964648_41600634648_2325234_6826951_n.jpg"); mat.smooth = true; mat.doubleSided = true; for (var i:int = 0; i < numItems; i++) { var plane:Plane = new Plane(mat, 150, 234); planes.push(plane); //Add plane to the scene planesHolder.addChild(plane); } scene.addChild(planesHolder); } protected function commitProperties():void { //Set properties of our planes for (var i:int = 0; i < planes.length; i++) { var angle:Number = Math.PI * 2 / numItems * i; var plane:Plane = planes[i]; plane.x = Math.cos(angle) * radius; plane.z = Math.sin(angle) * radius; plane.rotationY = -360 / numItems * i - 90; } //Adjust camera camera.y = 200; //Rotate once rotate(); } //Rotates the carousel protected function rotate():void { var rotateTo:Number = (-360 / numItems) * currentItem + 90; TweenLite.to(planesHolder, 1, { rotationY:rotateTo, ease:Quint.easeInOut } ); } /* * Everything below this point is just for creating / setting events for * controlling the carousel. */ protected function createButtons():void { //Create Buttons rightBtn = createButton(); leftBtn = createButton(); addChild(leftBtn); addChild(rightBtn); //Add button listeners rightBtn.buttonMode = true; leftBtn.buttonMode = true; rightBtn.addEventListener(MouseEvent.CLICK, buttonClick); leftBtn.addEventListener(MouseEvent.CLICK, buttonClick); //Place buttons on stage rightBtn.x = stage.stageWidth - 120; leftBtn.x = 100; rightBtn.y = stage.stageHeight -30; leftBtn.y = (stage.stageHeight -30) + 20; leftBtn.rotation = 180; } //Button actions protected function buttonClick(evt:MouseEvent):void { switch (evt.target) { case rightBtn: currentItem --; break; case leftBtn: currentItem ++; break; } rotate(); } //Creates a simple arrow shape / returns the sprite protected function createButton():Sprite { var btn:Sprite = new Sprite(); btn.graphics.beginFill(0x333333); btn.graphics.moveTo(0, 0); btn.graphics.lineTo(0, 20); btn.graphics.lineTo(10, 10); btn.graphics.lineTo(0, 0); btn.graphics.endFill(); return btn; } } } Code Fullscreen Preview Fullscreen doubleSided smooth MouseEvent.CLICK buttonMode rotation target rotationY addEventListener MouseEvent push Math.cos addChild length Math.PI Math.sin Array Sprite int Number sort new page view favorite forked pv0 forked from: flash on 2010-1-9.. kaytre1987 forked:0 favorite:0lines:109 (diff:1) pv73 forked from: flash on 2010-1-9.. leonardo.sgoulart forked:0 favorite:0lines:109 (diff:2) pv98 forked from: flash on 2010-1-9.. leonardo.sgoulart forked:0 favorite:0lines:109 (diff:4) pv145 forked from: flash on 2010-1-9.. gillit1984 forked:0 favorite:0lines:109 (diff:145) pv562 forked from: flash on 2010-1-9.. szeremeta forked:1 favorite:1lines:107 (diff:13)