flash on 2010-8-13

by virtualex
♥0 | Line 80 | Modified 2010-08-13 08:31:30 | MIT License
play

ActionScript3 source code

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

package
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.events.Event;
    import flash.geom.Point;
    import flash.geom.Rectangle;
    import flash.display.Loader;
    import flash.system.LoaderContext; 
    import flash.display.LoaderInfo;
 
 
    import flash.net.URLRequest;

  
    import org.papervision3d.core.proto.MaterialObject3D;
    import org.papervision3d.materials.BitmapMaterial;
    import org.papervision3d.objects.DisplayObject3D;
    import org.papervision3d.objects.primitives.Plane;
    import org.papervision3d.objects.primitives.Sphere; 
    import org.papervision3d.view.BasicView;
  
    [SWF(width="900", height="480", backgroundColor="#000000", frameRate="31")]
    public class SlicedPlane extends BasicView
    {  
       // [Embed(source="s/spain-casa-la-pedrera.jpg")] 
        //private var bannerAsset:Class;
   
        private static const IMAGE_WIDTH:Number = 260;//680;
        private static const IMAGE_HEIGHT:Number = 280;//452; 
 //260px × 280px  
        private static const NUM_SLICES:int = 4;  
 
        private var planeContainer:DisplayObject3D = new DisplayObject3D();
         
        private var loader:Loader = new Loader(  );
        //private var url:String = "http://www.frunzenskayaunderground.ru/blog/uploads/2008/10/casa5.jpg"; 
        private var url:String = "http://www.ujakropolisz.hu/files/ua_images/STATIKUS/Kultura/CIK_labirintus_m_3.jpg";
       // private var url:String = "http://www.nikonsmallworld.com/images/world.jpg";
        private var bd: BitmapData;   
        //private var bm2:Bitmap; 
        private var planeArray:Array;


        public function SlicedPlane()
        { 
              super(900, 480);
              opaqueBackground = 0x000000;
              camera.focus = 100;
              camera.zoom = 10;
              init(); 
        }
     
        private function init():void  {
    
            var loader:Loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE , complete);
            loader.load(new URLRequest(url), new LoaderContext(true));              
        }
   
    private function complete(e:Event):void  {
             
  
            var loaderInfo:LoaderInfo = e.target as LoaderInfo;           
            loaderInfo.removeEventListener(Event.COMPLETE , complete);
 
//         scene.addChild(new Sphere());
 
       
            var bannerBitmap:Bitmap = loaderInfo.content as Bitmap;
   
           // var bmd:BitmapData = bm.bitmapData;              
           //        var bannerBitmap:Bitmap = new bannerAsset() as Bitmap;
   
/*            for(var i:int = 0; i < NUM_SLICES; i++) 
            {
                var slice:BitmapData = new BitmapData(IMAGE_WIDTH / NUM_SLICES, IMAGE_HEIGHT);
                var sourceRectangle:Rectangle = new Rectangle(i * IMAGE_WIDTH / NUM_SLICES, 0, IMAGE_WIDTH / NUM_SLICES, IMAGE_HEIGHT);
                slice.copyPixels(bannerBitmap.bitmapData, sourceRectangle, new Point(0, 0));
                var material:MaterialObject3D = new BitmapMaterial(slice);
                material.doubleSided = true;
                var plane:Plane = new Plane(material);
                plane.x = i * IMAGE_WIDTH / NUM_SLICES - IMAGE_WIDTH / 2;
                plane.rotationX = 360 / NUM_SLICES * i;
                planeContainer.addChild(plane);
            }
 */  
              planeArray = new Array ();
     /*         var i:int = 0;
              var j:int = 0; */
                        
             for(var i:int = 0; i <NUM_SLICES; i++) { //
                     planeArray[i] = new Array();              
                 for(var j:int = 0; j < NUM_SLICES; j++)  { // NUM_SLICES*/
                    var slice:BitmapData = new BitmapData(IMAGE_WIDTH / NUM_SLICES, IMAGE_HEIGHT/ NUM_SLICES);   
                    var sourceRectangle:Rectangle = new Rectangle(i * IMAGE_WIDTH / NUM_SLICES, j * IMAGE_HEIGHT / NUM_SLICES, IMAGE_WIDTH / NUM_SLICES, IMAGE_HEIGHT / NUM_SLICES);
                    slice.copyPixels(bannerBitmap.bitmapData, sourceRectangle, new Point(0, 0));    
                    var material:MaterialObject3D = new BitmapMaterial(slice);   
                    material.doubleSided = true;
                    var plane:Plane = new Plane(material);     
                    plane.x = ((i * IMAGE_WIDTH) / NUM_SLICES) - (IMAGE_WIDTH / 2);
                    plane.y = ((((NUM_SLICES-1)-j) * IMAGE_HEIGHT) / NUM_SLICES) -( IMAGE_HEIGHT / 2);
                     //plane.y = ((NUM_SLICES-1)-j * IMAGE_HEIGHT) / NUM_SLICES+IMAGE_HEIGHT/2; // - IMAGE_HEIGHT/ 4;
                   
                    planeArray[i][j]= plane;       
                    scene.addChild(plane); 
                      
                    
                  //  plane.rotationX = 360 / NUM_SLICES * i;
                    //planeContainer.addChild(plane); 
             
                                             
                 }
            }
  
 //            scene.addChild(planeContainer);
            startRendering();         
 
    } 
  
        public function completeHandler(event:Event):void
         { 
//             addChild(loader); 
        
 /*            for(var i:int = 0; i < NUM_SLICES; i++)
            {
                var slice:BitmapData = new BitmapData(IMAGE_WIDTH / NUM_SLICES, IMAGE_HEIGHT);
                var sourceRectangle:Rectangle = new Rectangle(i * IMAGE_WIDTH / NUM_SLICES, 0, IMAGE_WIDTH / NUM_SLICES, IMAGE_HEIGHT);
                slice.copyPixels(BitmapData(loader.content), sourceRectangle, new Point(0, 0));
  
                var material:MaterialObject3D = new BitmapMaterial(slice);
                material.doubleSided = true;
                var plane:Plane = new Plane(material);
                plane.x = i * IMAGE_WIDTH / NUM_SLICES - IMAGE_WIDTH / 2;
                plane.rotationX = 360 / NUM_SLICES * i;
 
                planeContainer.addChild(plane);
            }
 
            scene.addChild(planeContainer);
      
  */          
           
           
        } 
        
       
        override protected function onRenderTick(event:Event=null):void
        {  
          var plane:Plane;
          for(var i:int = 0; i < NUM_SLICES; i++) {
          
              for(var j:int = 0; j < NUM_SLICES; j++) {
                 plane = planeArray[i][j];    
                 plane.rotationX += Math.sin(j*i-1);   
                 plane.rotationY += Math.sin(j*i-1);                        
              }         
          }
    
           
            //planeContainer.rotationX += 2;
            super.onRenderTick(event);
        }
    }
}