flex实现人立方

package {
    import flash.display.*;
    import flash.events.*;
    import flash.net.*;
    import flash.utils.*;
    import flash.ui.*;
    import flash.text.*;
    import flash.geom.*;
    import flash.filters.*;
    import flash.xml.*;
    public class Contact extends MovieClip {
        private var stageX:uint;
        private var stageWidth:uint;
        private var stageHeight:uint;
        private var myXML:XML;
        private var XML_URL:String;
        private var myXMLURL:URLRequest;
        private var myLoader:URLLoader;
        private var _conf:Array;
        private var _title:Array;
        private var _people:Array;
        private var _connection:Array;
        private var _URL:Array;
        private var thisNum:uint;
        //
        private var _allCircle=[];
        private var _circle=[];
        private var _center=[];
        private var circleTxt:TextField;
        private var _tips=[];

        private var scaleNum:Array;
        private var _line:Sprite;
        private var _lineChild=[];
        private var ok:uint;
        private var variable:Number;
        private var variableScale:Number;
        private var lineStart:Array;
        private var lineEnd:Array;
        private var lineTxt:Array;
        private var my_url:Array;
        private var _listBG:Sprite;
        private var _searchBG:Sprite;
        private var _searchTxt:TextField;
        private var fullTxt:TextField;

        //
        public function Contact() {

            //初始化
            stageX=this.stage.stageWidth;
            stageWidth=1000;
            stageHeight=600;
            //读取XML文档
            ReadXML();

        }
        private function ReadXML() {
            //初始化XML地址
            XML_URL="Contact.xml";

            //创建URLRequest。
            myXMLURL=new URLRequest(XML_URL);
            //使用URLLoader导入数据。
            myLoader=new URLLoader(myXMLURL);
            //根据页面,添加侦听器
            myLoader.addEventListener(Event.COMPLETE,xmlLoaded);
        }
        //读取XML数据,赋值给数组
        private function xmlLoaded(evt:Event):void {
            //读取XML值,赋给数组
            myXML=new XML(evt.target.data);
            //配置
            _conf=new Array();
            _conf[0]=myXML.conf.titleFont.toString();
            _conf[1]=uint(myXML.conf.titleColor);
            _conf[2]=uint(myXML.conf.titleSize);
            _conf[3]=myXML.conf.headFont.toString();
            _conf[4]=uint(myXML.conf.headColor);
            _conf[5]=uint(myXML.conf.headSize);
            _conf[6]=myXML.conf.txtFont.toString();
            _conf[7]=uint(myXML.conf.txtColor);
            _conf[8]=uint(myXML.conf.txtSize);
            _conf[9]=uint(myXML.conf.radius);
            _conf[10]=uint(myXML.conf.lineColor);
            //以标题为搜索,建立数组
            _title=new Array();
            var num=myXML.items.item.length();
            for (var i=0; i<num; i++) {
                _title[i]=myXML.items.item[i].people[0].toString();
            }
            //所有成员属性
            _people=new Array();
            var numChild=0;
            for (i=0; i<num; i++) {
                _people[i]=new Array();
                numChild=myXML.items.item[i].people.length();
                for (var j=0; j<numChild; j++) {
                    _people[i][j]=new Array();
                    _people[i][j][0]=myXML.items.item[i].people[j].toString();
                    _people[i][j][1]=Number(myXML.items.item[i].people[j].attribute("scale"));
                    _people[i][j][2]=Number(myXML.items.item[i].people[j].attribute("coordinateX"));
                    _people[i][j][3]=Number(myXML.items.item[i].people[j].attribute("coordinateY"));
                    //_people[i][j][4]=(myXML.items.item[i].people[j].attribute("relation").toString());
                    trace(_people[i][j]);
                }
            }
            //关系连线参数
            _connection=new Array();
            _URL=new Array();
            for (i=0; i<num; i++) {

                _connection[i]=myXML.items.item[i].connection.toString();




            }
            //开始
            thisNum=0;
            ok=0;
            Circle(thisNum,stageWidth/2,stageHeight/2,1);
            //搜索
            Search();
        }
        private function Circle(num:uint,objX:Number,objY:Number,scale:Number) {
            //初始化变量
            scaleNum=new Array();
            for (var n=0; n<_people[num].length; n++) {
                scaleNum[n]=100;
            }
            //绘制精灵
            _allCircle[num]=new Sprite();
            _allCircle[num].name="_allCircle"+num;
            _allCircle[num].x=objX;
            _allCircle[num].y=objY;
            _allCircle[num].scaleX=scale;
            _allCircle[num].scaleY=scale;
            this.addChild(_allCircle[num]);
            //外面带透明度的环
            for (var i=0; i<_people[num].length; i++) {
                var whiteColor=0xffffff;
                var multiples:Number;
                _circle[i]=new Sprite();

            }
            //添加连线
            Line(thisNum);
            //缩放对象
            for (i=0; i<_people[num].length; i++) {
                _center[i]=new Sprite();
                _center[i].name="_center"+i;
                _center[i].scaleX=_circle[i].scaleX;
                _center[i].scaleY=_circle[i].scaleY;
                _center[i].x=_circle[i].x;
                _center[i].y=_circle[i].y;
                _allCircle[num].addChild(_center[i]);
                //添加中间方块
                var circleMin:Sprite=new Sprite();
                circleMin.graphics.lineStyle();
                circleMin.graphics.beginFill(258369126,1);
                circleMin.graphics.drawRoundRect(-20,-10,_conf[9]+10,20,5);
                circleMin.graphics.endFill();
                //  circleMin.filters=[new ColorMatrixFilter([0.4,0,0,0,0,0,0.4,0,0,0,0,0,0.4,0,0,0,0,0,1,0])];
                _center[i].addChild(circleMin);
                _center[i].buttonMode=true;
                // TransformColor(circleMin,_people[num][i][2],_people[num][i][3]);
                //中间文字
                circleTxt=new TextField();
                circleTxt.autoSize="left";
                circleTxt.text=_people[num][i][0];
                FmtTxt(circleTxt,_conf[0],_conf[1],_conf[2],true);
                circleTxt.x=-circleTxt.width/2;
                circleTxt.y=-circleTxt.height/2;
                _center[i].addChild(circleTxt);
                //透明按钮
                var circleBtn=new Sprite();
                circleBtn.graphics.beginFill(whiteColor,1);
                circleBtn.graphics.drawCircle(0,0,_conf[9]/2+2);
                circleBtn.graphics.endFill();
                _center[i].addChild(circleBtn);
                circleBtn.alpha=0;
                //添加监听器
                _center[i].mouseChildren = false;
                _center[i].addEventListener(MouseEvent.MOUSE_OVER,OverCircle);
                _center[i].addEventListener(MouseEvent.MOUSE_OUT,OutCircle);
                _center[i].addEventListener(MouseEvent.CLICK,ClickCircle);
                circleBtn.addEventListener(Event.ENTER_FRAME,CircleAlpha);
            }
            _allCircle[num].addEventListener(Event.ENTER_FRAME,CircleScale);
            _allCircle[num].addEventListener(Event.ENTER_FRAME,CircleCoordinate);
            //滑轮

            stage.addEventListener(MouseEvent.MOUSE_WHEEL ,onMouseWheelHandler);
            stage.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDownHandler);
            stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUpHandler);
        }
        //还原_allCircle的大小
        private function CircleScale(event:Event):void {
            var scale=(1-event.target.scaleX)/10;
            event.target.scaleX+=scale;
            event.target.scaleY+=scale;
            if (event.target.scaleX>0.995&&event.target.scaleX<1.005) {
                event.target.scaleX=1;
                event.target.scaleY=1;
                event.target.removeEventListener(Event.ENTER_FRAME,CircleScale);
            }
        }
        //还原_allCircle的位置
        private function CircleCoordinate(event:Event):void {
            var objX=(stageWidth/2-event.target.x)/10;
            var objY=(stageHeight/2-event.target.y)/10;
            event.target.x+=objX;
            event.target.y+=objY;
            if ((event.target.x>stageWidth/2-1&&event.target.x<stageWidth/2+2)&&(event.target.y>stageHeight/2-1&&event.target.y<stageHeight/2+2)) {
                event.target.x=stageWidth/2;
                event.target.y=stageHeight/2;
                event.target.removeEventListener(Event.ENTER_FRAME,CircleCoordinate);
            }
        }
        //圆最上面白色遮罩加深
        private function CircleAlpha(event:Event):void {
            event.target.alpha+=0.3;
            if (event.target.alpha>=0.7) {
                event.target.removeEventListener(Event.ENTER_FRAME,CircleAlpha);
                event.target.addEventListener(Event.ENTER_FRAME,AlphaFrame);
                event.target.parent.addEventListener(Event.ENTER_FRAME,MoveFrame);
            }
        }
        //改变圆环透明度
        private function AlphaFrame(event:Event):void {
            event.target.alpha-=0.15;
            if (event.target.alpha<=0) {
                event.target.removeEventListener(Event.ENTER_FRAME,AlphaFrame);
            }
        }
        //移动圆环
        private function MoveFrame(event:Event):void {
            var childNum=event.target.name.slice(7);
            event.target.x-=(event.target.x-_people[thisNum][childNum][2])/3;
            event.target.y-=(event.target.y+_people[thisNum][childNum][3])/3;
            if (Math.abs(event.target.x-_people[thisNum][childNum][2])<=1&&Math.abs(event.target.y+_people[thisNum][childNum][3])<=1) {
                event.target.x=_people[thisNum][childNum][2];
                event.target.y=-_people[thisNum][childNum][3];
                event.target.removeEventListener(Event.ENTER_FRAME,MoveFrame);
                ok++;
                if (ok==_people[thisNum].length) {
                    _line.addEventListener(Event.ENTER_FRAME,LineFrame);
                }
                _circle[childNum].alpha=1;
            }
            _circle[childNum].x=event.target.x;
            _circle[childNum].y=event.target.y;
            _circle[childNum].alpha+=0.1;
            if (_circle[childNum].alpha>=1) {
                _circle[childNum].alpha=1;
            }
        }
        //鼠标滑上
        private function OverCircle(event:MouseEvent):void {
            OverTips(event.target);
            event.target.removeEventListener(Event.ENTER_FRAME,OutFrame);
            event.target.addEventListener(Event.ENTER_FRAME,OverFrame);
        }
        //缓冲扩大
        private function OverFrame(event:Event):void {
            var childNum=event.target.name.slice(7);
            var scale=_people[thisNum][childNum][1]*100+45;
            if ((scaleNum[childNum]<scale-1)) {
                scaleNum[childNum]+=Math.ceil((scale-scaleNum[childNum])/2);
            } else {
                scaleNum[childNum]=scale;
                event.target.removeEventListener(Event.ENTER_FRAME,OverFrame);
            }
            event.target.scaleX=scaleNum[childNum]/100;
            event.target.scaleY=scaleNum[childNum]/100;
        }
        //点击提示
        private function OverTips(obj:Object) {
            var childNum=obj.name.slice(7);
            _tips[childNum]=new Sprite();
            _tips[childNum].graphics.lineStyle(1,0x999999,0.5);
            _tips[childNum].graphics.beginFill(0x000000,0.5);
            _tips[childNum].graphics.drawRoundRect(0,0,56,17,15);
            _tips[childNum].graphics.endFill();
            _tips[childNum].x=obj.x+obj.width/2;
            _tips[childNum].y=obj.y-_tips[childNum].height/2;
            //obj.parent.addChild(_tips[childNum]);
            var txt:TextField=new TextField();
            txt.autoSize="left";
            txt.text="";
            FmtTxt(txt,_conf[0],0xffffff,11,false);
            txt.x=(_tips[childNum].width-txt.width)/2;
            txt.y=(_tips[childNum].height-txt.height)/2;
            _tips[childNum].addChild(txt);
        }
        //鼠标移出
        private function OutCircle(event:MouseEvent):void {
            //OutTips(event.target);
            event.target.removeEventListener(Event.ENTER_FRAME,OverFrame);
            event.target.addEventListener(Event.ENTER_FRAME,OutFrame);
        }
        //缓冲缩小
        private function OutFrame(event:Event):void {
            var childNum=event.target.name.slice(7);
            var scale=_people[thisNum][childNum][1]*100;
            if (scaleNum[childNum]>scale+1) {
                scaleNum[childNum]-=Math.ceil((scaleNum[childNum]-scale)/2);
            } else {
                scaleNum[childNum]=scale;
                event.target.removeEventListener(Event.ENTER_FRAME,OutFrame);
            }
            event.target.scaleX=scaleNum[childNum]/100;
            event.target.scaleY=scaleNum[childNum]/100;
        }
        //删除点击提示
        private function OutTips(obj:Object) {
            var childNum=obj.name.slice(7);
            _tips[childNum].parent.removeChild(_tips[childNum]);
        }
        //鼠标点击
        private function ClickCircle(event:MouseEvent):void {
            event.target.removeEventListener(MouseEvent.CLICK,ClickCircle);
            var childNum=event.target.name.slice(7);
            var keyword:String=_people[thisNum][childNum][0];
            Remove(keyword);
        }
        //缩小圆环,最后移除
        private function RemoveFrame(event:Event):void {
            var num=event.target.name.slice(10);
            event.target.scaleX-=0.2;
            event.target.scaleY-=0.2;
            event.target.alpha-=0.2;
            if (event.target.scaleX<=0.3) {
                this.removeChild(_allCircle[num]);
                event.target.removeEventListener(Event.ENTER_FRAME,RemoveFrame);
            }
        }
        //添加连线
        private function Line(num:uint) {
            var startNum:uint;
            var endNum:uint;
            _line=new Sprite();
            _allCircle[num].addChild(_line);
            //获取直线相关数据
            var childLine:Array= _connection[num].split(",");
            lineStart=new Array();
            lineEnd=new Array();
            lineTxt=new Array();
            my_url=new Array();
            for (var i=0; i<childLine.length; i++) {
                var point:uint=0;
                var slash:int=childLine[i].indexOf("/");
                var colon:int=childLine[i].indexOf(":");
                var _url:int=childLine[i].indexOf(".");

                lineStart[i]=childLine[i].slice(0,slash);
                lineEnd[i]=childLine[i].slice(slash+1,colon);
                lineTxt[i]=childLine[i].slice(colon+1);
                my_url[i]=childLine[i].slice(_url+1);

                for (var j=0; j<_people[num].length; j++) {
                    if (lineStart[i]==_people[num][j][0]) {
                        startNum=j;
                        point++;
                    } else if (lineEnd[i]==_people[num][j][0]) {
                        endNum=j;
                        point++;
                    }
                    if (point==2) {
                        break;
                    }
                }
                _lineChild[i]=new Sprite();
                _lineChild[i].name="_lineChild"+i;
                _lineChild[i].graphics.lineStyle(10,0x000000,0,true);
                _lineChild[i].graphics.moveTo(_people[num][startNum][2],-_people[num][startNum][3]);
                _lineChild[i].graphics.lineTo(_people[num][endNum][2],-_people[num][endNum][3]);
                //
                _lineChild[i].graphics.lineStyle(1,0x000000,1,true);
                _lineChild[i].graphics.moveTo(_people[num][startNum][2],-_people[num][startNum][3]);
                _lineChild[i].graphics.lineTo(_people[num][endNum][2],-_people[num][endNum][3]);
                _lineChild[i].filters=[new ColorMatrixFilter([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0])];
                _lineChild[i].buttonMode=true;
                _lineChild[i].addEventListener(MouseEvent.MOUSE_OVER,OverLine);
                _lineChild[i].addEventListener(MouseEvent.MOUSE_OUT,OutLine);
                _lineChild[i].addEventListener(MouseEvent.CLICK,ClickLine);
                _line.addChild(_lineChild[i]);
            }
            _line.alpha=0;
        }
        //慢慢显示连线
        private function LineFrame(event:Event):void {
            _line.alpha+=0.06;
            if (_line.alpha>=0.4) {
                _line.removeEventListener(Event.ENTER_FRAME,LineFrame);
            }
        }
        //滑入连线
        private function OverLine(event:MouseEvent):void {
            event.target.alpha=10;
        }
        //滑出连线
        private function OutLine(event:MouseEvent):void {
            event.target.alpha=1;
        }
        //点击连线
        private function ClickLine(event:MouseEvent):void {
            var num=event.target.name.slice(10);
            //说明列表
            var _listSprite:Sprite=new Sprite();
            _listSprite.x=mouseX+10;
            _listSprite.y=mouseY;
            this.addChild(_listSprite);
            //标题
            var listTitle:TextField=new TextField();
            listTitle.width=120;
            listTitle.autoSize="left";
            listTitle.wordWrap=true;
            listTitle.text=lineStart[num]+", "+lineEnd[num];
            FmtTxt(listTitle,_conf[3],_conf[4],_conf[5],true);
            listTitle.x=7;
            listTitle.y=7;
            //正文
            var listTxt:TextField=new TextField();
            listTxt.width=230;
            listTxt.autoSize="left";
            listTxt.wordWrap=true;
            listTxt.text=lineTxt[num];
            FmtTxt(listTxt,_conf[6],_conf[7],_conf[8],false);
            listTxt.x=7;
            listTxt.y=listTitle.y+listTitle.height;
            listTxt.wordWrap=true;
            listTxt.multiline = true;
            //访问按钮
            var F_Text:TextField=new TextField();
            var circleMin:MovieClip=new MovieClip();
            F_Text.autoSize = TextFieldAutoSize.LEFT;
            F_Text.text="直接访问";

            F_Text.mouseEnabled=false;
            circleMin.addChild(F_Text);
            circleMin.buttonMode=true;
            circleMin.addEventListener(MouseEvent.MOUSE_OVER,mouse_Over);
            circleMin.addEventListener(MouseEvent.MOUSE_OUT,mouse_Out);
            circleMin.addEventListener(MouseEvent.MOUSE_DOWN,mosueDown(num));
            circleMin.src=num;
            F_Text.x=circleMin.x;
            F_Text.y=circleMin.y;
            //说明背景
            _listBG=new Sprite();
            _listBG.graphics.beginFill(0xeeeeee,1);
            _listBG.graphics.drawRoundRect(0,0,listTxt.width,listTxt.y+listTxt.height+30,15);
            _listBG.graphics.endFill();
            _listSprite.addChild(_listBG);
            _listBG.addChild(listTitle);
            _listBG.addChild(listTxt);
            _listSprite.addChild(circleMin);
            circleMin.x=_listBG.width-circleMin.width-100;
            circleMin.y=_listBG.height-circleMin.height-5;
            //关闭按钮
            var listClose:Sprite=new Sprite();
            listClose.graphics.beginFill(0xffffff,0);
            listClose.graphics.drawRoundRect(0,0,20,20,15);
            listClose.graphics.endFill();
            listClose.graphics.lineStyle(1,0x666666,1,true);
            listClose.graphics.moveTo(7,7);
            listClose.graphics.lineTo(13,13);
            listClose.graphics.moveTo(13,7);
            listClose.graphics.lineTo(7,13);
            listClose.x=_listBG.width-listClose.width-5;
            _listSprite.addChild(listClose);
            listClose.buttonMode=true;
            
            //
            _listBG.mouseChildren = false;
            stage.addEventListener(MouseEvent.MOUSE_DOWN,ClickStage);

        }
        private function mosueDown(i:int):Function {
            var Fun:Function=function(e:MouseEvent){
            
            stage.removeEventListener(MouseEvent.MOUSE_DOWN,ClickStage);
            i=e.currentTarget.src;
            var url:URLRequest=new URLRequest(my_url[i]);
            navigateToURL(url,"_blank")
            
            };
            return Fun;
        }
        private function mouse_Over(e:MouseEvent) {

            stage.removeEventListener(MouseEvent.MOUSE_DOWN,ClickStage);
        }
        private function mouse_Out(e:MouseEvent) {

            stage.addEventListener(MouseEvent.MOUSE_DOWN,ClickStage);
        }
        private function ClickStage(event:MouseEvent):void {
            if (event.target!=_listBG) {
                this.removeChild(_listBG.parent);
                stage.removeEventListener(MouseEvent.MOUSE_DOWN,ClickStage);
            }
        }
        private function ArrowUp(event:MouseEvent):void {
            _allCircle[thisNum].removeEventListener(Event.ENTER_FRAME,CircleCoordinate);
            removeEventListener(Event.ENTER_FRAME,OffsetX);
            variable=50;
            addEventListener(Event.ENTER_FRAME,OffsetY);
        }
        private function ArrowDown(event:MouseEvent):void {
            _allCircle[thisNum].removeEventListener(Event.ENTER_FRAME,CircleCoordinate);
            removeEventListener(Event.ENTER_FRAME,OffsetX);
            variable=-50;
            addEventListener(Event.ENTER_FRAME,OffsetY);
        }
        private function ArrowLeft(event:MouseEvent):void {
            _allCircle[thisNum].removeEventListener(Event.ENTER_FRAME,CircleCoordinate);
            removeEventListener(Event.ENTER_FRAME,OffsetY);
            variable=50;
            addEventListener(Event.ENTER_FRAME,OffsetX);
        }
        private function ArrowRight(event:MouseEvent):void {
            _allCircle[thisNum].removeEventListener(Event.ENTER_FRAME,CircleCoordinate);
            removeEventListener(Event.ENTER_FRAME,OffsetY);
            variable=-50;
            addEventListener(Event.ENTER_FRAME,OffsetX);
        }
        private function Enlarge(event:MouseEvent):void {
            _allCircle[thisNum].removeEventListener(Event.ENTER_FRAME,CircleScale);
            variableScale=0.3;
            addEventListener(Event.ENTER_FRAME,Scale);
        }
        private function Narrow(event:MouseEvent):void {
            _allCircle[thisNum].removeEventListener(Event.ENTER_FRAME,CircleScale);
            variableScale=-0.4;
            addEventListener(Event.ENTER_FRAME,Scale);
        }
        //偏移Y
        private function OffsetY(event:Event):void {

            var number=variable/4;
            _allCircle[thisNum].y+=number;
            variable-=number;
            if (Math.abs(variable)<=1) {
                variable=0;
                removeEventListener(Event.ENTER_FRAME,OffsetY);
            }
        }
        //偏移X
        private function OffsetX(event:Event):void {
            var number=variable/4;
            _allCircle[thisNum].x+=number;
            variable-=number;
            if (Math.abs(variable)<=1) {
                variable=0;
                removeEventListener(Event.ENTER_FRAME,OffsetX);
            }
        }
        //缩放
        private function Scale(event:Event):void {
            if (_allCircle[thisNum].scaleX<0.2&&variableScale<0) {
                removeEventListener(Event.ENTER_FRAME,Scale);
            } else if (_allCircle[thisNum].scaleX>1.8&&variableScale>0) {
                removeEventListener(Event.ENTER_FRAME,Scale);
            } else {
                var number=variableScale/4;
                _allCircle[thisNum].scaleX+=number;
                _allCircle[thisNum].scaleY+=number;
                variableScale-=number;
                if (Math.abs(variableScale)<=0.01) {
                    variableScale=0;
                    removeEventListener(Event.ENTER_FRAME,Scale);
                }
            }
        }
        //鼠标滑轮滚动
        private function onMouseWheelHandler(_evt:MouseEvent ):void {
            _allCircle[thisNum].removeEventListener(Event.ENTER_FRAME,CircleScale);
            if (_evt.delta>0) {
                variableScale=0.4;
                addEventListener(Event.ENTER_FRAME,Scale);
            } else {
                variableScale=-0.4;
                addEventListener(Event.ENTER_FRAME,Scale);
            }
        }
        private function onMouseDownHandler(_evt:MouseEvent ):void {
            _allCircle[thisNum].removeEventListener(Event.ENTER_FRAME,CircleCoordinate);
            removeEventListener(Event.ENTER_FRAME,OffsetX);
            removeEventListener(Event.ENTER_FRAME,OffsetY);
            _allCircle[thisNum].startDrag();
        }
        private function onMouseUpHandler(_evt:MouseEvent ):void {
            _allCircle[thisNum].stopDrag();
        }
        private function Search() {
            //
            _searchBG=new Sprite();
            _searchBG.graphics.lineStyle();
            _searchBG.graphics.beginFill(255013683,0.3);
            _searchBG.graphics.drawRoundRect(0,0,256,40,10);
            _searchBG.graphics.endFill();
            _searchBG.x=(stageWidth-_searchBG.width)/2;
            _searchBG.y=0;
            this.addChild(_searchBG);
            //
            var white=new Sprite();
            white.graphics.lineStyle();
            white.graphics.beginFill(0xffffff,1);
            white.graphics.drawRoundRect(0,0,200,20,5);
            white.graphics.endFill();
            white.x=7;
            white.y=13;
            _searchBG.addChild(white);
            //
            _searchTxt=new TextField();
            _searchTxt.type=TextFieldType.INPUT;
            _searchTxt.width=white.width;
            _searchTxt.height=white.height;
            var fmt=new TextFormat;
            fmt.font=_conf[0];
            fmt.color=0x999999;
            fmt.size=12;
            //应用以上设置的格式
            _searchTxt.defaultTextFormat=fmt;
            _searchTxt.x=white.x;
            _searchTxt.y=white.y;
            _searchBG.addChild(_searchTxt);
            //
            var button=new Sprite();
            button.graphics.lineStyle();
            button.graphics.beginFill(261724569,1);
            button.graphics.drawRoundRect(0,0,35,white.height,5);
            button.graphics.endFill();
            button.x=white.x+white.width+7;
            button.y=white.y;
            _searchBG.addChild(button);
            button.buttonMode=true;
            button.mouseChildren = false;
            button.addEventListener(MouseEvent.CLICK,SearchFun);
            //
            var btnTxt:TextField=new TextField();
            btnTxt.autoSize="left";
            btnTxt.text="搜索";
            FmtTxt(btnTxt,_conf[0],0xffffff,12,false);
            btnTxt.x=(button.width-btnTxt.width)/2;
            btnTxt.y=(button.height-btnTxt.height)/2;
            button.addChild(btnTxt);
        }
        private function SearchFun(evt:MouseEvent ):void {
            var keyword:String=_searchTxt.text;
            Remove(keyword);
        }
        //移除
        private function Remove(word:String) {
            var scale:Number=_allCircle[thisNum].scaleX;
            var objX:Number=_allCircle[thisNum].x;
            var objY:Number=_allCircle[thisNum].y;
            for (var i=0; i<_title.length; i++) {
                if (_title[i]==word&&_title[i]!=_title[thisNum]) {
                    //
                    _allCircle[thisNum].removeChild(_line);
                    for (var j=0; j<_people[thisNum].length; j++) {
                        _center[j].removeEventListener(Event.ENTER_FRAME,MoveFrame);
                        _allCircle[thisNum].removeChild(_center[j]);
                    }
                    _line.removeEventListener(Event.ENTER_FRAME,LineFrame);
                    _allCircle[thisNum].addEventListener(Event.ENTER_FRAME,RemoveFrame);
                    thisNum=i;
                    ok=0;
                    Circle(thisNum,objX,objY,scale);
                    _searchBG.parent.setChildIndex(_searchBG,numChildren-1);
                    break;
                }
            }
        }
        //格式化文本
        private function FmtTxt(childTxt,childFont,childColor,childSize,childBold) {
            childTxt.selectable=false;
            var fmt=new TextFormat;
            fmt.font=childFont;
            fmt.color=childColor;
            fmt.size=childSize;
            fmt.bold=childBold;
            //应用以上设置的格式
            childTxt.setTextFormat(fmt);
        }
        //根据角度,添加色彩
        private function TransformColor(obj:Object,objX:Number,objY:Number) {
            var w=objX;
            var h=objY;
            var degrees=Math.atan2(h,w)*180/Math.PI;
            var red=0;
            var green=0;
            var blue=0;
            if (degrees>=0&&degrees<60) {
                red=1;
                blue=degrees*1/60;
            } else if (degrees>=60&&degrees<120) {
                blue=1;
                red=1-(degrees-60)*1/60;
            } else if (degrees>=120&&degrees<=180) {
                blue=1;
                green=(degrees-120)*1/60;
            } else if (degrees>=-180&&degrees<-120) {
                green=1;
                blue=1-(degrees+180)*1/60;
            } else if (degrees>=-120&&degrees<-60) {
                green=1;
                red=(degrees+120)*1/60;
            } else if (degrees>=-60&&degrees<0) {
                red=1;
                green=1-(degrees+60)*1/60;
            }
            var color:ColorTransform=obj.transform.colorTransform;
            color.redMultiplier=red;
            color.greenMultiplier=green;
            color.blueMultiplier=blue;
            obj.transform.colorTransform=color;
        }
        //设置饱和度
        private function Saturation(obj:Object,num:Number) {
            var value=num;
            var red=0.3086;
            var green=0.6094;
            var blue=0.0820;
            var a=(1-value)*red+value;
            var b=(1-value)*green;
            var c=(1-value)*blue;
            var d=(1-value)*red;
            var e=(1-value)*green+value;
            var f=(1-value)*blue;
            var g=(1-value)*red;
            var h=(1-value)*green;
            var i=(1-value)*blue+value;
            obj.filters=[new ColorMatrixFilter([a,b,c,0,0,d,e,f,0,0,g,h,i,0,0,0,0,0,1,0])];
        }
    }

}

Contact.xml

<Contact>
  <conf>
    <titleFont>微软雅黑</titleFont>
    <titleColor>0xffffff</titleColor>
    <titleSize>13</titleSize>
    <headFont>宋体</headFont>
    <headColor>0x000000</headColor>
    <headSize>12</headSize>
    <txtFont>宋体</txtFont>
    <txtColor>0x666666</txtColor>
    <txtSize>12</txtSize>
    <radius>30</radius>
    <lineColor>0xffffff</lineColor>
  </conf>
  <items>
    <item>
    <people scale="1.4" coordinateX="0" coordinateY="-0.5">富士通</people>
    <people scale="1.1" coordinateX="-200" coordinateY="-10">中国</people>
    <people scale="1.1" coordinateX="-150" coordinateY="-70">北京</people>
    <people scale="1.1" coordinateX="-80" coordinateY="-90">沈阳</people>
    <people scale="1.3" coordinateX="-20" coordinateY="-150">日本</people>
    <people scale="1.1" coordinateX="80" coordinateY="-100">E</people>
    <people scale="1.1" coordinateX="150" coordinateY="90">F</people>
    <people scale="1.2" coordinateX="220" coordinateY="-80">G</people>
    <people scale="1.2" coordinateX="0" coordinateY="130">H</people>
    <people scale="1.1" coordinateX="150" coordinateY="-100">I</people>
    <people scale="1.3" coordinateX="100" coordinateY="20">J</people>
    <people scale="1.1" coordinateX="-160" coordinateY="120">K</people>
    <people scale="1.3" coordinateX="-130" coordinateY="40">L</people>
    <people scale="1.3" coordinateX="150" coordinateY="-20">M</people>
    <people scale="1.3" coordinateX="60" coordinateY="-165">N</people>
    <people scale="1.1" coordinateX="100" coordinateY="-50">O</people>
    <people scale="1.2" coordinateX="15" coordinateY="-90">P</people>
    <people scale="1.1" coordinateX="180" coordinateY="-150">Q</people>
    <connection>富士通/中国:富士通研究开发中心在中国北京.http://www.baidu.com,富士通/北京:北京富士通研究开发中心有限公司成立十周年.http://www.sina.com,沈阳/富士通:阿.http://www.google.cn,日本/富士通:22.http://www.sohu.com,E/富士通:我为.http://www.qq.com,F/富士通:谔谔.http://www.qq.com,G/富士通:555.http://www.soopat.com,H/富士通:888.http://www.qq.com,I/富士通:777.http://www.qq.com,J/富士通:445.http://www.qq.com,K/富士通:789.http://www.qq.com,L/富士通:789564.http://www.qq.com,M/富士通:78464.http://www.qq.com,N/富士通:78964.http://www.qq.com,O/富士通:7894.http://www.qq.com,P/富士通:789564.http://www.qq.com,Q/富士通:78954.http://www.qq.com,北京/沈阳:沈阳至北京.http://www.qq.com,北京/中国:13,G/I:666.http://www.qq.com,P/Q:789464.http://www.qq.com,P/O:78956464.http://www.qq.com,G/Q:78956464.http://www.qq.com,N/Q:7954.http://www.qq.com,N/M:789464.http://www.qq.com,E/N:eeeeeeeee.http://www.qq.com,I/Q:ddddddddddd.http://www.qq.com,P/N:GSSDFS.http://www.qq.com,J/O:DBBDFBDF.http://www.qq.com,M/G:FSDGFDGE.http://www.qq.com,I/N:fgfg.http://www.qq.com,M/I:HERGR.http://www.qq.com,O/G:FBFDGSDFS.http://www.qq.com,O/F:ERVF.http://www.qq.com,E/Q:TEGEFGER.http://www.qq.com,P/E:ERGERF.http://www.qq.com,P/J:VVS.http://www.qq.com,P/G:BERGER.http://www.qq.com</connection>
    
    </item>
    
  </items>
</Contact>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值