flash on 2012-11-8

by mutantleg
♥0 | Line 73 | Modified 2012-11-08 21:43:03 | MIT License
play

ActionScript3 source code

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

package {
    import flash.events.Event;
    import flash.display.BitmapData;
    import flash.display.Bitmap;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        
        
        //based on
        //http://lodev.org/cgtutor/tunnel.html
        
        public var pic:Bitmap;
        public var tex:BitmapData;
        
        public var scw:int = 400;
        public var sch:int = 400;
        public var tot:int = scw*sch;
        
        public var vecDist:Vector.<int> = new Vector.<int>(tot,false);
        public var vecAng:Vector.<int> = new Vector.<int>(tot,false);
        
        
        public function FlashTest() {
            
            pic = new Bitmap(new BitmapData(scw,sch,false,0));
            addChild(pic);
            pic.width = 460;
            pic.height = 460;
            
            
            tex = new BitmapData(64,64,false,0);
            var i:int;
            var k:int;
            var yt:int;
            for (i = 0; i < 64; i++)
            {
               for (k = 0; k < 64; k++)
               {
                  tex.setPixel(k,i, k^i); 
               }//nextk 
            }//nexti
            
            pic.bitmapData.draw(tex);
       
           var w:Number;
           var h:Number;
       
           // pic.bitmapData.fillRect(pic.bitmapData.rect,0xFF0000);
       
           for (i = 0; i < sch; i++)
           {
               yt = i * scw;
               for (k = 0; k < scw; k++)
               {
                   w = k - (scw/2);
                   h = i - (sch/2);
                  vecDist[yt+k] = (32 * 64 / Math.sqrt(w*w+h*h)  ) % 64;
                  vecAng[yt+k] = (0.5*64*Math.atan2(h,w)) /3.1415;
                   
               }//nextk

           }//nexti
      
      
        //  onEnter(null);
         //onEnter(null);
          //     pic.bitmapData.fillRect(pic.bitmapData.rect,0xFF0000);
           
           
           stage.addEventListener(Event.ENTER_FRAME, onEnter);
        }//ctor
        
        public var anim:Number = 0;
        
        public function onEnter(e:Event):void
        {
            var c:uint;
            var b:BitmapData;
            var sx:int;
            var sy:int;
            var i:int;
            var k:int;
            var yt:int;
            
            anim += 0.01;
            
            b = pic.bitmapData;
            
            b.lock();
            
           // b.fillRect(b.rect, 0);
            
            sx = 64*anim;
            sy = 64; // + 64 * Math.cos(anim); //-Math.sin(anim); // + 64 *anim;
            
            for (i = 0; i < sch; i++)
           {
               yt = i * scw;
               for (k = 0; k < scw; k++)
               {
                   c = tex.getPixel( (vecDist[k+yt]+sx)%64, (vecAng[k+yt]+sy)%64    );
                   b.setPixel(k,i,c);
                   
               }//nextk
               
           }//nexti
            
            b.unlock();
        }//onenter
        
        
        
        
    }//classend
}