Resizable TitleWindow in Flex 4

Resizable TitleWindow in Flex 4


package
{
    
    import flash.display.DisplayObject;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.geom.Point;
    
    import mx.core.UIComponent;
    import mx.events.SandboxMouseEvent;
    
    import spark.components.TitleWindow;
    
    /**
     *  ResizableTitleWindow is a TitleWindow with
     *  a resize handle.
     */
    public class ResizableTitleWindow extends TitleWindow
    {
        
        //--------------------------------------------------------------------------
        //
        //  Constructor
        //
        //--------------------------------------------------------------------------
        
        /**
         *  Constructor.
         */
        public function ResizableTitleWindow()
        {
            super();
        }
        
        //--------------------------------------------------------------------------
        //
        //  Variables
        //
        //--------------------------------------------------------------------------
        
        private var clickOffset:Point;
        
        //--------------------------------------------------------------------------
        //
        //  Properties 
        //
        //--------------------------------------------------------------------------
        
        //----------------------------------
        //  Resize Handle
        //---------------------------------- 
        
        [("false")]
        
        /**
         *  The skin part that defines the area where
         *  the user may drag to resize the window.
         */
        public var resizeHandle:UIComponent;
        
        //--------------------------------------------------------------------------
        //
        //  Overridden methods: UIComponent, SkinnableComponent
        //
        //--------------------------------------------------------------------------
        
        /**
         *  @private
         */
        override protected function partAdded(partName:String, instance:Object) : void
        {
            super.partAdded(partName, instance);
            
            if (instance == resizeHandle)
            {
                resizeHandle.addEventListener(MouseEvent.MOUSE_DOWN, resizeHandle_mouseDownHandler);
            }
        }
        
        /**
         *  @private
         */
        override protected function partRemoved(partName:String, instance:Object):void
        {
            if (instance == resizeHandle)
            {
                resizeHandle.removeEventListener(MouseEvent.MOUSE_DOWN, resizeHandle_mouseDownHandler);
            }
            
            super.partRemoved(partName, instance);
        }
        
        //--------------------------------------------------------------------------
        // 
        // Event Handlers
        //
        //--------------------------------------------------------------------------
        
        private var prevWidth:Number;
        private var prevHeight:Number;
        
        protected function resizeHandle_mouseDownHandler(event:MouseEvent):void
        {
            if (enabled && isPopUp && !clickOffset)
            {        
                clickOffset = new Point(event.stageX, event.stageY);
                prevWidth = width;
                prevHeight = height;
                
                var sbRoot:DisplayObject = systemManager.getSandboxRoot();
                
                sbRoot.addEventListener(
                    MouseEvent.MOUSE_MOVE, resizeHandle_mouseMoveHandler, true);
                sbRoot.addEventListener(
                    MouseEvent.MOUSE_UP, resizeHandle_mouseUpHandler, true);
                sbRoot.addEventListener(
                    SandboxMouseEvent.MOUSE_UP_SOMEWHERE, resizeHandle_mouseUpHandler)
            }
        }
        
        /**
         *  @private
         */
        protected function resizeHandle_mouseMoveHandler(event:MouseEvent):void
        {
            // during a resize, only the TitleWindow should get mouse move events
            // we don't check the target since this is on the systemManager and the target
            // changes a lot -- but this listener only exists during a resize.
            event.stopImmediatePropagation();
            
            if (!clickOffset)
            {
                return;
            }
            
            width = prevWidth + (event.stageX - clickOffset.x);
            height = prevHeight + (event.stageY - clickOffset.y);
            event.updateAfterEvent();
        }
        
        /**
         *  @private
         */
        protected function resizeHandle_mouseUpHandler(event:Event):void
        {
            clickOffset = null;
            prevWidth = NaN;
            prevHeight = NaN;
            
            var sbRoot:DisplayObject = systemManager.getSandboxRoot();
            
            sbRoot.removeEventListener(
                MouseEvent.MOUSE_MOVE, resizeHandle_mouseMoveHandler, true);
            sbRoot.removeEventListener(
                MouseEvent.MOUSE_UP, resizeHandle_mouseUpHandler, true);
            sbRoot.removeEventListener(
                SandboxMouseEvent.MOUSE_UP_SOMEWHERE, resizeHandle_mouseUpHandler);
        }
    }
}
打包下载地址:http://flexponential.com/samples/ResizableTitleWindow/srcview/ResizableTitleWindow.zip

From: http://flexponential.com/2010/01/10/resizable-titlewindow-in-flex-4/

【SCI复现】含可再生能源与储能的区域微电网最优运行:应对不确定性的解鲁棒性与非预见性研究(Matlab代码实现)内容概要:本文围绕含可再生能源与储能的区域微电网最优运行展开研究,重点探讨应对不确定性的解鲁棒性与非预见性策略,通过Matlab代码实现SCI论文复现。研究涵盖多阶段鲁棒调度模型、机会约束规划、需求响应机制及储能系统优化配置,结合风电、光伏等可再生能源出力的不确定性建模,提出兼顾系统经济性与鲁棒性的优化运行方案。文中详细展示了模型构建、算法设计(如C&CG算法、大M法)及仿真验证全过程,适用于微电网能量管理、电力系统优化调度等领域的科研与工程实践。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及从事微电网、能源管理相关工作的工程技术人员。; 使用场景及目标:①复现SCI级微电网鲁棒优化研究成果,掌握应对风光负荷不确定性的建模与求解方法;②深入理解两阶段鲁棒优化、分布鲁棒优化、机会约束规划等先进优化方法在能源系统中的实际应用;③为撰写高水平学术论文或开展相关课题研究提供代码参考和技术支持。; 阅读建议:建议读者结合文档提供的Matlab代码逐模块学习,重点关注不确定性建模、鲁棒优化模型构建与求解流程,并尝试在不同场景下调试与扩展代码,以深化对微电网优化运行机制的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值