您的位置:首页 > 理论基础 > 计算机网络

用actionscript做的一张分布式网络拓扑图

2012-11-28 21:43 134 查看
最近一个项目中要做一张分布式的网络拓扑图,本来想在网上找个可以用的flash,结果没找到,有一个贴出源码的但好像缺东西什么的。一怒之下突击了几天actionscript,虽然耽搁了几天的工作,但还是做出来了,结果领导说和另一个相关产品的风格不符,所以没用(那个是用silverlight做的)。但也不能白做呀,自己用不上,网上也缺少相关例子源码,索性贴出来共享,希望可以帮到有需要的朋友。效果图倒是贴不贴呢,我只是写的代码,图什么的都不是自己的,也不知道是谁的,不知道人家同意不,公司肯定不同意啦,不管啦,再说吧。



这个就是所有的文件,自己写的急,注释神马的都木有,不过这个也不难懂,先把源码贴上吧,算了,还是先贴效果图吧,无图无真相,希望老板别看到呀。



先看Icon.as吧,这个就是各位在效果图中所看到的图片按钮的加载,以下是源码

//开始

package

{

 import flash.display.Bitmap;

 import flash.display.BitmapData;

 import flash.display.Loader;

 import flash.display.Shape;

 import flash.display.Sprite;

 import flash.events.Event;

 import flash.events.IOErrorEvent;

 import flash.events.MouseEvent;

 import flash.net.URLRequest;

 import flash.text.TextField;

 

 public class Icon extends Sprite

 {

  private var _url:String;

  private var _loader:Loader = new Loader();

  private var _text:Tip = new Tip();

  private var _image:Sprite = new Sprite();

  private var _showTip:Boolean = true;

  

  public function Icon(file:String, tip:Boolean = true)

  {

   _url = file;

   _showTip = tip;

   

   _text.visible = false;

   addChildAt(_image, 0);

   addChildAt(_text, 1);

   

   _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

   _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError);

   _loader.load(new URLRequest(_url));

   

  }

  

  public function set showTip(tip:Boolean):void

  {

   _showTip = tip;

  }

  

  public function set text(text:String):void

  {

   _text.setLabel(text);

  }

  

  private function onComplete(event:Event):void

  {

   _image.addChild(Bitmap(_loader.content));

   if (_showTip)

   { 

    _image.addEventListener(MouseEvent.MOUSE_OVER, onMouseover);

    _image.addEventListener(MouseEvent.MOUSE_OUT, onMouseout);

   }

  }

  

  private function onError(event:Event):void

  {

   trace("Unable to load image: " + _url);

  }

  

  protected function onMouseover(event:MouseEvent):void

  {

   _text.x = event.localX;

   _text.y = _image.y + _image.height + 5;

   _text.visible = true;

  }

  

  protected function onMouseout(event:MouseEvent):void

  {

   _text.visible = false;

  }

  

 }

}

//结束

再看BigIcon.as(这个其实就是那个设备图标,还记得自己当初给文件起名的时候想了好久,最后还是搞了一个比较挫的名字,哈哈),源码

//开始

package

{

 import flash.display.Sprite;

 import flash.events.Event;

 import flash.events.MouseEvent;

 public class BigIcon extends Sprite

 {

  static public var IMAGE_WIDTH:Number = 44;

  static public var IMAGE_HEIGHT:Number = 28;

  

  private var _on:Icon;

  private var _off:Icon;

  private var _text:Tip = new Tip();

  

  static public var ON:String = "on";

  static public var OFF:String = "off";

  private var _status:String;

  

  public function BigIcon(name:String)

  {

   _on = new Icon("image/" + name + "_on.png", false);

   _off = new Icon("image/" + name + "_off.png", false); 

   

   addChildAt(_on, 0);

   addChildAt(_off, 1);

   

   _text.visible = false;

   addChildAt(_text, 2);

   

   off();

   addEventListener(MouseEvent.MOUSE_OVER, onMouseover);

   addEventListener(MouseEvent.MOUSE_OUT, onMouseout);

  }

  

  public function set text(text:String):void

  {

   _text.setLabel(text);

  }

  

  public function hide():void

  {

   _on.visible = false;

   _off.visible = false;

  }

  

  public function on():void

  {

   hide();

   _status = MyButton.ON;

   _on.visible = true;

  }

  

  public function off():void

  {

   hide();

   _status = MyButton.OFF;

   _off.visible = true;

  }

  

  public function get status():String

  {

   return _status;

  }

  

  public function onMouseover(e:MouseEvent):void

  {

   _text.x = e.localX + 5;

   _text.y = e.localY + 5;

   _text.visible = true;

  }

  

  public function onMouseout(e:MouseEvent):void

  {

   _text.visible = false;

  }

 }

}

