📄 component.as
字号:
// ActionScript file
//自定义VL组件,用于实现拓扑图
package{
import flash.display.Sprite;
import flash.events.MouseEvent;
import mx.collections.ArrayCollection;
import mx.controls.Button;
import mx.controls.Label;
import mx.core.Application;
import mx.core.UIComponent;
import mx.messaging.messages.ErrorMessage;
public class component {
public var m_butt:Button; //按钮点击
public var m_labl:Label; //显示信息用
public var is_open:Boolean; //表明是否被打开
public var has_son:Boolean; //是否有子节点
public var m_left:int; //位置左
public var m_top:int; //位置上
public var m_width:int; //宽度
public var m_height:int; //高度
public var director:int; //左还是右, 0 源, -1 左 ,1 右
public var id:int; //节点的ID
public var f_obj:component; //父亲节点的ID
public var s_objs:ArrayCollection; //子节点的ID, Reserved
public var is_orn:Boolean; //是否是root节点
public var name:String;
private var oldX:Number; //鼠标拖动原X坐标
private var oldY:Number; //鼠标拖动原Y坐标
/*
* 当鼠标拖动时,需要重新连线,对于一个节点来说需要重新连接此节点与父节点之间的连线
* 以及此节点的所有字节点之间的连线,方式是清除所有已存在的连线,重新连线
*/
public var UIComp:UIComponent; //用于承放line控件
public var line:Sprite; //画线控件
public var m_x:int; //连线不动端的X坐标
public var m_y:int; //连线不动端的Y坐标
public function component()
{
m_butt = new Button();
m_labl = new Label();
UIComp = new UIComponent();
line = new Sprite();
s_objs = new ArrayCollection();
is_open = false;
has_son = false;
is_orn = true;
director = 0;
m_left = 0;
m_top = 0;
}
private function onMouseMove(event:MouseEvent):void{
if(event.buttonDown){
var x:Number = event.stageX - oldX;
var y:Number = event.stageY - oldY;
oldX = event.stageX;
oldY = event.stageY;
move(m_left + x, m_top + y);
reDrawLine(f_obj.m_left, f_obj.m_top);
/*
* 字节点重新划线
*/
for(var i:int = 0; i < s_objs.length; i++)
{
s_objs.getItemAt(i).reDrawLine(m_left, m_top);
}
}
}
/*
* 鼠标松下函数,停止拖动
*
*/
private function onMouseDown(event:MouseEvent):void{
oldX = event.stageX;
oldY = event.stageY;
}
/*
* 按钮点击函数,弹出新的店铺
*
*/
private function onClick(event:MouseEvent):void{
if(is_open) //打开状态时,可以收回
{
//if(has_son == true)
//{
remove(this);
setClose();
//}
}
else //请求新的数据
{
setOpen();
Application.application.myVl = this;
Application.application.myService.url = "test.php?store_id=" + id;
Application.application.myService.send();
}
}
/*
* 显示component
*
*/
public function show():void{
Application.application.addChild(m_butt);
Application.application.addChild(m_labl);
Application.application.addChild(UIComp);
}
/*
* 删除子控件
*
*/
private function remove(obj:Object):void {
if(obj.has_son == true)
{
for(var i:int = 0; i < obj.s_objs.length; i++)
{
remove(obj.s_objs.getItemAt(i));
try {
Application.application.removeChild(obj.s_objs.getItemAt(i).m_butt);
Application.application.removeChild(obj.s_objs.getItemAt(i).m_labl);
Application.application.removeChild(obj.s_objs.getItemAt(i).UIComp);
} catch (e:ErrorMessage) {
}
}
}
}
public function setRect(width:int, height:int):void {
m_width = width;
m_height = height;
m_butt.width = width * 0.2; //按钮和Label的宽度按照1:4划分
m_butt.height = height;
m_butt.move(0, 0);
m_labl.width = width * 0.8;
m_labl.height = height;
m_labl.move(m_butt.width, 0);
}
public function setLable(arg:String):void
{
m_labl.text = arg;
}
public function setHasSon():void
{
has_son = true;
m_butt.label = "+"; //后面优化成图片
}
public function move(left:int, top:int):void
{
m_left = left;
m_top = top;
m_butt.move(left, top);
m_labl.move(m_butt.width + left, top);
}
public function setOpen()
{
is_open = true;
if(has_son == true)
{
m_butt.label = "-"; //后面优化成图片
}
else
{
m_butt.label = "";
}
}
public function setClose()
{
is_open = false;
m_butt.label = "+";
}
public function drawLine(x:int, y:int):void
{
m_x = x;
m_y = y;
line.graphics.lineStyle(1, 0x0099ff, 1);
line.graphics.moveTo(m_left + m_width * 0.1 , m_top + m_height * 0.5);
line.graphics.lineTo(x + m_width * 0.1, y + m_height * 0.5);
UIComp.addChild(line);
}
public function reDrawLine(x:int, y:int):void
{
m_x = x;
m_y = y;
line.graphics.clear();
line.graphics.lineStyle(1, 0x0099ff, 1);
line.graphics.moveTo(m_left + m_width * 0.1 , m_top + m_height * 0.5);
line.graphics.lineTo(x + m_width * 0.1, y + m_height * 0.5);
}
public function addMouseMoveListener()
{
m_butt.addEventListener(MouseEvent.MOUSE_MOVE, function(e:MouseEvent){onMouseMove(e)});
m_labl.addEventListener(MouseEvent.MOUSE_MOVE, function(e:MouseEvent){onMouseMove(e)});
}
public function addMouseDownListener()
{
m_butt.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
m_labl.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
}
public function addOnClickListener()
{
m_butt.addEventListener(MouseEvent.CLICK, onClick);
}
};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -