⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stats.as

📁 著名的flash 3d引擎 away 3d的源代码
💻 AS
📖 第 1 页 / 共 2 页
字号:
package away3d.core.stats {	import away3d.cameras.*;	import away3d.containers.*;	import away3d.core.base.*;		import flash.display.Graphics;	import flash.display.Sprite;	import flash.events.*;	import flash.geom.ColorTransform;	import flash.geom.Matrix;	import flash.geom.Point;	import flash.geom.Rectangle;	import flash.net.*;	import flash.system.System;	import flash.text.TextField;	import flash.text.TextFormat;	import flash.ui.ContextMenu;	import flash.ui.ContextMenuItem;	import flash.utils.*;        public class Stats extends Sprite    {        private var totalFaces:int = 0;        private var meshes:int = 0;        public var scopeMenu:View3D = null;        public var displayMenu:Sprite = null;        public var geomMenu:Sprite = null;        private var lastrender:int;        private var fpsLabel:TextField;        private var titleField:TextField;        private var perfLabel:TextField;        private var ramLabel:TextField;        private var swfframerateLabel:TextField;        private var avfpsLabel:TextField;        private var peakLabel:TextField;        private var faceLabel:TextField;        private var faceRenderLabel:TextField;        private var geomDetailsLabel:TextField;        private var meshLabel:TextField;        private var fpstotal:int = 0;        private var refreshes:int = 0;        private var bestfps:int = 0;        private var lowestfps:int = 999;        private var bar:Sprite;        private var barwidth:int = 0;        private var closebtn:Sprite;        private var cambtn:Sprite;        private var clearbtn:Sprite;        private var geombtn:Sprite;        private var barscale:int = 0;        private var stageframerate:Number;        private var displayState:int;        private var camLabel:TextField;        private var camMenu:Sprite;        private var camProp:Array;        private var rectclose:Rectangle = new Rectangle(228,4,18,17);        private var rectcam:Rectangle = new Rectangle(207,4,18,17);        private var rectclear:Rectangle = new Rectangle(186,4,18,17);        private var rectdetails:Rectangle = new Rectangle(165,4,18,17);        private var geomLastAdded:String;        private var defautTF:TextFormat = new TextFormat("Verdana", 10, 0x000000);        //        private const VERSION:String = "2";        private const REVISION:String = "1.0";        private const APPLICATION_NAME:String = "Away3D.com";                public var sourceURL:String;                private var menu0:ContextMenuItem;        private var menu1:ContextMenuItem;        private var menu2:ContextMenuItem;                 public function Stats(scope:View3D, framerate:Number = 0)        {            scopeMenu = scope;            stageframerate = (framerate)? framerate : 30;            displayState = 0;            sourceURL = scope.sourceURL;                        menu0 = new ContextMenuItem("Away3D Project stats", true, true, true);            menu1 = new ContextMenuItem("View Source", true, true, true);             menu2 = new ContextMenuItem(APPLICATION_NAME+"\tv" + VERSION +"."+REVISION, true, true, true);                        scopeMenu.contextMenu = new ContextMenu();            scopeMenu.contextMenu.customItems = sourceURL? [menu0, menu1, menu2] : [menu0, menu2];                        menu0.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, displayStats);            menu1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, viewSource);            menu2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, visitWebsite);                        scopeMenu.contextMenu.hideBuiltInItems();        }                public function addSourceURL(url:String):void        {        	sourceURL = url;			scopeMenu.contextMenu.customItems = sourceURL? [menu0, menu1, menu2] : [menu0, menu2];        }                //Displays stats        public function displayStats(e:ContextMenuEvent):void        {             if(!displayMenu){             	scopeMenu.statsOpen = true;                generateSprite();                addEventMouse();                //applyShadow();             }        }                //Redirect to site        public function visitWebsite(e:ContextMenuEvent):void         {            var url:String = "http://www.away3d.com";            var request:URLRequest = new URLRequest(url);            try {                navigateToURL(request);            } catch (error:Error) {                            }        }                //View Source files        public function viewSource(e:ContextMenuEvent):void         {            var request:URLRequest = new URLRequest(sourceURL);            try {                navigateToURL(request, "_blank");            } catch (error:Error) {                            }        }                        //Closes stats and cleans up a bit...        private function closeStats():void        {        	scopeMenu.statsOpen = false;      		displayState = 0;            scopeMenu.removeEventListener(MouseEvent.MOUSE_DOWN, onCheckMouse);            scopeMenu.removeEventListener(MouseEvent.MOUSE_MOVE, updateTips);            scopeMenu.removeChild(displayMenu);            displayMenu = null;        }                //Mouse Events        private function addEventMouse():void        {              scopeMenu.addEventListener(MouseEvent.MOUSE_DOWN, onCheckMouse);            scopeMenu.addEventListener(MouseEvent.MOUSE_MOVE, updateTips);        }                private function updateTips(me:MouseEvent):void        {             if(scopeMenu != null){                var x:Number = displayMenu.mouseX;                var y:Number = displayMenu.mouseY;                var pt:Point = new Point(x,y);                try {                    if(rectcam.containsPoint(pt)){                        titleField.text = "CAMERA INFO";                    } else if(rectclose.containsPoint(pt)){                        titleField.text = "CLOSE STATS";                    } else if(rectclear.containsPoint(pt)){                        titleField.text = "CLEAR AVERAGES";                    } else if(rectdetails.containsPoint(pt)){                        titleField.text = "MESH INFO";                    } else{                        titleField.text = "AWAY3D PROJECT";                    }                } catch (e:Error) {                                    }            }        }                        private function onCheckMouse(me:MouseEvent):void        {             var x:Number = displayMenu.mouseX;            var y:Number = displayMenu.mouseY;            var pt:Point = new Point(x,y);                        if(rectcam.containsPoint(pt)){                if(displayState != 1){                    closeOtherScreen(displayState);                    displayState = 1;                    showCamInfo();                } else{                    displayState = 0;                    hideCamInfo();                }            } else if(rectdetails.containsPoint(pt)){                if(displayState != 2){                    closeOtherScreen(displayState);                    displayState = 2;                    showGeomInfo();                } else{                    displayState = 0;                    hideGeomInfo();                }            } else if(rectclose.containsPoint(pt)){                closeStats();            } else if(rectclear.containsPoint(pt)){                clearStats();            } else{                displayMenu.startDrag();                scopeMenu.addEventListener(MouseEvent.MOUSE_UP, mouseReleased);            }        }                private function closeOtherScreen(actual:int):void {             switch(actual){                case 1:                hideCamInfo();                break;                case 2:                hideGeomInfo();             }        }                private function mouseReleased(event:MouseEvent):void {            displayMenu.stopDrag();            scopeMenu.removeEventListener(MouseEvent.MOUSE_UP, mouseReleased);        }                //drawing the stats container        private function generateSprite():void        {                        displayMenu = new Sprite();            var myMatrix:Matrix = new Matrix();            myMatrix.rotate(90 * Math.PI/180);             displayMenu.graphics.beginGradientFill("linear", [0x333366, 0xCCCCCC], [1,1], [0,255], myMatrix, "pad", "rgb", 0);            displayMenu.graphics.drawRect(0, 0, 250, 86);                        displayMenu.graphics.beginFill(0x333366);            displayMenu.graphics.drawRect(3, 3, 244, 20);                         scopeMenu.addChild(displayMenu);                         displayMenu.x -= displayMenu.width*.5;            displayMenu.y -= displayMenu.height*.5;                        // generate closebtn            closebtn = new Sprite();            closebtn.graphics.beginFill(0x666666);            closebtn.graphics.drawRect(0, 0, 18, 17);            var cross:Sprite = new Sprite();            cross.graphics.beginFill(0xC6D0D8);            cross.graphics.drawRect(2, 7, 14, 4);            cross.graphics.endFill();            cross.graphics.beginFill(0xC6D0D8);            cross.graphics.drawRect(7, 2, 4, 14);            cross.graphics.endFill();            cross.rotation = 45;            cross.x+=9;            cross.y-=4;            closebtn.addChild(cross);            displayMenu.addChild(closebtn);            closebtn.x = 228;            closebtn.y = 4;                        // generate cam btn            cambtn = new Sprite();            var cam:Graphics = cambtn.graphics;            cam.beginFill(0x666666);            cam.drawRect(0, 0, 18, 17);            cam.endFill();            cam.beginFill(0xC6D0D8);            cam.moveTo(10,8);            cam.lineTo(16,4);            cam.lineTo(16,14);            cam.lineTo(10,10);            cam.lineTo(10,8);            cam.drawRect(2, 6, 8, 6);            cam.endFill();            displayMenu.addChild(cambtn);            cambtn.x = 207;            cambtn.y = 4;                        // generate clear btn            clearbtn = new Sprite();            var clear_btn:Graphics = clearbtn.graphics;            clear_btn.beginFill(0x666666);            clear_btn.drawRect(0, 0, 18, 17);            clear_btn.endFill();            clear_btn.beginFill(0xC6D0D8);            clear_btn.drawRect(6, 6, 6, 6);            clear_btn.endFill();            displayMenu.addChild(clearbtn);            clearbtn.x = 186;            clearbtn.y = 4;                        // generate geometrie btn            geombtn = new Sprite();            var geom_btn:Graphics = geombtn.graphics;            geom_btn.beginFill(0x666666);            geom_btn.drawRect(0, 0, 18, 17);            geom_btn.endFill();            geom_btn.beginFill(0xC6D0D8, 0.7);            geom_btn.moveTo(3,4);            geom_btn.lineTo(11,2);            geom_btn.lineTo(16,5);            geom_btn.lineTo(7,7);            geom_btn.lineTo(3,4);            geom_btn.beginFill(0x7D8489, 0.8);            geom_btn.moveTo(3,4);            geom_btn.lineTo(7,7);            geom_btn.lineTo(7,16);            geom_btn.lineTo(3,12);            geom_btn.lineTo(3,4);            geom_btn.beginFill(0xC6D0D8,1);            geom_btn.moveTo(7,7);            geom_btn.lineTo(16,5);            geom_btn.lineTo(15,13);            geom_btn.lineTo(7,16);            geom_btn.lineTo(7,7);            geom_btn.endFill();                         geom_btn.endFill();            displayMenu.addChild(geombtn);            geombtn.x = 165;            geombtn.y = 4;                        // generate bar            displayMenu.graphics.beginGradientFill("linear", [0x000000, 0xFFFFFF], [1,1], [0,255], new Matrix(), "pad", "rgb", 0);            displayMenu.graphics.drawRect(3, 22, 244, 4);            displayMenu.graphics.endFill();            bar = new Sprite();            bar.graphics.beginFill(0xFFFFFF);            bar.graphics.drawRect(0, 0, 244, 4);            displayMenu.addChild(bar);            bar.x = 3;            bar.y = 22;            barwidth = 244;            barscale = int(barwidth/stageframerate);                        // displays Away logo            displayPicto();                        // Generate textfields            // title            titleField = new TextField();            titleField.defaultTextFormat = new TextFormat("Verdana", 10, 0xFFFFFF, true, null,null,null,null,"left");            titleField.text = "AWAY3D PROJECT";            titleField.selectable = false;            titleField.height = 20;            titleField.width = 140;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -