最近一個項目中要做一張分布式的網絡拓撲圖,本來想在網上找個可以用的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;
}
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的是個空檔案,本來想和服務端互動的,沒想到夭折了。
終于完了。有什麼遺漏的地方發現了會添上去的。希望可以幫到像我剛開始一樣需要一張簡單的拓撲圖的人。