//结束

突然看到上面的构造函数中的name了,其实图片名字也是有规则的(图片不能共享啊,不是自己的)。先看看图片名字吧



再看设备下边的四个精致的小按钮的,叫MyButton.as(这些文件的名字以最开始的项目图片中文件的名字为准,我有可能敲错),源码

//开始

package

{

 import flash.display.Sprite;

 import flash.events.Event;

 import flash.events.MouseEvent;

 import flash.ui.Mouse;

 

 import org.osmf.net.StreamingURLResource;

 public class MyButton extends Sprite

 {

  static public const IMAGE_WIDTH:Number = 12;

  static public const IMAGE_HEIGHT:Number = 12;

  

  static public const ON:String = "开启";

  static public const OFF:String = "关闭";

  static public const SUCCESS:String = "成功";

  static public const FAILED:String = "失败";

  

  private var _id:String;

  private var _name:String;

  

  private var _icon_on:Icon;

  private var _icon_off:Icon;

  private var _icon_success:Icon;

  private var _icon_failed:Icon;

  private var _status:String;

  

  public function MyButton(name:String, text:String)

  {

   _name = name;

   _icon_on = new Icon("image/" + name + "_on.png");

   _icon_on.text = MyButton.OFF + text;

   _icon_off = new Icon("image/" + name + "_off.png");

   _icon_off.text = MyButton.ON + text;

   _icon_success = new Icon("image/" + name + "_success.png");

   _icon_success.text = text + MyButton.SUCCESS;

   _icon_failed = new Icon("image/"+ name + "_failed.png");

   _icon_failed.text = text + MyButton.FAILED;

   

   alpha = .6;

   buttonMode = true;

   addEventListener(MouseEvent.MOUSE_OVER, onMouseover);

   addEventListener(MouseEvent.MOUSE_OUT, onMouseout);

   

   addChildAt(_icon_success, 0);

   addChildAt(_icon_failed, 1);

   addChildAt(_icon_on, 2);

   addChildAt(_icon_off, 3);

   

   off();

  }

  

  public function hide():void

  {

   _icon_on.visible = false;

   _icon_off.visible = false;

   _icon_success.visible = false;

   _icon_failed.visible = false;

  }

  

  public function on():void

  {

   hide();

   _status = MyButton.ON;

   _icon_on.visible = true;

  }

  

  public function off():void

  {

   hide();

   _status = MyButton.OFF;

   _icon_off.visible = true;

  }
ed59

  

  public function success():void

  {

   hide();

   _status = MyButton.SUCCESS;

   _icon_success.visible = true;

  }

  

  public function failed():void

  {

   hide();

   _status = MyButton.FAILED;

   _icon_failed.visible = true;

  }

  

  public function set status(name:String):void

  {

   switch(name)

   {

    case MyButton.ON:

     on();

     break;

    case MyButton.OFF:

     off();

     break;

    case MyButton.SUCCESS:

     success();

     break;

    case MyButton.FAILED:

     failed();

     break;

   }

  }

  

  public function get status():String

  {

   return _status;

  }

  

  public function onMouseover(e:MouseEvent):void

  {

   alpha = 1;

  }

  

  public function onMouseout(e:MouseEvent):void

  {

   alpha = .6;

  }

  

  public function toggleOnOff():Boolean

  {

   if (_status == MyButton.ON)

   {

    off();

    return true;

   }

   else if (_status == MyButton.OFF)

   {

    on();

    return true;

   }

   return false;

  }

  

  public function set id(id:String):void

  {

   _id = id;

  }

  

  public function get id():String

  {

   return _id;

  }

  

  public function getName():String

  {

   return _name;

  }

  

 }

}

//结束

贴得累死俺了,今天看了一张图片,说是一个php还是java程序员上什么相亲节目,女嘉宾等全灭啦,虽然平时不看什么蛋疼的相亲神马的,但还是让人不舒服啊,唉,why?看来俺是找不到老婆啦,不管了,再往下看,下来该什么了,哦还是个Alert,自己没有用flex,所以没有提示框,做了个相当难看的提示,其实还好了,改改还是可以见人的

Message.as

//开始

package

{

 import flash.display.Sprite;

 import flash.events.TimerEvent;

 import flash.text.TextField;

 import flash.text.TextFieldAutoSize;

 import flash.text.TextFormat;

 import flash.utils.Timer;

 

 public class Message extends Sprite

 {

  private var _content:TextField = new TextField();

  private var _timer:Timer = new Timer(3000, 1);

  private var _parent:Sprite;

  public function Message(text:String, parent:Sprite)

  {

   _parent = parent;

   var format:TextFormat = new TextFormat();

   format.color = 0xFF0000;

   format.size = 12;

   format.underline = false;

   _content.autoSize = TextFieldAutoSize.CENTER;

   _content.background = true;

   _content.backgroundColor = 0xFFFFFF;

   _content.height = 50;

   _content.width = 300;

   _content.border = true;

   _content.borderColor = 0xCCCCCC;

   _content.defaultTextFormat = format;

   addChild(_content);

   _content.text = text;

   _timer.start();

   _timer.addEventListener(TimerEvent.TIMER_COMPLETE, remove);

  }

  

  public function remove(e:TimerEvent):void

  {

   _parent.removeChild(this);

  }

 }

}

//结束

Tip.as

//开始

package {

 import flash.display.Sprite;

 import flash.text.TextField;

 import flash.text.TextFieldAutoSize;

 import flash.text.TextFormat;

 

 

 public class Tip extends Sprite {

  private var _label:TextField;

  

  public function Tip(text:String="") {

   _label = new TextField();

   _label.autoSize = TextFieldAutoSize.LEFT;

   _label.background = true;

   _label.border = true;

   _label.borderColor=0x999999;

   _label.condenseWhite = true;

   _label.width= 200;

   _label.height = 200;

   

   var format:TextFormat = new TextFormat();

   format.color = 0x333333;

   format.size = Netshow.FONT_SIZE;

   format.underline = false;

   format.leftMargin = "5";

   format.rightMargin = "5";

   

   _label.defaultTextFormat = format;

   addChild(_label);

   

   setLabel(text);

  }

  

  public function setLabel(text:String):void {

   _label.text = text;

  }

 }

}

//结束

下来看一个比较重要的文件,就是把那个设备和几个小按钮组合到一块的文件Device.as

//开始

package

{

 import flash.display.Sprite;

 import flash.events.MouseEvent;

 import flash.text.TextField;

 import flash.text.TextFieldAutoSize;

 import flash.text.TextFormat;

 

 public class Device extends Sprite

 { 

  static public const BTN_CLOCK:String = "clock";

  static public const BTN_UPDATE:String = "update";

  static public const BTN_POLICY:String = "policy";

  static public const BTN_ADJUST:String = "adjust";

  

  private var _online:Boolean = false;

  

  private var _ip:String;

  

  private var _mac:String;

  

  private var _parentMac:String;

  

  private var _depth:Number;

  

  private var _clock:MyButton = new MyButton(Device.BTN_CLOCK, "clock");

  

  private var _update:MyButton = new MyButton(Device.BTN_UPDATE, "update");

  

  private var _policy:MyButton = new MyButton(Device.BTN_POLICY, "down");

  

  private var _adjust:MyButton = new MyButton(Device.BTN_ADJUST, "config");

  

  private var _img:BigIcon;

  

  private var _sprite:Sprite;

  

  public function Device(mac:String, ip:String, parentMac:String, plies:Number)

  {

   _mac = mac;

   _ip = ip;

   _parentMac = parentMac;

   _depth = plies;

   

   _img = _depth == 0 ? new BigIcon("top") : new BigIcon("device");

 

   _update.id = _mac;

   _clock.id = _mac;

   _policy.id = _mac;

   _adjust.id = _mac;

   _update.x = 0;

   _adjust.x = MyButton.IMAGE_WIDTH + 5;

   _policy.x = 2*(MyButton.IMAGE_WIDTH + 5);

   _clock.x = 3*(MyButton.IMAGE_WIDTH + 5);

   _update.y = _adjust.y = _policy.y = _clock.y = BigIcon.IMAGE_HEIGHT + 2;

   _img.x = 10;

   _img.y = 0;

   

   var label:TextField = new TextField();

   label.x = 0;

   label.y = BigIcon.IMAGE_HEIGHT + MyButton.IMAGE_HEIGHT + 4;

   label.width = 60;

   label.height = 16;

   label.alpha = .8;

   label.autoSize = TextFieldAutoSize.CENTER;

   var format:TextFormat = new TextFormat();

   format.color = 0x333333;

   format.size = Netshow.FONT_SIZE;

   label.defaultTextFormat = format;

   if (ip.length > 15)

   {

    ip = ip.substr(0, 13) + "...";

   }

   label.text = ip;

   

   addChild(label);

   addChild(_clock);

   addChild(_update);

   addChild(_policy);

   addChild(_adjust);

   addChild(_img);

   

   _online = false;

   

   updateText();

  }

  

  public function updateText():void

  {

   var text:String;

   text = "your text";

   _img.text = text;

  }

  

  public function getBtnByName(name:String):MyButton

  {

   switch(name)

   {

    case Device.BTN_ADJUST:

     return _adjust;

    case Device.BTN_CLOCK:

     return _clock;

    case Device.BTN_POLICY:

     return _policy;

    case Device.BTN_UPDATE:

     return _update;

   }

   return null;

  }

  

  public function get online():Boolean

  {

   return _online;

  }

  

  public function set online(value:Boolean):void

  {

   _img.on();

   _online = value;

  }

  

  public function get depth():Number

  {

   return _depth;

  }

  

  public function get mac():String

  {

   return _mac;

  }

  

  public function get parentMac():String

  {

   return _parentMac;

  }

  

  public function visiableWidth():Number

  {

   return 4*(MyButton.IMAGE_WIDTH+5);

  }

  

  public function visiableHeight():Number

  {

   return MyButton.IMAGE_HEIGHT + BigIcon.IMAGE_HEIGHT + 20;

  }

 

 }

}

//结束

现在在网上找点可以用的东西可真不爽,不是要分就是注册或者其他什么讨厌的方法,再来看怎么把所有的组合到一块形成分布图显示,NetShow.as

//开始

package

{

 import flash.display.*;

 import flash.events.Event;

 import flash.events.MouseEvent;

 import flash.ui.Mouse;

 

 public class Netshow extends Sprite

 {

  static public const DEVICE_WIDTH:Number = 50;

  static public const DEVICE_HEIGHT:Number = 50;

  

  static public const DEVICE_PADDING_X:Number = 50;

  static public const DEVICE_PADDING_Y:Number = 50;

  

  static public const ONLINE_LINE_COLOR:Number = 0x00ff00;

  static public const OFFLINE_LINE_COLOR:Number = 0xCCCCCC;

  static public const LINE_WIDTH:Number = 2;

  static public const FONT_SIZE:Number = 10;

  

  private var _devices:Array;

  

  private var _relation:Array;

  

  public function Netshow()

  {

   _devices = new Array();

  }

  

  public function addDevice(device:Device):void

  {

   _devices.push(device);

   this.addChild(device);

  }

  

  public function getDevicesByDeepth(deepth:Number):Array

  {

   var devices:Array = new Array();

   

   if (deepth >= 0 )

   {

    for (var i:int=0; i<_devices.length; i++)

    {

     if ( _devices[i].depth == deepth )

     {

      devices.push(_devices[i]);

     }

    }

   }

   

   return devices;

  }

  

  private function getDevicesByParentMac(mac:String):Array

  {

   var devices:Array = new Array();

   

   for (var i:int=0; i<_devices.length; i++)

   {

    if ( _devices[i].parentMac == mac )

    {

     devices.push(_devices[i]);

    }

   }

   

   return devices;

  }

  

  private function addRelation(depth:Number, devices:Array):void

  {

   var btn:MyButton;

   for (var i:Number=0; i<devices.length; i++)

   {

    btn = devices[i].getBtnByName(Device.BTN_ADJUST);

    btn.addEventListener(MouseEvent.CLICK, btnClick);

    btn = devices[i].getBtnByName(Device.BTN_CLOCK);

    btn.addEventListener(MouseEvent.CLICK, btnClick);

    btn = devices[i].getBtnByName(Device.BTN_UPDATE);

    btn.addEventListener(MouseEvent.CLICK, btnClick);

    btn = devices[i].getBtnByName(Device.BTN_POLICY);

    btn.addEventListener(MouseEvent.CLICK, btnClick);

    _relation[depth].push(devices[i]);

   }

  }

  

  private function setRelation():void

  {

   var deep:Number = maxDeepth();

   _relation = new Array();

   

   for (var i:Number=0; i<=deep; i++)

   {

    _relation[i] = new Array();

    var parent_deepth_devices:Array = getDevicesByDeepth(i-1);

    

    if (parent_deepth_devices.length == 0)

    {

     addRelation(i, getDevicesByDeepth(i));

    }

    else

    {

     for (var m:Number=0; m<parent_deepth_devices.length; m++)

     { 

      addRelation(i, getDevicesByParentMac(parent_deepth_devices[m].mac));

     }

    }

   }

  }

  

  private function maxDeepth():Number

  {

   var deep:Number = 0;

   for (var i:int=0; i<_devices.length; i++)

   {

    if ( _devices[i].depth > deep )

    {

     deep = _devices[i].depth;

    }

   }

   

   return deep;

  }

  

  public function setRelationPos():void

  {

   var pos_x:Number = 0;

   var pos_y:Number = 0;

   for (var deepth:Number=0; deepth<_relation.length; deepth++)

   {

    pos_x = 0;

    if ( _relation[deepth].length )

    {

     for (var i:Number=0; i<_relation[deepth].length; i++)

     {

      _relation[deepth][i].x = pos_x;

      _relation[deepth][i].y = pos_y;

      pos_x = pos_x + Netshow.DEVICE_WIDTH + Netshow.DEVICE_PADDING_X;

     }

    }

    

    pos_y = pos_y + Netshow.DEVICE_HEIGHT  + Netshow.DEVICE_PADDING_Y;

   }

  }

  

  public function getDeviceByMac(mac:String):Device

  {

   for (var i:int=0; i<_devices.length; i++)

   {

    if ( _devices[i].mac == mac )

    {

     return _devices[i];

    }

   }

   

   return null;

  }

 

  public function isBrother(dev1:Device, dev2:Device):Boolean

  {

   if (!dev1 || !dev2)

   {

    return false;

   }

  

   return dev1.parentMac == dev2.parentMac;

  }

  

  public function connectRelation():void

  {

   var x_from:Number = 0, x_to:Number = 0;

   var y_from:Number = 0, y_to:Number = 0;

   var y_protect:Number = 0;

   var color:Number = 0;

   for (var depth:Number=1; depth<_relation.length; depth++)

   {

    y_protect = 0;

    for (var i:Number=0; i<_relation[depth].length; i++)

    {

     var parentDevice:Device = getDeviceByMac(_relation[depth][i].parentMac);

     if (parentDevice == null)

      continue;

     if (!isBrother(_relation[depth][i], _relation[depth][i-1]))

     {

      if (y_protect < DEVICE_PADDING_Y - 10)

      {

       y_protect += 5;

      }

     }

     

     color = parentDevice.online && _relation[depth][i].online ? Netshow.ONLINE_LINE_COLOR : Netshow.OFFLINE_LINE_COLOR;

     x_from = parentDevice.x + Math.ceil(parentDevice.visiableWidth()/2);

     y_from = parentDevice.y + parentDevice.visiableHeight();

     x_to = _relation[depth][i].x + Math.ceil(_relation[depth][i].visiableWidth()/2);

     y_to = _relation[depth][i].y;

     graphics.lineStyle(Netshow.LINE_WIDTH, color, .5);

     graphics.moveTo( x_from, y_from );

     graphics.lineTo( x_from, y_to - y_protect);

     graphics.lineTo(x_to, y_to - y_protect);

     graphics.lineTo(x_to, y_to);

    }

   }

  }

  

  public function showDevices():void

  {

   setRelation();

   

   setRelationPos();

   

   connectRelation();

  }

  

  public function count():Number

  {

   return _devices.length;

  }

  

  public function setDevicesBtnStatusByParentMac(mac:String, btn_name:String, status:String):void

  {

   var devices:Array = getDevicesByParentMac(mac);

   

   for (var i:Number=0; i<devices.length; i++)

   {

    devices[i].getBtnByName(btn_name).status = status;

    devices[i].updateText();

    setDevicesBtnStatusByParentMac(devices[i].mac, btn_name, status)

   }

  }

  

  public function alert(text:String):void

  {

   var _msg:Message = new Message(text, this);

   _msg.x = Math.ceil(this.width/2 - _msg.width);

   _msg.y = 30;

   addChild(_msg);

  }

  

  public function btnClick(e:MouseEvent):void

  {

   var btn:MyButton = e.currentTarget as MyButton;

   var parentDevice:Device = getDeviceByMac(getDeviceByMac(btn.id).parentMac);

   if (parentDevice==null || parentDevice.getBtnByName(btn.getName()).status != MyButton.OFF)

   {

    if (btn.toggleOnOff())

    {

     getDeviceByMac(btn.id).updateText();

     setDevicesBtnStatusByParentMac(btn.id, btn.getName(), btn.status);

    } 

   }

   else

   {

    alert("you know"); 

   }

  }

 }

}

//结束

其实actionscript和javascript交互还是比较好的,actionscript负责显示,javascript负责逻辑,这样效率应该能高些(这样说或许是因为自己的javascript能熟练些吧),到这基本上就完了,剩下那几个文件基本上是废材,废就废吧,一块整出来,反正咱也不是什么有头有脸的人物,菜鸟表示无压力呀。

TextInput.as

package

{

 import flash.display.Sprite;

 import flash.events.MouseEvent;

 import flash.text.TextField;

 import flash.text.TextFieldType;

 import flash.text.TextFieldAutoSize;

 import flash.text.TextFormat;

 

 public class TextInput extends Sprite

 {

  private var _valueField:TextField = new TextField();

  private var _labelField:TextField = new TextField();

  

  public function TextInput(w:Number, h:Number, label:String, value:String = "")

  {

   var format:TextFormat = new TextFormat();

   format.color = 0x333333;

   format.size = Netshow.FONT_SIZE;

   format.underline = false;

   format.leftMargin = "5";

   format.rightMargin = "5";

   _labelField.defaultTextFormat = format;

   _labelField.text = label;

   

   _valueField.type = TextFieldType.INPUT;

   _valueField.width = w;

   _valueField.height = h;

   _valueField.border = true;

   _valueField.borderColor = 0xCCCCCC;

   _valueField.alpha = .8;

   _valueField.text = value;

   _valueField.x = _labelField.textWidth + 10;

   addChild(_labelField);

   addChild(_valueField)

   

   

   _valueField.addEventListener(MouseEvent.MOUSE_OVER, mouseover);

   _valueField.addEventListener(MouseEvent.MOUSE_OUT, mouseout);

  }

  

  public function get value():String

  {

   return _valueField.text;

  }

  

  private function mouseover(e:MouseEvent):void

  {

   alpha = 1;

   _valueField.borderColor = 0x00CCCC;

  }

  

  private function mouseout(e:MouseEvent):void

  {

   alpha = .8;

   _valueField.borderColor = 0xCCCCCC;

  }

 }

}

别用flex提供的控件说话啊,这样说会让人伤心的,我是写完了才发现flex提供的控件做起来更快。

//update_setting.as

package

{

 import flash.display.Sprite;

 import flash.text.TextField;

 import flash.text.TextFieldAutoSize;

 import flash.text.TextFormat;

 

 public class Setting_update extends Sprite

 {

  public static const INPUT_WIDTH:Number = 120;

  public static const INPUT_HEIGHT:Number = 20;

  

  private var _title:TextField = new TextField();

  

  public function Setting_update()

  {

   var outline:Sprite = new Sprite;

   outline.graphics.lineStyle(1, 0xCCCCCC, .9);

   outline.graphics.drawRect(0, 0, 160, 110);

   var format:TextFormat = new TextFormat();

   format.color = 0x333333;

   format.size = Netshow.FONT_SIZE;

   format.underline = false;

   format.leftMargin = "5";

   format.rightMargin = "5";

   _title.width = 160;

   _title.background = true;

   _title.backgroundColor = 0xFFFFFF;

   _title.defaultTextFormat = format;

   _title.htmlText = "<b>update</b>";

   _title.autoSize = TextFieldAutoSize.CENTER;

   

   outline.x = 0;

   outline.y = Math.ceil(_title.height/2);

   addChild(outline);

   addChild(_title);

  }

 }

}

还有个setting_policy.as

package

{

 import flash.display.Sprite;

 import flash.events.MouseEvent;

 import flash.net.URLRequest;

 import flash.net.URLVariables;

 import flash.net.sendToURL;

 import flash.text.TextField;

 import flash.text.TextFieldAutoSize;

 import flash.text.TextFormat;

 

 import mx.events.Request;

 public class Setting_policy extends Sprite

 {

  public static const INPUT_WIDTH:Number = 120;

  public static const INPUT_HEIGHT:Number = 20;

  

  private var _saveUrl:String = "";

  private var _title:TextField = new TextField();

  private var _device:TextInput = new TextInput(INPUT_WIDTH, INPUT_HEIGHT, "field1");

  private var _name:TextInput = new TextInput(INPUT_WIDTH, INPUT_HEIGHT, "field2");

  private var _type:TextInput = new TextInput(INPUT_WIDTH, INPUT_HEIGHT, "field3");

  

  public function Setting_policy()

  { 

   var outline:Sprite = new Sprite;

   outline.graphics.lineStyle(1, 0xCCCCCC, .9);

   outline.graphics.drawRect(0, 0, 160, 126);

   var format:TextFormat = new TextFormat();

   format.color = 0x333333;

   format.size = Netshow.FONT_SIZE;

   format.underline = false;

   format.leftMargin = "5";

   format.rightMargin = "5";

   _title.width = 160;

   _title.background = true;

   _title.backgroundColor = 0xFFFFFF;

   _title.defaultTextFormat = format;

   _title.htmlText = "<b>策略下发</b>";

   _title.autoSize = TextFieldAutoSize.CENTER;

   _device.x = _name.x = _type.x = 0;

   _title.y = 0;

   _device.y = _title.height;

   _name.y = _title.height + INPUT_HEIGHT + 10;

   _type.y = _title.height + 2 * INPUT_HEIGHT + 20;

   outline.x = 0;

   outline.y = Math.ceil(_title.height/2);

   addChild(outline);

   addChild(_title);

   outline.addChild(_device);

   outline.addChild(_name);

   outline.addChild(_type);

   

   var submit:Icon = new Icon("image/submit.jpg", false);

   submit.buttonMode = true;

   submit.addEventListener(MouseEvent.CLICK, save);

   submit.addEventListener(MouseEvent.MOUSE_OVER, onMouseover);

   submit.addEventListener(MouseEvent.MOUSE_OUT, onMouseout);

   submit.alpha = .6;

   submit.x = 110;

   submit.y = 105;

   outline.addChild(submit);

  }

  

  public function save(e:MouseEvent):void

  {

   var variables:URLVariables = new URLVariables();

   variables.name = _name.value;

   variables.type = _type.value;

   variables.device = _device.value;

   var request:URLRequest = new URLRequest(_saveUrl);

   request.data = variables;

   trace("sendToURL: " + request.url + "?" + request.data);

   try {

    sendToURL(request);

   }

   catch (e:Error) {

    // handle error here

   }

  }

  

  public function onMouseover(e:MouseEvent):void

  {

   (e.target as Sprite).alpha = 1;

  }

  

  public function onMouseout(e:MouseEvent):void

  {

   (e.target as Sprite).alpha = .6;

  }

 }

}

这下应该完了,那个phpdata的是个空文件,本来想和服务端交互的,没想到夭折了。

终于完了。有什么遗漏的地方发现了会添上去的。希望可以帮到像我刚开始一样需要一张简单的拓扑图的人。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息