Hybrid 2d/3d Z-Sorting

by bradsedito forked from 2D Z sorting (diff: 40)
♥1 | Line 58 | Modified 2014-11-15 01:05:49 | MIT License
play

ActionScript3 source code

/**
 * Copyright bradsedito ( http://wonderfl.net/user/bradsedito )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/7V6o
 */






package 
{
    import flash.display.Sprite;
    import flash.events.*;
    
    
    public class FlashTest extends Sprite 
    {
        private var boxes:Array;
        private var BOX_NUM:int = 10;
        public function FlashTest() 
        {
            var box:Box;           
            boxes = [];
            
            for(var i:int = 0; i < BOX_NUM; i++){
               box = new Box();
               boxes.push(box);
               addChild(box);   
            }
            addEventListener(Event.ENTER_FRAME, onLoop);
        }
        

        private function onLoop(e:Event):void
        {
            boxes.sortOn("y", Array.NUMERIC);
                
            for(var i:int = 0; i < BOX_NUM; i++){
              boxes[i].scaleX = boxes[i].scaleY = boxes[i].y / stage.stageHeight + 0.5;
              addChild(boxes[i]);    
            }
        }
    }
}
    
    
    
import flash.display.Sprite;
import com.greensock.*;
import com.greensock.easing.*;
import com.greensock.plugins.*;  
import flash.events.*;
    
    class Box extends Sprite 
    {
       public function Box() 
       {
           graphics.beginFill(0);
           //graphics.drawCircle( 0,0,50 );
           graphics.drawRect( 0,0,50,50 );           
           graphics.lineStyle( 6,0xFF0000 );
           //this.alpha = .6;           
           addEventListener(Event.ADDED_TO_STAGE, onAdded);           
       }   
       
       private function onAdded(e:Event):void
       {
         x = Math.random() * stage.stageWidth;
         y = Math.random() * stage.stageHeight;
         z = Math.random() * 500;//(x+y/2);//stage.stageHeight;
         animate();
       }
       
       private function animate():void
       {
            var rx:Number = Math.random() * stage.stageWidth,
                ry:Number = Math.random() * stage.stageHeight,
                rz:Number = Math.random() * ( 100 );
           TweenMax.to(this, 3, {x : rx, y : ry, z : rz, onComplete : animate});
       }
       
    }