wbfasong
♥0 |
Line 119 |
Modified 2017-01-10 15:18:52 |
MIT License
archived:2017-03-20 04:19:01
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();
}
}
}
}