`

ActionScript组件开发

阅读更多

http://sunshineyao.iteye.com/blog/827432

 

 

 近日工作中需要用到类似Windows那种罕有最大化、最小化、关闭功能的TitleWindow,而Flex本身并无这个组件(Flex AI有NativeWindow这个组件)。于是上网搜索,发现了MDI,但是感觉代码太多而且代码侵入性很强不便于扩展,其更适合与在一个空间内存在多个Panel的场景,ResizeTitleWindow与ResizeManage更使用于我的应用场景,我最终使用的是ResizeManag这个组件但不幸的是下载下来的资源也是有残缺,心想反正自己也是得做扩展的因而放弃了寻找完全可用版的努力,继而开始研究源代码并进行了相应的修改与扩展。 

ResizeWindow.as 

Java代码  收藏代码
  1. package sjd.containers  
  2. {  
  3.     import flash.events.MouseEvent;  
  4.     import flash.geom.Point;  
  5.       
  6.     import mx.containers.Form;  
  7.     import mx.containers.FormItem;  
  8.     import mx.containers.TitleWindow;  
  9.     import mx.controls.Button;  
  10.     import mx.controls.TextInput;  
  11.     import mx.core.Application;  
  12.     import mx.events.FlexEvent;  
  13.       
  14.     import sjd.utils.CursorUtil;  
  15.    
  16.   [Event(name="closeWindow", type="mx.events.FlexEvent")]  
  17.   [Event(name="minWindow", type="mx.events.FlexEvent")]  
  18.   [Event(name="maxWindow", type="mx.events.FlexEvent")]  
  19.        
  20.   /** 
  21.    * @class ResizeWindow 
  22.    * @brief A TitleWindow with Resize Enabled and Max, Min, Close Button 
  23.    * @author Jove 
  24.    * @version 1.1 
  25.    */  
  26.   public class ResizeWindow extends TitleWindow{  
  27.      
  28.     private static const SIDE_OTHER:Number = 0;  
  29.     private static const SIDE_TOP:Number = 1;  
  30.     private static const SIDE_BOTTOM:Number = 2;  
  31.     private static const SIDE_LEFT:Number = 4;  
  32.     private static const SIDE_RIGHT:Number = 8;  
  33.      
  34.     private static var resizeObj:Object;  
  35.     private static var mouseState:Number = 0;  
  36.     private static var mouseMargin:Number = 10;  
  37.      
  38.     [Embed(source="/sjd/assets/verticalSize.gif")]  
  39.     private var verticalSize:Class;  
  40.     [Embed(source="/sjd/assets/horizontalSize.gif")]  
  41.     private var horizontalSize:Class;  
  42.     [Embed(source="/sjd/assets/leftObliqueSize.gif")]  
  43.     private var leftObliqueSize:Class;  
  44.     [Embed(source="/sjd/assets/rightObliqueSize.gif")]  
  45.     private var rightObliqueSize:Class;  
  46.      
  47.     private var oWidth:Number = 0;  
  48.     private var oHeight:Number = 0;  
  49.     private var oX:Number = 0;  
  50.     private var oY:Number = 0;  
  51.     private var oPoint:Point = new Point();  
  52.      
  53.     private var _showWindowButtons:Boolean = true;  
  54.     private var _windowMinSize:Number = 150;  
  55.      
  56.     //private var form:MyForm = new MyForm();  
  57.     /** 
  58.       * Constructor. 
  59.       * Add mouse envent to this window and application. 
  60.       * initialize the old positions. 
  61.       */  
  62.     public function ResizeWindow(){  
  63.       super();  
  64.       addContent();  
  65.       initPosition(this);  
  66.         
  67.       this.addEventListener(MouseEvent.MOUSE_MOVE, oMouseMove);  
  68.       this.addEventListener(MouseEvent.MOUSE_OUT, oMouseOut);  
  69.       this.addEventListener(MouseEvent.MOUSE_DOWN, oMouseDown);  
  70.       //this.addEventListener(MouseEvent.MOUSE_UP, oMouseUp);  
  71.       this.addEventListener(FlexEvent.CREATION_COMPLETE, addButton);  
  72.        
  73.       //Application.application.parent:SystemManager  
  74.       Application.application.parent.addEventListener(MouseEvent.MOUSE_UP, oMouseUp);  
  75.       Application.application.parent.addEventListener(MouseEvent.MOUSE_MOVE, oResize);  
  76.     }  
  77.       
  78.     private function addContent():void{  
  79.         var form:Form  = new Form();  
  80.         var formItem1:FormItem = new FormItem();  
  81.         formItem1.label = "事件源";  
  82.         var text:TextInput = new TextInput();  
  83.         formItem1.addChild(text);  
  84.         form.width = 200;  
  85.         form.addChild(formItem1);  
  86.         //form.width = this.width;  
  87.         //form.height = this.height;  
  88.         this.addChild(form);  
  89.         //this.updateDisplayList(100,100);  
  90.     }  
  91.      
  92.     public function set showWindowButtons(show:Boolean):void{  
  93.       _showWindowButtons = show;  
  94.       if(titleBar != null){  
  95.         addButton(new FlexEvent(""));  
  96.       }  
  97.     }  
  98.      
  99.     public function get showWindowButtons():Boolean{  
  100.       return _showWindowButtons;  
  101.     }  
  102.      
  103.     public function set windowMinSize(size:Number):void{  
  104.       if(size > 0){  
  105.         _windowMinSize = size;  
  106.       }  
  107.     }  
  108.      
  109.     public function get windowMinSize():Number{  
  110.       return _windowMinSize;  
  111.     }  
  112.      
  113.     private static function initPosition(obj:Object):void{  
  114.       obj.oHeight = obj.height;  
  115.       obj.oWidth = obj.width;  
  116.       obj.oX = obj.x;  
  117.       obj.oY = obj.y;  
  118.     }  
  119.      
  120.     /** 
  121.      * Set the first global point that mouse down on the window. 
  122.      * @param The MouseEvent.MOUSE_DOWN 
  123.      */  
  124.     private function oMouseDown(event:MouseEvent):void{  
  125.       if(mouseState != SIDE_OTHER){  
  126.         resizeObj = event.currentTarget;  
  127.         initPosition(resizeObj);  
  128.         oPoint.x = resizeObj.mouseX;  
  129.         oPoint.y = resizeObj.mouseY;  
  130.         oPoint = this.localToGlobal(oPoint);  
  131.       }  
  132. font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color:
    分享到:
    评论

相关推荐

    flash ActionScript 组件使用实例(PDF)

    在《flash ActionScript 组件使用实例》文档中,详细介绍了如何利用ActionScript组件来开发Flash应用程序。对于已经熟悉Macromedia Flash及ActionScript基础知识的开发者来说,这份文档提供了宝贵的实践指导。 ####...

    ActionScript 3.0 组件及编程(完整)

    5. 熟悉Flex框架,它是基于ActionScript 3.0的组件开发框架,提供了丰富的UI组件库和MXML标记语言。 6. 掌握组件性能优化技巧,如减少不必要的渲染和计算,以提供流畅的用户体验。 7. 学习如何使用Adobe Flash ...

    ACTIONSCRIPT 3.0 组件中文版

    综上所述,“ACTIONSCRIPT 3.0组件中文版”教程将涵盖这些关键概念,帮助读者掌握ACTIONSCRIPT 3.0组件的使用方法,从而提升在Flash平台上开发互动内容的能力。通过阅读提供的PDF文档,你将能深入了解ACTIONSCRIPT ...

    (十八)Flex4_自定义ActionScript组件

    ActionScript组件是Flex4中自定义组件的主要方式,它提供了更高级别的抽象,使得组件开发更为高效和简洁。 描述中提到的"博文链接:https://schy-hqh.iteye.com/blog/1756582"可能是一个详细教程或者示例代码的来源...

    ActionScript开发技术大全 电子版

    Flex是基于ActionScript的开发框架,提供了一系列组件库和MXML标记语言,简化了富互联网应用(RIA)的开发。通过Flex,开发者可以快速构建用户界面,而ActionScript作为后台逻辑处理语言,两者结合实现了前后端分离...

    ActionScript开发技术大全

    《ActionScript开发技术大全》是一本全面覆盖ActionScript编程语言的教程,旨在帮助读者深入理解和掌握这一关键的脚本语言,特别是在Flash和Flex应用开发中的使用。ActionScript是Adobe Flash平台的核心,它使得动态...

    Flash Builder 4 快速入门

    目录 第一章 Flash Builder 4...5.3 ActionScript组件开发 第六章 与服务端通信 6.1 通过Http Service与服务端通信 6.2 通过Web Service与服务端通信 6.3 通过Remoting与服务端通信 6.4 与Flash Media Server交互

    用ActionScript+开发高级可视化组件.rar

    总而言之,《用ActionScript开发高级可视化组件》旨在帮助开发者掌握ActionScript的强大功能,通过实践提升组件开发水平,创造出更具吸引力和实用性的互动可视化组件。无论你是初级开发者还是经验丰富的专业人士,这...

    使用ActionScript3.0组件

    Flex Builder(现为Flash Builder)是一个集成开发环境(IDE),专门用于开发基于ActionScript 3.0的应用程序,它内置了对组件的强大支持。Flash Professional则是一款动画创作工具,同样可以进行组件的使用和编辑...

    ActionScript 3.0开发技术大全

    8. **ActionScript与Flex框架**:如果使用Flex SDK进行开发,还需要了解MXML语言和Flex组件库,以及如何结合AS3编写业务逻辑。 9. **错误处理**:理解如何捕获和处理运行时错误,是编写稳定代码的关键。学习try-...

    Actionscript3.0开发的射击小游戏

    《ActionScript3.0开发的射击小游戏:深入解析与学习》 ActionScript3.0是Adobe Flash Professional和Flex SDK中的编程语言,它以其强大的性能和丰富的功能为网页和游戏开发提供了无限可能。本项目——“三角也疯狂...

    用ActionScript 开发高级可视化组件

    ### 用ActionScript开发高级可视化组件 #### 一、关于创建高级组件 在ActionScript中创建高级组件,意味着开发者能够构建更加复杂且功能强大的用户界面元素。这些组件不仅仅是对现有Flex组件的简单扩展,而是涉及...

    actionscript 3.0语言和组件参考

    ActionScript 3.0是Adobe开发的一种面向对象的编程语言,主要用于创建富互联网应用程序(RIA),尤其是Flash平台上的交互式内容。它在ActionScript 2.0的基础上进行了重大改进,引入了更强大的类型系统、提高了性能...

    flex开发入门 actionscript

    ### Flex开发入门与ActionScript详解 #### 一、Flex与ActionScript简介 Flex是一种用于构建高性能的、跨浏览器的Web应用程序的开源框架。它由Adobe Systems维护和支持,并且以其强大的功能和灵活性受到开发者们的...

    actionscript3.0开发的进度显示条项目

    本项目“actionscript3.0开发的进度显示条项目”显然是一个使用AS3实现的可视化进度条组件,常用于展示数据加载、文件上传或任何需要反馈进度的场景。 在AS3中,进度条的实现通常涉及到以下几个关键知识点: 1. **...

    ActionScript+3.0+语言和组件参考

    综上所述,“ActionScript 3.0 语言和组件参考”是全面掌握ActionScript 3.0的关键资料,无论是初学者还是有经验的开发者,都能从中获取丰富的知识,提升开发技能。通过深入学习和实践,可以充分利用ActionScript ...

Global site tag (gtag.js) - Google Analytics