Advertisement
terorama

gallery9 / ImageCarousel.as

Aug 28th, 2012
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package  {
  2.    
  3.     import flash.display.Sprite;
  4.     import flash.display.MovieClip;
  5.    
  6.     import flash.net.URLLoader;
  7.     import flash.net.URLRequest;
  8.    
  9.     import flash.events.Event;
  10.     import flash.events.MouseEvent;
  11.    
  12.     import flash.display.Stage;
  13.     import flash.display.DisplayObject;
  14.    
  15.     import flash.display.BitmapData;
  16.     import flash.display.Bitmap;
  17.     import flash.utils.*;
  18.    
  19.  
  20.     public class ImageCarousel extends Sprite {
  21.        
  22.         private static var IMAGES:Array= new Array() ;         
  23.        
  24.         private static var APP_WIDTH:Number;       
  25.         private static var APP_HEIGHT:Number;
  26.         private static var _xCenter:Number;
  27.         private static var _yCenter:Number;
  28.        
  29.         private static var IMAGE_WIDTH:Number=640;
  30.         private static var IMAGE_HEIGHT:Number=426;
  31.        
  32.         private static var SPRINESS:Number=0.4;
  33.         private static var DECAY:Number=0.5;
  34.        
  35.         private static var SCALE_DOWN_FACTOR:Number=0.2;
  36.         private static var OFFSET_FACTOR:Number=30;
  37.         private static var OPACITY_DOWN_FACTOR:Number=0.1;
  38.         private static var MAX_SCALE:Number=1;
  39.        
  40.         private var STAGE:Stage;
  41.        
  42.         private var loader:URLLoader;
  43.        
  44.         public var _curBmp: BitmapData;
  45.        
  46.         private var _current:Number=0;
  47.         private var _target:Number=0;
  48.                
  49.         private var _sponge:Number=0;
  50.  
  51.        
  52.         private var _images:Array = new Array(6);
  53.        
  54.         private var loading:int=0;
  55.        
  56.         private var fset:Boolean=false;
  57.         private var nframes:int=0;
  58.        
  59.         private var humContainer:Sprite;
  60.        
  61.         //---------------------------------------------
  62.         public function ImageCarousel() {
  63.            
  64.             STAGE= Gallery9.STAGE;
  65.            
  66.             APP_WIDTH=STAGE.width;
  67.             APP_HEIGHT=STAGE.height;
  68.            
  69.            
  70.             _xCenter=APP_WIDTH/2;
  71.             _yCenter=APP_HEIGHT/2;
  72.            
  73.             //x=0;
  74.             //y=0;
  75.             //width=50;//STAGE.width;
  76.             //height=50;//STAGE.height;
  77.            
  78.            
  79.             /*this.graphics.lineStyle(1,0xFFDD00,0.3);
  80.             this.graphics.beginFill(0x000033);
  81.             this.graphics.drawRect(0,0,200,STAGE.height);
  82.            
  83.             this.graphics.drawRect(0,STAGE.height-200,
  84.                                    STAGE.width, STAGE.height);
  85.            
  86.             this.graphics.endFill();*/
  87.            
  88.            
  89.             loadXML();
  90.            
  91.         }
  92.        
  93.         //---------------------------------------------
  94.         private function loadXML():void {
  95.             loader = new URLLoader(new URLRequest('imgs.xml'));
  96.             loader.addEventListener(Event.COMPLETE, addImages);
  97.            
  98.         }
  99.         //---------------------------------------------
  100.         private function addImages(e: Event):void {
  101.        
  102.             loadNames(e);
  103.             loading=IMAGES.length;
  104.            
  105.             for (var i:int=0; i< IMAGES.length; i++) {
  106.                
  107.                 /*var imageClass:String=IMAGES[i];
  108.                 var className:Class=
  109.                    ApplicationDomain.currentDomain.getDefinition(
  110.                                                 imageClass) as Class;
  111.                 var bitmapData: BitmapData = new className(0,0);
  112.                 var image:Bitmap = new Bitmap(bitmapData);
  113.                
  114.                 var bitmapData: BitmapData = new BitmapData(IMAGE_WIDTH,
  115.                                                             IMAGE_HEIGHT,
  116.                                                             false,
  117.                                                             0x000000
  118.                                                             );*/
  119.                                                            
  120.                 //var image:Bitmap= new Bitmap((l.content as Bitmap).bitmapData.clone());
  121.                 //bitmapData.draw(tmpB);                                                           
  122.                
  123.                 var l:Loaderzz= new Loaderzz(i);
  124.                
  125.                 l.inloader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);  
  126.                
  127.                 l.inloader.load(new URLRequest (IMAGES[i]));
  128.             }
  129.         }
  130.         //---------------------------------------------
  131.         private function onComplete(event:Event):void {
  132.            
  133.             //var bitmapData: BitmapData =
  134.             //         Bitmap(LoaderInfo(event.target).content).bitmapData;
  135.            
  136.             //var bitmapData: BitmapData =
  137.             //   event.target.loader.content.bitmapData;
  138.                
  139.             var i:int=Loaderzz(event.target.loader.parent).num_load;
  140.              
  141.             //var image:Bitmap = new Bitmap(bitmapData);
  142.            
  143.             var image:ZClip = new ZClip();         
  144.             //image.smoothing=true;
  145.             image.addChild(event.target.loader);
  146.            
  147.  
  148.             addChild(image);
  149.             //image.addEventListener(MouseEvent.MOUSE_OVER, on_mouse_over);
  150.             //image.addEventListener(MouseEvent.MOUSE_OUT, on_mouse_out);
  151.                        
  152.             posImage(image,i);
  153.            
  154.             _images[i]=image;  
  155.             loading--;
  156.            
  157.             if (loading==0)  {
  158.                
  159.                sortChildren("scaleX");
  160.                start();
  161.             }
  162.            
  163.         }      
  164.        
  165.         //---------------------------------------------
  166.         private function on_mouse_over(e:MouseEvent):void {
  167.            
  168.             var tmpzz:ZClip=ZClip(e.target.parent);
  169.             tmpzz.goUp();
  170.            
  171.         }
  172.        
  173.        
  174.         //---------------------------------------------
  175.         private function on_mouse_out(e:MouseEvent):void {
  176.            
  177.             var tmpzz:ZClip=ZClip(e.target.parent);
  178.             tmpzz.goDown();
  179.         }
  180.        
  181.         //---------------------------------------------
  182.         private function sortChildren(criteria:String):void {
  183.            
  184.             var num:int=numChildren;
  185.            
  186.             var chi:Array= new Array(num);
  187.             var i:int=-1;
  188.            
  189.             while (++i<num) {
  190.                 chi[i]=getChildAt(i);              
  191.             }
  192.             chi.sortOn(criteria,Array.NUMERIC);
  193.            
  194.             var child : DisplayObject;
  195.             i=-1;
  196.             while (++i<num) {
  197.                 child=DisplayObject(chi[i]);
  198.                
  199.                 if (i!=getChildIndex(child)) {
  200.                     setChildIndex(child,i);
  201.                 }
  202.             }
  203.            
  204.         }
  205.        
  206.         //---------------------------------------------
  207.         private function posImage(image:ZClip, index:int) :void {
  208.            
  209.             var diffFactor:Number = index- _current;
  210.            
  211.             image.scaleX=MAX_SCALE-Math.abs(diffFactor)*SCALE_DOWN_FACTOR;
  212.             image.scaleY=MAX_SCALE-Math.abs(diffFactor)*SCALE_DOWN_FACTOR;
  213.            
  214.             image.x=_xCenter -IMAGE_WIDTH/2 +
  215.                (diffFactor*(diffFactor>0 ? 160 : OFFSET_FACTOR));
  216.                
  217.             image.y=_yCenter - IMAGE_HEIGHT/2+
  218.                (diffFactor*(diffFactor>0 ? 110 : OFFSET_FACTOR));
  219.  
  220.             image.alpha=0.2;//Math.abs(diffFactor)*OPACITY_DOWN_FACTOR;
  221.            
  222.         }
  223.        
  224.         //---------------------------------------------
  225.         private function loadNames(e: Event):void {
  226.  
  227.             var xml:XML = new XML(e.target.data);
  228.  
  229.             var list:XMLList = xml.img;
  230.    
  231.            
  232.             for (var i:int=0; i<list.length(); i++) {
  233.                
  234.                 IMAGES.push(list[i].@src);
  235.             }
  236.         }
  237.        
  238.         //---------------------------------------------
  239.         private function on_enter_frame(e:Event):void {
  240.            
  241.             nframes++;
  242.             //MovieClip(parent).zzte.text=nframes;
  243.            
  244.             for (var i:int=0; i<_images.length; i++) {
  245.                 var image:ZClip=_images[i];
  246.                 posImage(image,i);
  247.             }
  248.            
  249.                        
  250.                        
  251.             _sponge=(_target-_current)*SPRINESS+_sponge*DECAY;
  252.             _current+=_sponge;
  253.            
  254.             if (Math.abs(_sponge)<0.001) {
  255.                removeEventListener(Event.ENTER_FRAME, on_enter_frame);
  256.                fset=false;
  257.                //sortChildren("scaleX");
  258.             }
  259.         }
  260.        
  261.         //---------------------------------------------
  262.         private function on_mouse_wheel(e:MouseEvent):void {
  263.             moveIndex( (e.delta>0) ? 1: -1);
  264.         }
  265.        
  266.         //---------------------------------------------
  267.         private function on_click(e:MouseEvent):void {
  268.             moveIndex(1);
  269.         }
  270.        
  271.         //---------------------------------------------
  272.         private function moveIndex(value:int):void {
  273.             _target+=value;
  274.             //_target=Math.max(0,_target);
  275.             //_target=Math.min(_images.length-1, _target);
  276.            
  277.             if (_target>_images.length-1)
  278.                _target=0;
  279.                
  280.             if (_target<0)
  281.                _target=_images.length-1;
  282.            
  283.             if (!fset) {
  284.                fset=true;  
  285.                addEventListener(Event.ENTER_FRAME, on_enter_frame);
  286.             }
  287.            
  288.         }
  289.        
  290.         //---------------------------------------------
  291.         function zzUp():void {
  292.            
  293.             sortChildren("scaleX");
  294.             var tmpzz:ZClip= ZClip(getChildAt(numChildren-2));
  295.            
  296.             tmpzz.goUp();          
  297.         }
  298.         //---------------------------------------------
  299.         function moveIndOne() {
  300.             moveIndex(1);
  301.            
  302.             setTimeout(zzUp,500);
  303.  
  304.         }
  305.         //---------------------------------------------
  306.         function addHum():void {
  307.             var hum:zzhum=new zzhum();
  308.             humContainer.addChild(hum);
  309.         }
  310.         function addFl():void {
  311.             var fl:flower_group=new flower_group();
  312.             humContainer.addChild(fl);
  313.         }
  314.        
  315.         //---------------------------------------------
  316.         public function start():void {
  317.             fset=true;
  318.             addEventListener(Event.ENTER_FRAME,on_enter_frame);
  319.             addEventListener(MouseEvent.MOUSE_WHEEL, on_mouse_wheel);
  320.             addEventListener(MouseEvent.CLICK, on_click);
  321.        
  322.            
  323.             setTimeout(zzUp,200);
  324.             setInterval(moveIndOne,3000);
  325.            
  326.             humContainer=new Sprite();
  327.             addChild(humContainer);
  328.            
  329.             setInterval(addHum,2000);
  330.             //setTimeout(addFl,200);
  331.  
  332.            
  333.            
  334.            
  335.  
  336.         }
  337.        
  338.  
  339.     }
  340.    
  341. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement