`

flex设计器功能拆分之一(调整组件大小位置)

    博客分类:
  • Flex
阅读更多

只要是设计器就逃不脱对组件的动态调整。比如大小,位置是最常见的。

在flashBuilder中可以看到下面效果图:


在此简单实现,更多细节不予考虑,有点伤到我的神经了,总体设计思路图:



 由resizeUI完成核心功能。

ResizeContainer容器类:

package org.forever.view
{
	import flash.events.MouseEvent;
	
	import mx.collections.ArrayList;
	import mx.core.IUIComponent;
	
	import spark.components.SkinnableContainer;
	
	/**容器类*/
	public class ResizeContainer
	{
		
		
		private var _app_container:SkinnableContainer;
		private var _current_resizeUI:ResizeUI;
		private var _resizeUIList:ArrayList;

		public function get mouseMoveCallFun():Function
		{
			return _mouseMoveCallFun;
		}

		public function set mouseMoveCallFun(value:Function):void
		{
			_mouseMoveCallFun = value;
		}

		private var _mouseMoveCallFun:Function;
		
		public function ResizeContainer(app_container:SkinnableContainer){
			_app_container = app_container;
			initContainer();
			
			_resizeUIList = new ArrayList();
		}
		
		public function get current_resizeUI():ResizeUI
		{
			return _current_resizeUI;
		}

		public function set current_resizeUI(value:ResizeUI):void
		{
			if(null!=_current_resizeUI){
				_current_resizeUI.hideResizeUI();	
			}
			_current_resizeUI = value;
			
		}

		public function register(uicomp:IUIComponent):void{	
			var _resizeUI:ResizeUI = new ResizeUI(uicomp,_app_container);
			_resizeUI.resizeContainer = this;
			_resizeUIList.addItem(_resizeUI);
		}
		
		
		public function initContainer():void{
			_app_container.addEventListener(MouseEvent.MOUSE_DOWN,appContainerMouseDownHandler);
			_app_container.addEventListener(MouseEvent.MOUSE_MOVE,appContainerMouseMoveHandler);
			_app_container.addEventListener(MouseEvent.MOUSE_UP,appContainerMouseUpHandler);
		}
		
		public function appContainerMouseDownHandler(event:MouseEvent):void{
			event.stopImmediatePropagation();
			if(null!=_current_resizeUI){
				_current_resizeUI.hideResizeUI();	
			}
		}
		
		public function appContainerMouseMoveHandler(event:MouseEvent):void{
			if(null != _mouseMoveCallFun){
				_mouseMoveCallFun(event);
			}
		}
		
		public function appContainerMouseUpHandler(event:MouseEvent):void{
			if(null != _mouseMoveCallFun){
				_mouseMoveCallFun = null;
				if(null!=_current_resizeUI)_current_resizeUI.updateUIComp();
			}
		}
		
		
		
		
	}
}

 ResizeUI调整类:

package org.forever.view 
{
	import flash.display.DisplayObject;
	import flash.display.MorphShape;
	import flash.events.MouseEvent;
	import flash.ui.Mouse;
	
	import mx.controls.Alert;
	import mx.controls.Image;
	import mx.core.IUIComponent;
	import mx.core.IVisualElement;
	import mx.core.UIComponent;
	import mx.graphics.SolidColorStroke;
	import mx.logging.ILogger;
	import mx.logging.Log;
	import mx.managers.CursorManager;
	
	import spark.components.BorderContainer;
	import spark.components.SkinnableContainer;
	import spark.components.mediaClasses.VolumeBar;
	import spark.primitives.Line;

	/**
	 *调整UI组件的一个类,类似在flashBuilder对组件的一个调整功能 
	 */
	public class ResizeUI{
		private var _resizeContainer:ResizeContainer;
		private static var _log:ILogger = Log.getLogger("org.forever.report.view.ResizeUI");		
		private var _uiComp:IUIComponent;
		private var _container:SkinnableContainer;
		private var _centerRect:BorderContainer;
		private var _leftTopRect:BorderContainer;
		private var _rightTopRect:BorderContainer;
		private var _leftBottomRect:BorderContainer;
		private var _rightBottomRect:BorderContainer;		
		private var _topCenterRect:BorderContainer;
		private var _leftCenterRect:BorderContainer;
		private var _bottomCenterRect:BorderContainer;
		private var _rightCenterRect:BorderContainer;
		
		private var _leftTopTopCenterLine:Line;
		private var _topCenterRightTopLine:Line;
		private var _leftTopLeftCenterLine:Line;
		private var _leftCenterLeftBottomLine:Line;
		private var _leftBottomBottomCenterLine:Line;
		private var _bottomCenterRightBottomLine:Line;
		private var _rightCenterRightBottomLine:Line;
		private var _rightTopRightCenterLine:Line;
		
		private var _rect_w:Number = 6; 
		
		private var _startMove:Boolean = false;
		private var _moving:Boolean = false;
		
		public function get resizeContainer():ResizeContainer
		{
			return _resizeContainer;
		}

		public function set resizeContainer(value:ResizeContainer):void
		{
			_resizeContainer = value;
		}

		/**初始化中间矩形*/
		public function initCenterRect():void{
			_centerRect = new BorderContainer();
			_centerRect.setStyle("borderColor","ffffff");
			_centerRect.alpha = 1;
			_centerRect.visible = false;
			_container.addElement(_centerRect);
		}
		
		/**初始化所有矩形*/
		public function initAllRectProp():void{
			_leftTopRect = new BorderContainer();
			_rightTopRect = new BorderContainer();
			_leftBottomRect = new BorderContainer();
			_rightBottomRect = new BorderContainer();
			_topCenterRect = new BorderContainer();
			_leftCenterRect = new BorderContainer();
			_bottomCenterRect = new BorderContainer();
			_rightCenterRect = new BorderContainer();
			
			initRectProp(_leftTopRect);
			initRectProp(_rightTopRect);
			initRectProp(_leftBottomRect);
			initRectProp(_rightBottomRect);
			initRectProp(_topCenterRect);
			initRectProp(_leftCenterRect);
			initRectProp(_bottomCenterRect);
			initRectProp(_rightCenterRect);
		}
		
		/**初始化所有线条*/
		public function initAllLine():void{
			_leftTopTopCenterLine = new Line();
			_leftTopTopCenterLine.stroke = new SolidColorStroke(0x70b2ee);
			_topCenterRightTopLine = new Line();
			_topCenterRightTopLine.stroke = new SolidColorStroke(0x70b2ee);
			_leftTopLeftCenterLine = new Line();
			_leftTopLeftCenterLine.stroke = new SolidColorStroke(0x70b2ee);
			_leftCenterLeftBottomLine = new Line();
			_leftCenterLeftBottomLine.stroke = new SolidColorStroke(0x70b2ee);
			_leftBottomBottomCenterLine = new Line();
			_leftBottomBottomCenterLine.stroke = new SolidColorStroke(0x70b2ee);
			_bottomCenterRightBottomLine = new Line();
			_bottomCenterRightBottomLine.stroke = new SolidColorStroke(0x70b2ee);
			_rightCenterRightBottomLine = new Line();
			_rightCenterRightBottomLine.stroke = new SolidColorStroke(0x70b2ee);
			_rightTopRightCenterLine = new Line();
			_rightTopRightCenterLine.stroke =  new SolidColorStroke(0x70b2ee);
			_container.addElement(_leftTopTopCenterLine);
			_container.addElement(_topCenterRightTopLine);
			_container.addElement(_leftTopLeftCenterLine);
			_container.addElement(_leftCenterLeftBottomLine);
			_container.addElement(_leftBottomBottomCenterLine);
			_container.addElement(_bottomCenterRightBottomLine);
			_container.addElement(_rightCenterRightBottomLine);
			_container.addElement(_rightTopRightCenterLine);	
		}
		
		
		
		
		
		
		public function ResizeUI(uiComp:IUIComponent,container:SkinnableContainer){
			_uiComp = uiComp;
			_container = container;
			initCenterRect();
			initAllRectProp();
			updateCenterRect();
			initAllLine();
			
			_uiComp.addEventListener(MouseEvent.MOUSE_DOWN,uiCompMouseDownHandler);
			_uiComp.addEventListener(MouseEvent.MOUSE_MOVE,uiCompMouseMoveHandler);
			_uiComp.addEventListener(MouseEvent.MOUSE_UP,uiCompMouseUpHandler);
			
			_centerRect.addEventListener(MouseEvent.MOUSE_UP,centerRectMouseUpHandler);
			_centerRect.addEventListener(MouseEvent.MOUSE_MOVE,centerRectMouseMoveHandler);
			
			_rightCenterRect.addEventListener(MouseEvent.MOUSE_DOWN,rightCenterMouseDownHandler);
			_topCenterRect.addEventListener(MouseEvent.MOUSE_DOWN,topCenterRectMouseDownHandler);
			_bottomCenterRect.addEventListener(MouseEvent.MOUSE_DOWN,bottomCenterRectMouseDownHandler);
			_leftCenterRect.addEventListener(MouseEvent.MOUSE_DOWN,leftCenterRectMouseDownHandler);
			
			_rightTopRect.addEventListener(MouseEvent.MOUSE_DOWN,rightTopRectMouseDownHandler);
			_rightBottomRect.addEventListener(MouseEvent.MOUSE_DOWN,rightBottomRectMouseDownHandler);
			_leftTopRect.addEventListener(MouseEvent.MOUSE_DOWN,leftTopRectMouseDownHandler);
			_leftBottomRect.addEventListener(MouseEvent.MOUSE_DOWN,leftBottomRectMouseDownHandler);

		}
		
		public function uiCompMouseDownHandler(event:MouseEvent):void{
			event.stopImmediatePropagation();
			_resizeContainer.current_resizeUI = this;
			_startMove = true;//点击组件做移动准备
			_moving = false;//并未真正移动
			_log.debug("_centerRect准备开始移动......");
			updateCenterRect();
			showResizeUI();
		}
		
		public function updateUIComp():void{
			_uiComp.x = _leftTopRect.x + _leftTopRect.width;
			_uiComp.y = _leftTopRect.y + _leftTopRect.height;
			_uiComp.width = _rightTopRect.x - _leftTopRect.x - _leftTopRect.width;
			_uiComp.height = _leftBottomRect.y - _leftTopRect.y - _leftTopRect.height;
			_log.debug("updateUIComp.........");
			updateCenterRect();
		}
		
		public function updateCenterRect():void{
			_centerRect.x = _uiComp.x;
			_centerRect.y = _uiComp.y;
			_centerRect.width = _uiComp.width;
			_centerRect.height = _uiComp.height;
			_log.debug("updateCenterRect....."); 
			
		}
		
		
		public function uiCompMouseMoveHandler(event:MouseEvent):void{
			if(_startMove && !_moving){
				_uiComp.visible = false;
				_centerRect.visible = true;
				_centerRect.startDrag();
				_moving = true;
				_log.debug("_centerRect开始移动......");
			}
		}	
		
		public function centerRectMouseMoveHandler(event:MouseEvent):void{
			refreshResizeUI();
		}
		
		public function centerRectMouseUpHandler(event:MouseEvent):void{
			stopCenterRectMove();
			refreshResizeUI();
		}
		
		public function stopCenterRectMove():void{
			_startMove = false;
			_moving = false;
			_centerRect.stopDrag();
			_uiComp.x = _centerRect.x;
			_uiComp.y = _centerRect.y;
			_uiComp.visible = true;
			_centerRect.visible = false;
			_log.debug("停止_centerRect的移动........");
			
		}
		
		public function uiCompMouseUpHandler(event:MouseEvent):void{
			stopCenterRectMove();
		}
		
		public function rightCenterMouseOverHandler(event:MouseEvent):void{
			Mouse.hide();
		}
		
		public function rightCenterMouseOutHandler(event:MouseEvent):void{
			Mouse.show();
		}
		
		public function leftBottomRectMouseDownHandler(event:MouseEvent):void{
			event.stopImmediatePropagation();
			_resizeContainer.mouseMoveCallFun = updateLeftBottomRectCall;
		}
		
		public function updateLeftBottomRectCall(event:MouseEvent):void{
			updateLeftCenterRectCall(event);
			updateBottomCenterRectCall(event);
		}
		
		public function leftTopRectMouseDownHandler(event:MouseEvent):void{
			event.stopImmediatePropagation();
			_resizeContainer.mouseMoveCallFun = updateLeftTopRectCall;
		}
		
		public function updateLeftTopRectCall(event:MouseEvent):void{
			updateTopCenterRectCall(event);
			updateLeftCenterRectCall(event);
			
		}
		
		public function rightBottomRectMouseDownHandler(event:MouseEvent):void{
			event.stopImmediatePropagation();
			_resizeContainer.mouseMoveCallFun = updateRightBottomRectCall;
		}
		
		public function updateRightBottomRectCall(event:MouseEvent):void{
			updateRightCenterRectCall(event);
			updateBottomCenterRectCall(event);
		}
		
		public function rightTopRectMouseDownHandler(event:MouseEvent):void{
			event.stopImmediatePropagation();
			_resizeContainer.mouseMoveCallFun = updateRightTopRectCall;
		}
		
		public function updateRightTopRectCall(event:MouseEvent):void{
			updateRightCenterRectCall(event);
			updateTopCenterRectCall(event);
		}
		
		public function leftCenterRectMouseDownHandler(event:MouseEvent):void{
			event.stopImmediatePropagation();
			_resizeContainer.mouseMoveCallFun = updateLeftCenterRectCall;
		}
		
		public function updateLeftCenterRectCall(event:MouseEvent):void{
			_leftCenterRect.x = _container.mouseX;
			_leftTopRect.x = _leftCenterRect.x;
			_leftBottomRect.x = _leftCenterRect.x;
			updateLeftTopLeftCenterLine();
			updateLeftCenterLeftBottomLine();
			updateLeftTopTopCenterLine();
			updateLeftBottomBottomCenterLine();
			updateTopCenterRect();
			updateBottomCenterRect();
			updateTopCenterRightTopLine();
			updateBottomCenterRightBottomLine();
		}
		
		public function bottomCenterRectMouseDownHandler(event:MouseEvent):void{
			event.stopImmediatePropagation();
			_resizeContainer.mouseMoveCallFun = updateBottomCenterRectCall;
		}
		
		public function updateBottomCenterRectCall(event:MouseEvent):void{
			_bottomCenterRect.y = _container.mouseY;
			_leftBottomRect.y = _bottomCenterRect.y;
			_rightBottomRect.y = _bottomCenterRect.y;
			updateLeftBottomBottomCenterLine();
			updateBottomCenterRightBottomLine();
			updateLeftCenterLeftBottomLine();
			updateRightCenterRightBottomLine();
			updateLeftCenterRect();
			updateRightCenterRect();
			updateLeftTopLeftCenterLine();
			updateRightTopRightCenterLine();
			
		}
		
		public function topCenterRectMouseDownHandler(event:MouseEvent):void{
			event.stopImmediatePropagation();
			_resizeContainer.mouseMoveCallFun = updateTopCenterRectCall;
		}
		
		public function updateTopCenterRectCall(event:MouseEvent):void{
			_topCenterRect.y = _container.mouseY;
			_leftTopRect.y = _topCenterRect.y;
			_rightTopRect.y = _topCenterRect.y;
			updateLeftTopTopCenterLine();
			updateTopCenterRightTopLine();
			updateLeftTopLeftCenterLine();
			updateRightTopRightCenterLine();
			updateLeftCenterRect();
			updateRightCenterRect();
			updateLeftCenterLeftBottomLine();
			updateRightCenterRightBottomLine();
		}
		
		public function rightCenterMouseDownHandler(event:MouseEvent):void{
			event.stopImmediatePropagation();
			_resizeContainer.mouseMoveCallFun = updateRightCenterRectCall;
			
		}
		
		public function updateRightCenterRectCall(event:MouseEvent):void{
			_rightCenterRect.x = _container.mouseX;
			_rightTopRect.x = _rightCenterRect.x;
			_rightBottomRect.x = _rightCenterRect.x;
			updateRightTopRightCenterLine();
			updateRightCenterRightBottomLine();
			updateTopCenterRightTopLine();
			updateBottomCenterRightBottomLine();
			updateTopCenterRect();
			updateBottomCenterRect();
			updateLeftBottomBottomCenterLine();
			updateLeftTopTopCenterLine();
			
		}
		
		public function updateRightCenterRect():void{
			_rightCenterRect.y = (_rightTopRect.y + _rightBottomRect.y)/2;
		}
		
		public function updateLeftCenterRect():void{
			_leftCenterRect.y = (_leftTopRect.y + _leftBottomRect.y)/2;
		}
		
		public function updateTopCenterRect():void{
			_topCenterRect.x = (_leftTopTopCenterLine.xFrom + _topCenterRightTopLine.xTo)/2;
		}
		
		public function updateBottomCenterRect():void{
			_bottomCenterRect.x = (_leftBottomBottomCenterLine.xFrom + _bottomCenterRightBottomLine.xTo)/2;
		}
		
		
		public function initRectProp(_rect:BorderContainer):void{
			_rect.width = _rect_w;
			_rect.height = _rect_w;
			_rect.visible = false;
			_rect.setStyle("borderColor","#70B2EE");
			_container.addElement(_rect);
		}
		
		
		public function refreshResizeUI():void{
			_leftTopRect.x = _centerRect.x-_leftTopRect.width;
			_leftTopRect.y = _centerRect.y -_leftTopRect.height;
			_rightTopRect.x = _centerRect.x + _centerRect.width;
			_rightTopRect.y = _centerRect.y - _leftBottomRect.height;
			_leftBottomRect.x = _centerRect.x-_leftBottomRect.width;
			_leftBottomRect.y = _centerRect.y + _centerRect.height;
			_rightBottomRect.x = _centerRect.x + _centerRect.width;
			_rightBottomRect.y = _centerRect.y + _centerRect.height;
			_topCenterRect.x = _centerRect.x + _centerRect.width/2 -_topCenterRect.width/2 ;
			_topCenterRect.y = _centerRect.y - _topCenterRect.height;
			_leftCenterRect.x = _centerRect.x - _leftCenterRect.width;
			_leftCenterRect.y = _centerRect.y + _centerRect.height/2 - _leftCenterRect.height/2;
			_bottomCenterRect.x =_centerRect.x + _centerRect.width/2 -_topCenterRect.width/2 ;
			_bottomCenterRect.y = _centerRect.y + _centerRect.height;
			_rightCenterRect.x = _centerRect.x + _centerRect.width;
			_rightCenterRect.y = _centerRect.y + _centerRect.height/2 - _leftCenterRect.height/2;
			showAllRect();
			updateLeftTopTopCenterLine();
			updateBottomCenterRightBottomLine();
			updateLeftBottomBottomCenterLine();
			updateLeftCenterLeftBottomLine();
			updateLeftTopLeftCenterLine();
			updateTopCenterRightTopLine();
			updateRightCenterRightBottomLine();
			updateRightTopRightCenterLine();
			_log.debug("refreshResizeUI............");
		}
		
		public function showAllRect():void{
			_leftTopRect.visible = true;
			_rightTopRect.visible = true;
			_leftBottomRect.visible = true;
			_rightBottomRect.visible = true;
			_topCenterRect.visible = true;
			_leftCenterRect.visible = true;
			_bottomCenterRect.visible = true;
			_rightCenterRect.visible = true;
		}
		
		
		public function hideResizeUI():void{
			hideAllRect();
			hideAllLine();
			
		}
		
		public function showAllLine():void{
			_leftTopTopCenterLine.visible = true;
			_topCenterRightTopLine.visible = true;
			_leftTopLeftCenterLine.visible = true;
			_leftCenterLeftBottomLine.visible = true;
			_leftBottomBottomCenterLine.visible = true;
			_bottomCenterRightBottomLine.visible = true;
			_rightCenterRightBottomLine.visible = true;
			_rightTopRightCenterLine.visible = true;
		}
		
		public function hideAllLine():void{
			_leftTopTopCenterLine.visible = false;
			_topCenterRightTopLine.visible = false;
			_leftTopLeftCenterLine.visible = false;
			_leftCenterLeftBottomLine.visible = false;
			_leftBottomBottomCenterLine.visible = false;
			_bottomCenterRightBottomLine.visible = false;
			_rightCenterRightBottomLine.visible = false;
			_rightTopRightCenterLine.visible = false;
		}
		
		public function hideAllRect():void{
			_leftTopRect.visible = false;
			_rightTopRect.visible = false;
			_leftBottomRect.visible = false;
			_rightBottomRect.visible = false;
			_topCenterRect.visible = false;
			_leftCenterRect.visible = false;
			_bottomCenterRect.visible = false;
			_rightCenterRect.visible = false;
		}
		
		/**显示所有辅助组件拖动的矩形框*/
		public function showResizeUI():void{
			_leftTopRect.x = _uiComp.x-_leftTopRect.width;
			_leftTopRect.y = _uiComp.y -_leftTopRect.height;
			_rightTopRect.x = _uiComp.x + _uiComp.width;
			_rightTopRect.y = _uiComp.y - _leftBottomRect.height;
			_leftBottomRect.x = _uiComp.x-_leftBottomRect.width;
			_leftBottomRect.y = _uiComp.y + _uiComp.height;
			_rightBottomRect.x = _uiComp.x + _uiComp.width;
			_rightBottomRect.y = _uiComp.y + _uiComp.height;
			_topCenterRect.x = _uiComp.x + _uiComp.width/2 -_topCenterRect.width/2 ;
			_topCenterRect.y = _uiComp.y - _topCenterRect.height;
			_leftCenterRect.x = _uiComp.x - _leftCenterRect.width;
			_leftCenterRect.y = _uiComp.y + _uiComp.height/2 - _leftCenterRect.height/2;
			_bottomCenterRect.x =_uiComp.x + _uiComp.width/2 -_topCenterRect.width/2 ;
			_bottomCenterRect.y = _uiComp.y + _uiComp.height;
			_rightCenterRect.x = _uiComp.x + _uiComp.width;
			_rightCenterRect.y = _uiComp.y + _uiComp.height/2 - _leftCenterRect.height/2;
			showAllRect();
			updateLeftTopTopCenterLine();
			updateBottomCenterRightBottomLine();
			updateLeftBottomBottomCenterLine();
			updateLeftCenterLeftBottomLine();
			updateLeftTopLeftCenterLine();
			updateTopCenterRightTopLine();
			updateRightCenterRightBottomLine();
			updateRightTopRightCenterLine();
			showAllLine();
			_log.debug("showResizeUI............");
			
		}
		
		public function updateLeftTopTopCenterLine():void{
			_leftTopTopCenterLine.xFrom = _leftTopRect.x+_leftTopRect.width;
			_leftTopTopCenterLine.yFrom = _leftTopRect.y+_leftTopRect.height/2;
			_leftTopTopCenterLine.xTo = _topCenterRect.x;
			_leftTopTopCenterLine.yTo = _topCenterRect.y+_leftTopRect.height/2;
		}
		
		public function updateBottomCenterRightBottomLine():void{
			_bottomCenterRightBottomLine.xFrom = _bottomCenterRect.x + _bottomCenterRect.width;
			_bottomCenterRightBottomLine.yFrom = _bottomCenterRect.y + _bottomCenterRect.height/2;
			_bottomCenterRightBottomLine.xTo = _rightBottomRect.x;
			_bottomCenterRightBottomLine.yTo = _rightBottomRect.y + _rightBottomRect.height/2;
		}
		
		public function updateLeftBottomBottomCenterLine():void{
			_leftBottomBottomCenterLine.xFrom = _leftBottomRect.x + _leftBottomRect.width;
			_leftBottomBottomCenterLine.yFrom = _leftBottomRect.y + _leftBottomRect.height/2;
			_leftBottomBottomCenterLine.xTo = _bottomCenterRect.x;
			_leftBottomBottomCenterLine.yTo = _bottomCenterRect.y + _bottomCenterRect.height/2;
		}
		
		public function updateLeftCenterLeftBottomLine():void{
			_leftCenterLeftBottomLine.xFrom = _leftCenterRect.x + _leftCenterRect.width/2;
			_leftCenterLeftBottomLine.yFrom = _leftCenterRect.y + _leftCenterRect.height;
			_leftCenterLeftBottomLine.xTo = _leftBottomRect.x + _leftBottomRect.width/2;
			_leftCenterLeftBottomLine.yTo = _leftBottomRect.y;
		}
		
		public function updateLeftTopLeftCenterLine():void{
			_leftTopLeftCenterLine.xFrom = _leftTopRect.x + _leftTopRect.width/2;
			_leftTopLeftCenterLine.yFrom = _leftTopRect.y + _leftTopRect.height;
			_leftTopLeftCenterLine.xTo = _leftCenterRect.x + _leftCenterRect.width/2;
			_leftTopLeftCenterLine.yTo = _leftCenterRect.y;
		}
		
		public function updateTopCenterRightTopLine():void{
			_topCenterRightTopLine.xFrom = _topCenterRect.x+_topCenterRect.width;
			_topCenterRightTopLine.yFrom = _topCenterRect.y+_topCenterRect.height/2;
			_topCenterRightTopLine.xTo = _rightTopRect.x;
			_topCenterRightTopLine.yTo = _rightTopRect.y+_rightTopRect.height/2;
			
		}
		
		public function updateRightCenterRightBottomLine():void{
			_rightCenterRightBottomLine.xFrom = _rightCenterRect.x + _rightCenterRect.width/2;
			_rightCenterRightBottomLine.yFrom = _rightCenterRect.y + _rightCenterRect.height;
			_rightCenterRightBottomLine.xTo = _rightBottomRect.x + _rightBottomRect.width/2;
			_rightCenterRightBottomLine.yTo = _rightBottomRect.y;
		}
		
		public function updateRightTopRightCenterLine():void{
			_rightTopRightCenterLine.xFrom = _rightTopRect.x + _rightTopRect.width/2;
			_rightTopRightCenterLine.yFrom = _rightTopRect.y + _rightTopRect.height;
			_rightTopRightCenterLine.xTo = _rightCenterRect.x + _rightCenterRect.width/2;
			_rightTopRightCenterLine.yTo = _rightCenterRect.y;
		}
		
	}
}

 简单日志类LogUtil:

package org.forever.log
{
	import mx.logging.Log;
	import mx.logging.LogEventLevel;
	import mx.logging.targets.TraceTarget;

	public class LogUtil
	{
		public function LogUtil()
		{
		}
		
		public static function initLogging():void {
			var logTarget:TraceTarget = new TraceTarget();
			logTarget.filters=["*"];
			logTarget.level = LogEventLevel.ALL;
			logTarget.includeDate = true;
			logTarget.includeTime = true;
			logTarget.includeCategory = true;
			logTarget.includeLevel = true;
			/* Begin logging. */
			Log.addTarget(logTarget);
		}
	}
}

 例子类ResizeUIDemo.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
			   creationComplete="init()">
	
	
	<fx:Script>
		<![CDATA[
			import org.forever.log.LogUtil;
			import org.forever.view.ResizeContainer;
			import org.forever.view.ResizeUI;
			
			public function init():void{
				LogUtil.initLogging();
				var _resizeContainer:ResizeContainer = new ResizeContainer(this);
				_resizeContainer.register(btn_1);
				_resizeContainer.register(btn_2);
				_resizeContainer.register(bc);
				_resizeContainer.register(lbl);
			}	
			
		]]>
	</fx:Script>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	
	<s:Button id="btn_1" x="282" y="125" label="按钮_1"/>
	<s:Button id="btn_2" x="71" y="214" label="按钮_2"/>
	<s:BorderContainer id="bc" x="111" y="77" width="85" height="69" backgroundColor="#75FA51">
	</s:BorderContainer>
	<s:Label x="27" y="10" text="点击下面组件进行拖放或者调整大小" width="200" height="24" verticalAlign="middle"/>
	<s:Label id="lbl" x="224" y="223" text="标签组件"/>
</s:Application>

 效果图:



 有时间在继续写了。累了。
 

  • 大小: 3.8 KB
  • 大小: 16 KB
  • 大小: 18.2 KB
2
10
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics