flash on 2013-9-3

by mutantleg
♥0 | Line 194 | Modified 2013-09-03 17:32:47 | 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/rVOb
 */

package {
    import flash.text.TextField;
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() 
        {
            vecVert = new Vector.<Number>;
            vecFace = new Vector.<int>;
            
            var i:int;
            var k:int;
            var mw:int;
            var mh:int;
            var cw:Number;
            var ch:Number;
            
            var sx:Number;
            var sy:Number;
            
            sx = 64;
            sy = 64;
            
            cw = 32;
            ch = 32;
            mw = 8;
            mh = 8;
            
            var f:int;
            f = 0;
            
            for (i = 0; i < mh; i++)
            {
             for (k = 0; k < mw; k++)   
                {
                   vecVert.push(sx+k*cw + Math.random()*(cw*0.5));
                   vecVert.push(sy+i*ch + Math.random()*(ch*0.5)); 
                }
            }  
 
             var ek:int;
             var ei:int;
             var yt:int; 
 
              ek = mw - 1;
              ei = mh - 1;
                        
            for (i = 0; i < ei; i++)
             {
                yt = i *mw;
                          
                for (k = 0; k < ek; k++)
                {
                 if (Math.random() < 0.2) { continue; }   
                    
                  vecFace.push(0+k+yt);
                  vecFace.push(1+k+yt);
                  vecFace.push(0+k+mw+yt);
                                  
                  vecFace.push(1+k+yt);
                  vecFace.push(1+k+mw+yt);
                  vecFace.push(0+k+mw+yt);
           
                }//nextk
                 
             }//nexti
           
           
           /*
           vecTest = new Vector.<xVert>(vecVert.length/2, false);
           
           var num:int;
           num = vecTest.length;
           for (i = 0; i < num; i++) { vecTest[i] = new xVert(); }
           
           num = vecFace.length;
           
        //   var f:int;
           f = 0;
           for (i = 0; i < num; i+= 3)
           {
               vecTest[ vecFace[i] ].vecFace.push(f);
               vecTest[ vecFace[i+1] ].vecFace.push(f);
               vecTest[ vecFace[i+2] ].vecFace.push(f);
               
               f += 1;
           }//nexti
           */
           
           
            
            vecNode = new Vector.<xNode>(vecFace.length/3, false);
            
            var ax:Number; var ay:Number;
            var bx:Number; var by:Number;
            var cx:Number; var cy:Number;
           // var f:int;
           var m:int;
           var node:xNode;
            var num:int;
           
           num = vecFace.length; 
           m = 0;
            for (i = 0; i < num; i += 3)
            {
                node = new xNode();
                vecNode[m] = node;
                
            
                f = vecFace[i] * 2;
                ax = vecVert[f];
                ay = vecVert[f+1];
                
                f = vecFace[i+1] * 2;
                bx = vecVert[f];
                by = vecVert[f+1];
                
                f = vecFace[i+2] * 2;
                cx = vecVert[f];
                cy = vecVert[f+1];
                
                node.va = vecFace[i];
                node.vb = vecFace[i+1];
                node.vc = vecFace[i+2];
                
                node.cx = (ax+bx+cx)/3;
                node.cy = (ay+by+cy)/3;
                
                m += 1;
            }//nexti      
  
              var nb:xNode;
  
              num = vecNode.length       
            for (i = 0; i < num; i += 1)
            {
                node = vecNode[i];
                
                 for (k = i+1; k < num; k += 1)
                 {
                     nb = vecNode[k];
                     
                     var s:int;
                     s = 0;
                     if (node.va == nb.va ||
                     node.va == nb.vb ||
                     node.va == nb.vc) { s += 1;}
                    
                     if (node.vb == nb.va ||
                     node.vb == nb.vb ||
                     node.vb == nb.vc) { s += 1;}
                    
                     if (node.vc == nb.va ||
                     node.vc == nb.vb ||
                     node.vc == nb.vc) { s += 1;}
                     

                     if (s== 2)                              
                     {
                      node.vecNext.push(nb);
                      nb.vecNext.push(node);   
                         
                     }

                 }//nextk
            }//nexti 
         
             deb = new TextField();
             deb.mouseEnabled = false;
             deb.width = 320;
             deb.height = 240;
             addChild(deb);
            
            stage.addEventListener(Event.ENTER_FRAME, onEnter);
        }//ctor
        
        public var vecVert:Vector.<Number>; //2 num/vertex
        public var vecFace:Vector.<int>; //3 int /tri
        
 //       public var vecTest:Vector.<xVert>;
        
        public var vecNode:Vector.<xNode>;
        
        public var deb:TextField;
        
        public function onEnter(e:Event):void
        {
            var i:int;
            var num:int;
            
            graphics.clear();
            graphics.lineStyle(1, 0);
            
            /*
            num = vecVert.length;
            
            for (i = 0; i < num; i+= 2)
            {
                graphics.drawCircle(vecVert[i], vecVert[i+1], 3);
                
            }//nexti
            */
            
            num = vecFace.length;
            
            var ax:Number; var ay:Number;
            var bx:Number; var by:Number;
            var cx:Number; var cy:Number;
            var f:int;
            
            for (i = 0; i < num; i += 6)
            {
                f = vecFace[i] * 2;
                ax = vecVert[f];
                ay = vecVert[f+1];
                
                f = vecFace[i+1] * 2;
                bx = vecVert[f];
                by = vecVert[f+1];
                
                f = vecFace[i+2] * 2;
                cx = vecVert[f];
                cy = vecVert[f+1];
  
                  graphics.beginFill(0x808080,0.5);
                  graphics.moveTo(ax,ay);
                  graphics.lineTo(bx,by);
                  graphics.lineTo(cx,cy);
                  graphics.lineTo(ax,ay);
                  graphics.endFill();
                  
                f = vecFace[i+3] * 2;
                ax = vecVert[f];
                ay = vecVert[f+1];
                
                f = vecFace[i+4] * 2;
                bx = vecVert[f];
                by = vecVert[f+1];
                
                f = vecFace[i+5] * 2;
                cx = vecVert[f];
                cy = vecVert[f+1];
                
                  graphics.beginFill(0x707070,0.5); 
                  graphics.moveTo(ax,ay);
                  graphics.lineTo(bx,by);
                  graphics.lineTo(cx,cy);
                  graphics.lineTo(ax,ay);
                  graphics.endFill();
                   
            }//nexti
            
            
            
            num = vecNode.length;
            
            var node:xNode;
            
            var k:int;
            var nk:int;
            var nb:xNode;
            var vec:Vector.<xNode>;
            
            for (i = 0; i < num; i++)
            {
                node = vecNode[i];
                
                graphics.drawCircle(node.cx, node.cy, 2);
                
                vec = node.vecNext;
                nk = vec.length;
                for (k = 0; k < nk; k++)
                {
                    nb = vec[k];
                    graphics.moveTo(node.cx,node.cy);
                    graphics.lineTo(nb.cx, nb.cy);
                }//nextk
                
                
            }//nexti
            
            
        }//onenter
        
    }//classend
}

import flash.utils.Dictionary;

internal class xNode
{
 public var cx:Number = 0;
 public var cy:Number = 0;

    public var va:int = 0;
    public var vb:int = 0;
    public var vc:int = 0;
    
    
 public var vecNext:Vector.<xNode> = new Vector.<xNode>(0, false);   
    
}//xnode


/*
internal class xVert
{
  public var vecFace:Vector.<int> = new Vector.<int>(0, false);   
}//xvert
*/