wbfasong

by yangliu9812
♥0 | Line 119 | Modified 2017-01-10 15:18:52 | MIT License
play

ActionScript3 source code

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

// forked from zob's soundSpectrumCity

package

{

    import flash.display.*;

    import flash.filters.*;

    import flash.events.*;

    import flash.net.*;

    import flash.utils.*;

    import flash.geom.*;

    import flash.text.*;

    import flash.system.*;

    import flash.ui.*;

    import flash.media.*;

    import net.hires.debug.Stats;

    import frocessing.color.ColorHSV;

    import com.bit101.components.PushButton;

    import com.bit101.components.InputText;

    

    [SWF(width=465,height=465,backgroundColor=0x000000,frameRate=30)]

    public class City4 extends Sprite

    {

        private var SECTOR:int = 10;

        private var LEVEL:int = 3;

        private var LEVEL_HEIGHT:int = 20;

        private var RADIUSX:int = 30;

        private var RADIUSZ:int = 15;



        private var edgeA:Array = new Array();

        private var edgeB:Array = new Array();

        

        private var D2R:Number = Math.PI/180;

        private var R2D:Number = 180/Math.PI;

        

        private var cPos:Dot = new Dot(0, 0);

        

        private var points:Array = new Array();

        

        //planning

        private var regions:Array = new Array();

        private var gCount:int = 300;

        private var gwidth:int = 1000;//465;

        private var gheight:int = 1000;//465;

        

        //building

        

        private var blength:Number = 100;

        private var bwidth:Number = 200;

        private var bheight:Number = 200;

        

        private var offset:Dot = new Dot(-gwidth/2, -gheight/2);



        

        private var autoAlign:Boolean = false;

        

//////////////////////////////////////////////////////////////////////////////////////////////////

// drawTriangles

//////////////////////////////////////////////////////////////////////////////////////////////////

        

        private var viewport:Shape = new Shape();

        private var world:Matrix3D = new Matrix3D();

        private var vertices:Vector.<Number>  = new Vector.<Number>(0, false);

        private var projected:Vector.<Number> = new Vector.<Number>(0, false);

        private var indices:Vector.<int>      = new Vector.<int>(0, false);

        private var uvtData:Vector.<Number>   = new Vector.<Number>(0, false);

        private var projection:PerspectiveProjection = new PerspectiveProjection();

        

        private var sortedIndices:Vector.<int>;

        private var faces:Array = [];

        /**/

        

        

/////////////////////////////////////////////////////////////////////////////////////////////////

        private var sort_count:int = 0;

        private var rotate:Number = 0;

        private var refrest_sort_at:int = 100;

/////////////////////////////////////////////////////////////////////////////////////////////////



        private var snd:Sound;

        private var bytes:ByteArray = new ByteArray();

        private var bitmapData:BitmapData = new BitmapData(500,500, false, 0xFFFFFFFF);



        private var colors:Array = [0xFFCC32,0x333333,0x333333];

        private var alphas:Array = [1,0,0];

        private var ratios:Array = [0,64,255];

        private var m:Matrix = new Matrix();

        private var light:Sprite = new Sprite();

        private var lightRatio:Number = 48;

        



        private var ct:ColorTransform =  new ColorTransform(1,1,1,0.8);

        

        private var transparent:Boolean = false;

        

////////////////////////////////////////////////////////////////////////////////////////////////

        private var landVertices:Vector.<Number> = new Vector.<Number>(0, false);

        private var landProjected:Vector.<Number> = new Vector.<Number>(0, false);

        private var landIndices:Vector.<int> = new Vector.<int>(0, false);

        private var landUvtData:Vector.<Number> = new Vector.<Number>(0, false);

        

        

////////////////////////////////////////////////////////////////////////////////////////////////

        private var traffic:Array = new Array();

        private var landResizing:Number = 0.3;

        

        private var land_bmpd:BitmapData = new BitmapData(gwidth*landResizing, gheight*landResizing,false,0x0);

        

        private var top_down_view:Boolean = false;

        private var white_buildings:Boolean = false;

        

///////////////////////////////////////////////////////////////////

        private var windowX:int = 32;

        private var windowY:int = 16;

        

        private var trafficTimer:Timer;

        private var timerSpeed:int = 3;

        private var timerCount:int = 0;

        

        private var trafficSpeedLabel:TextField = new TextField();

        private var buildingsTxt:String = "";

        private var tf:TextFormat = new TextFormat();

        

        private var vcolor:ColorHSV = new ColorHSV(0);

        private var varyColor:int = 0;

        private var staticColor:uint = 0xFFFFCC32;



// dynamic link to url

/////////////////////////////////////////////////////////////////////

        private var url:String = "http://dhai-haif.rhcloud.com/lxpp/music/jynhznl.mp3";

        private var inputText:InputText;

        private var playButton:PushButton;

        private var soundChannel:SoundChannel = new SoundChannel();

        

        [SWF(width=465,height=465,backgroundColor=0x000011,frameRate=60)]

        public function City4()

        {

            addChild(new Bitmap(new BitmapData(465, 465, false, 0x000011)));

            addChild(new Stats());

            addChild(light);

            trafficSpeedLabel.text = "traffic speed: 1";

            

            tf.size = 10;

            tf.font = "Arial"

            trafficSpeedLabel.textColor = 0xFFFFFF;

            trafficSpeedLabel.setTextFormat(tf);

            trafficSpeedLabel.autoSize = "left";

            addChild(trafficSpeedLabel);

            trafficSpeedLabel.x = 465 - trafficSpeedLabel.width -5;

            var mc:MovieClip = new MovieClip();

            with(mc.graphics)

            {

                beginFill(0x0);

                drawRect(0,0, 465, 130);

                endFill();

            }

            mc.y = 465 - mc.height;



            m.translate(465/2, 465-130);



            regions.push(new Region);

            

            regions[0].vertices.push(new Dot(0 ,0));

            regions[0].vertices.push(new Dot(gwidth, 0));

            regions[0].vertices.push(new Dot(gwidth, gheight));

            regions[0].vertices.push(new Dot(0, gheight));

            

            init3D();

            

        }

        }
    }

}