- 浏览: 467651 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
飞天奔月:
没有147 段
严格的手机号码正则表达式写法 --java -
飞天奔月:
182段没有 public static final ...
严格的手机号码正则表达式写法 --java -
zcc2010ry:
多谢分享,问题果断解决
Web app root system property already set to different value: 'webapp.root' -
hety163:
删除当前工作目录下的WORKSPACE/.metadata/. ...
“Initializing Java Tools 1%”问题的终极解决办法 -
qq12241713:
[b] :arrow: [i][/i][/b]
Flex和spring集成时需要的SpringFactory
[导读]第五章 自定义组件开发 第一节 自定义Flex组件
如下图所示,组件窗口中的“控件”是什么?为什么会听到“Flex 控件开发”和“Flex 组件开发”这两种不同的说法呢?控件和组件有什么关系? (图五十五)
图五十五
组建与控件的关系
Adobe Flex 支持组件开发模型,通常情况下,我们使用 Flex 中预定义的组件,根据需求开发应用程序。当预定义组件不能满足需求时,我们还可以创建自定义组件来构建应用程序。在软件行业中,一般把“component”翻译为“组件”,把“control”翻译为“控件”。其中,术语“组件”指任何可复用的、可以与其他对象交互的对象,如 Flex 中的 validators、formatters、effects、managers、controls、containers 等等;术语“控件”则指能够在界面上看到的组件,也称为可视组件,如 Flex 中的 controls、containers、borders 等等。所有的控件都是组件,反之,则不一定。Flex 中的所有类都可以被称为组件,其中能够在界面上看到的组件都可以被称为控件。
为什么要创建自定义组件
通过组件,我们可以将应用程序分为能够独立开发和维护的模块。通过在自定义组件中实现通用逻辑,我们可以创建一系列可重用的组件,实现多个应用程序间的代*共用。
此外,通过让自定义组件继承 Flex 中预定义的类,我们可以扩展 Flex 中的类,给现有的组件添加更多的行为,或者实现具有全新行为的组件。比如,我们可以创建自定义版本的 Flex 可视组件及非可视组件。
我们可以通过在一个单独的 MXML 文件中包含所有 MXML 代*和支持*的 ActionScript 代*来构建整个应用程序。随着应用程序不断变大,这个 MXML 文件的大小和复杂度不断增长,应用程序很快会变得难以理解和调试,多个开发人员同时的话将十分困难。为了解决这个问题,我们可以将整个应用程序分为互不关联的功能单元,也称为模块。从而,不同的开发人员或者开发小组可以独立的开发和调试各个模块;可以在不同的应用程序中使用开发好的模块,从而避免重复*的工作;可以更快的分离、调试应用程序中产生的错误。
在 Flex 中,一个模块对应着一个在 MXML 文件或者 ActionScript 文件中实现的组件。下图显示了如何将一个应用程序分为多个组件。 (图五十六)
图五十六
应用程序分为多个组件
怎样创建自定义组件
Flex 是以多个 ActionScript 类层次结构的形式来实现的。这些类层次结构中定义了组件类(各种控件)、管理类(Manager 类)、数据服务类(HttpService、WebService 等)以及实现 Flex 其他特*的类。通过继承类层次结构中相应的类,我们可以扩展现有的组件或者创建新的组件来实现自定义组件。
在 Flex 中,所有的可视组件都继承自 UIComponent ActionScript 类。常用的非可视组件有 Validator、Formatter 和 Effect。我们通过使用 MXML 和 ActionScript 语言扩展类层次结构来创建自定义组件。这些组件将继承超类中的属*、方法、事件、样式和特效。 (组图五十七)
图五十七(组)
常用的非可视组件
UIComponent 类层次结构
Validator 类层次结构
Formatter 类层次结构
Effect 类层次结构
通过扩展现有的组件来创建自定义组件:
我们可以定制现有的组件,使其满足应用程序的要求。比如,我们可以创建一个继承自 Button 的自定义组件,将其“Label”属*设定为“提交”,用来统一所有表单上的提交按钮。
我们可以修改现有组件的行为。比如,让所有 VBox 中的组件都按从下至上的顺序排列。
为现有的组件添加新的逻辑和行为。比如,我们可以让 TextInput 控件支持组合按键来删除输入的内容。
当扩展现有的组件无法满足应用程序要求时,我们需要创建新的自定义组件。在 Flex 中,如果创建的自定义组件是可视组件,并希望能够被 addChild 及相关方法所调用(这意味着所创建的自定义组件可以添加到容器中去,可以参与界面的布局),所创建的自定义组件需继承 UIComponent 类。
在实现自定义组件之前,我们需要决定是在 MXML 文件中实现还是在 ActionScript 文件中实现,这取决于应用程序的需求。
MXML 组件和 ActionScript 组件两者都定义新的 ActionScript 类。
基本上所有在 ActionScript 组件中能做的事情都可以在 MXML 组件中做。对于简单的组件,比如修改现有组件的行为或者为其添加新的基本特*,在 MXML 中实现起来更快、更简单。
如果组件是一个包含其他组件的组合组件,而且需要用布局容器来设置这些组件的大小和位置,使用 MXML 来定义组件。
如果需要修改组件的行为,例如对子组件进行布局,应当使用 ActionScript。
如果是通过继承 UIComponent 来创建一个可视组件,使用 ActionScript。
如果是创建非可视组件,例如 fomatter、validator 或者 effect,使用 ActionScript。
如果是添加日志支持,使用 ActionScript。
用 ActionScript 创建自定义组件时,需要创建一个继承自 Flex 类层次结构中相关类的子类。这个子类的名称(例如 MyAsButton),必须同 ActionScript 文件相同(比如,MyAsButton.as)。子类将继承超类中的所有属*和方法。该例中,我们可以通过<myasbutton> 标签在 MXML 中引用这个组件。
当我们使用 MXML 来定义组件时,Flex 编译器自动创建一个 ActionScript 类,MXML 文件的名称(比如,MyMXMLButton.mxml)对应自动创建的 ActionScript 类的名称。该例中,自动生成的 ActionScript 类名称为 MyMXMLButton,我们可以通过<mymxmlbutton> 标签在 MXML 中引用这个组件。
下图显示了两个继承自 Flex Button 组件的组件,一个定义在 ActionScript 中,一个定义在 MXML中。 (图五十八)
图五十八
应用程序分为多个组件
两个组件都继承自 Button 类。因此,两个组件都继承了 Button 类中标记为 public 和 protected 的属*、方法及其他元素。在任意一个组件中我们都可以重写继承的元素、定义新的元素以及添加自定义的逻辑。
我们无法重写由变量定义的属*,但是可以重写由 getter 和 setter 方法定义的属*。
我们可以重新设置该属*的值。通常情况下,我们可以在 ActionScript 组件的构造函数重新设置该属*的值;
因为 MXML 组件不支持构造函数,因此我们需要在事件处理程序中设置该属*的值。
此外,当我们使用 MXML 自定义组件的时候,Flex 编译器将帮助我们完成大量的工作,例如调用 addChild 将子组件添加到自定义组件中。这使得在 MXML 中创建自定义组件比在 ActionScript 容易的多。
如何在项目中使用自定义组件
创建好的自定义组件以特定类型的文件形式存在于文件系统中,我们需将这些文件引入我们的项目,然后才可以在项目中使用这些组件。
Flex 组件的文件类型
文件类型
扩展名
说明
MXML
.mxml
在 MXML 文件中实现的组件。
ActionScript
.as
在 ActionScript 类中实现的组件。
SWC
.swc
在 MXML 或 ActionScript 文件中实现组件后,将其打包进 SWC 文件中。SWC 文件中包含打包好的可以在多个应用程序间复用的组件。当生成 SWF 文件时,SWC 文件会被编译进应用程序中。
RSL
.swc
在 MXML 或 ActionScript 文件中实现组件后,可以通过 RSL 文件来部署。RSL 是一种独立文件,能够被 SWF 文件分别下载并缓存在客户端供多个应用程序的 SWF 文件使用。
对于 MXML 和 ActionScript 文件
当使用 Flex SDK 编译应用程序的时候,我们需要设置定义了自定义组件的 MXML 或者 ActionScript 文件是位于应用程序的目录结构中,还是位于由多个应用程序共享的目录结构中。
例如,当我们创建只有一个应用程序使用的组件的时候,通常情况下将组件存放在应用程序的目录结构中。我们可以在应用程序主文件所在的目录下创建子目录,然后将定义了组件的 MXML 或者 ActionScript 文件放置在创建的子目录中。当 Flex 编译应用程序的时候,组件将随同整个程序被编译进产生 SWF 文件中。
或者,当组件由多个应用程序共享的时候,我们将定义了组件的 MXML 或者 ActionScript 文件放在一个共享的目录结构中,并将其包含在应用程序的 ActionScript 源路径中。当 Flex 编译应用程序的时候,也会编译包含进 ActionScript 源路径的组件。
编译时,通过下列方法设置共享组件所在的目录:
对于 Flash Builder,打开项目属*对话框,然后选择构建路径设置 ActionScript 源路径。
对于 mxmlc 编译器,设置 source-path 选项来设定包含共享的 MXML 和 ActionScript 文件的目录的位置。
对于 SWC 文件
SWC 文件是 Flex 组件的存档文件。SWC 文件使得开发者之间能够很容易的交换组件。只需要交换一个单独的文件便可以了,而不是一大堆的 MXML 或者 ActionScript 文件、图片或其他资源文件。此外,SWC 文件中的 SWF 文件是编译过的,这意味着其中的代*在通常情况下是隐藏了的。最后,将组件编译为 SWC 文件能够很容易的实现名字空间的分配。
SWC 文件包含一个或多个组件,并且按 PKZIP 格式压缩或解压缩。我们可以用 WinZip、JAR 或者其他存档工具打开。然而,不要手动改变 SWC 文件中的内容,不要尝试在外部运行的 SWC 文件中包含的 SWF 文件。
编译时,通过下列方法设置 SWC 文件所在的目录:
对于 Flash Builder,打开项目属*对话框,然后选择构建路径设置包含 SWC 文件的库路径。
对于 mxmlc 编译器,设置 library-classpath 选项来设定包含 SWC 文件的目录的位置。
对于 RSL 文件 一种减少应用程序的 SWF 文件的方法便是将共享的资源放置在独立的文件中。这些独立的文件可以被分别下载并缓存在客户端。这些共享的资源只需要在客户端下载一次,就能够被多个应用程序在运行时加载。这些共享的文件被成为运行时共享库(RSLs)。
如果我们有多个应用程序, 并且这些应用程序共享一些列核心的组件和类,我们的用户只需要以 RSL 形式下载这些共享资源一次。只要应用程序在同一个域下,那么这些应用程序将使用同一个缓存过的 RSL。通过使用 RSL,我们能够减少最终生成的 SWF 文件的体积。使用 RSL 的最终效果,取决于使用该 RSL 的应用程序的数量。如果只有一个应用程序使用该 RSL,那么不会减少下载的总量,反而可能增加下载量。
编译时,通过下列方法设置 RSL 文件所在的目录:
对于 Flash Builder,打开项目属*对话框,然后选择构建路径设置包含 SWC 文件的库路径。
对于 mxmlc 编译器,设置 external-library-path 选项来设定编译时 RSL 文件的路径。设置 runtime-shared-libraries 来设定应用程序发布时 RSL 文件的相对位置。
总结:
本节主要介绍了为什么自定义组件以及如何自定义组件。为了实现模块化编程及代*的重用,我们通过继承 Flex 类层次结构中相关的类,在 MXML 文件或者 ActionScript 文件中实现自定义组件,并通过 MXML 文件、ActionScript 文件、SWC 文件将其引入我们的应用程序中。为了让大家分清楚组件和控件的区别,本节还简单提及了组件和控件的概念。 此外我们可以看到,如果一个组件是定义在MXML文件中的,我们可以称其为 MXML 组件;如果是定义在 ActionScript 文件中的,我们则称其为 ActionScript 组件。接下来的内容中,我们将通过两个例子,来看看具体是如何实现自定义组件的。
思考:
编译使用 MXML 定义的组件的时候,如何知道 Flex 编译器自动创建了哪些代*?
</mymxmlbutton></myasbutton>
- Flex组件自定义.zip (420.7 KB)
- 下载次数: 20
发表评论
-
Flex中如何利用mx:states和mx:State创建不同状态应用的例子
2012-01-06 15:53 11711. 代码 <!--<br/ /& ... -
Flex调试工具的安装
2011-12-29 17:24 2711Flex调试工具的安装 一、IE下flex调试的安装 Fl ... -
[企业级开发] Flex面试题及答案
2011-12-29 11:56 10701.我不想在容器里显 ... -
使用asDoc生成自己的Flex API Document
2011-12-27 11:56 1358概述一: 运用ASDoc工具 ... -
ActionScript 3.0 性能优化小知识
2011-12-23 12:38 1082最近做的很多的事情都是和Flash开发有关,尤其是在性能优 ... -
FLEX BlazeDS+Spring+Hibernate 配置成功(结合自己公司框架)
2011-12-22 14:50 1292参考:http://yuqun888666.blog.163 ... -
Flex 学习小结(13)
2011-12-21 10:11 13161 区域性图表 <mx:Script> ... -
Flex 学习小结(12)
2011-12-21 10:11 10101 richtexteditor控件 import m ... -
Flex 学习小结(11)
2011-12-21 09:59 9701 advanceddatagrid中的分组groupin ... -
Flex 学习小结(10)
2011-12-21 09:59 8771 在viewstack的导航中,如果用代码来切换选项 ... -
Flex 学习小结(9)
2011-12-21 09:56 9921 FLASH调用webservice: <!- ... -
Flex 学习小结(8)
2011-12-20 11:40 10371 饼状图 import mx.collections.A ... -
Flex 学习小结(7)
2011-12-20 11:10 11011 日历控件中,格式化日期: DateField.da ... -
Flex 学习小结(6)
2011-12-20 10:43 897今天偶然想做FLEX里鼠标右键弹出菜单,但其实是很麻烦的,因为 ... -
Flex 学习小结(5)
2011-12-20 10:30 9141 调用module 新建一个module: <m ... -
Flex 学习小结(4)
2011-12-20 10:00 8291 TIMER类的应用 //创建一个500毫秒间隔,10 ... -
Flex 学习小结(3)
2011-12-19 17:11 9401 TIMER类的应用 //创建一个500毫秒间隔,10 ... -
flex中的动态实现RemoteObject
2011-12-19 17:09 1258在flex中,一般直接在设计时写rem ... -
Flex 学习小结(2)
2011-12-19 16:35 10381 两个模块(MODULE间的传输) 主程 ... -
Flex 学习小结(1)
2011-12-19 16:10 984摘录最近学FLEX的一些读书笔记小结1 使用V ...
相关推荐
微信视频号大风口项目,多赛道选择,可矩阵,玩法简单轻松上手.mp4
电子科技大学图书馆微信小程序_中国电子科技大学
2023-04-06-项目笔记-第三百七十二阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.370局变量的作用域_370- 2025-01-08
期末课设-Python和Django实现音乐推荐系统(含源码+课设报告+答辩PPT).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载
FlexiFed实验初学者学生复制品_ FlexiFed留级生.zip
sTM32 ADC采集滤波算法,卡尔曼 中位值 同步对比输出源程序,芯片采用STM32f103c8t6.算法采用卡尔曼滤波算法中位值滤波算法, 波形输出正常采集的卡尔曼 中位值三个波形输出,程序注释详细。
详细介绍及样例数据:https://blog.csdn.net/T0620514/article/details/145019667
三相两电平逆变器模型预测控制(MPC)simulink仿真,内有坐标变和MPC代码,可修改电流参考值,~~可用作电力电子方向入门学习
25混合A星算法路径规划Hybrid-Astar 以车辆的运动学模型为节点,以当前点到终点的Astar距离和RS距离两者最大的距离作为H(n)函数的估计代价,使用matlab实现(2016a以上版本)
考虑阶梯式碳交易机制与电制氢的综合能源系统热电优化 关键词:碳交易 电制氢 阶梯式碳交易 综合能源系统 热电优化 参考文档:《考虑阶梯式碳交易机制与电制氢的综合能源系统热电优化》基本复现 仿真平台:MATLAB+CPLEX 主要内容:代码主要做的是一个考虑阶梯式碳交易机制的电热综合能源系统优化调度研究,考虑综合能源系统参与碳交易市场,引入引入阶梯式碳交易机制引导IES控制碳排放,接着细化电转气(P2G)的两阶段运行过程,引入电解槽、甲烷反应器、氢燃料电池(HFC)替传统的P2G,研究氢能的多方面效益;最后提出热电比可调的热电联产、HFC运行策略,进一步提高IES的低碳性与经济性。 目标函数为以购能成本、碳排放成本、弃风成本最小,将原问题转化为混合整数线性问题,运用CPLEX商业求解器进行求解。
并离网逆变器仿真模型 逆变器PQ控制,Vf控制,无功能量发生器SVG,有源电力滤波器APF仿真模型
springboot176基于Spring Boot的装饰工程管理系统,含有完整的源码和报告文档
一、项目简介 本项目是一套基于SSM框架实现的生活缴费系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值 二、技术实现 jdk版本:1.8 及以上 ide工具:IDEA或者eclipse 数据库: mysql5.5及以上 后端:spring+springmvc+mybatis+maven+mysql 前端:vue,css,js 三、系统功能 系统角色主要包括:管理员、用户 系统主要功能包括: 用户登录 用户注册 首页 个人中心 修改密码 个人信息 用户管理 电表管理 电表缴费管理:查看缴费详情,缴费 ETC管理 ETC缴费管理 供暖管理 供暖缴费管理 固话管理 固话缴费管理 宽带管理 宽带缴费管理 燃气表管理 燃气表缴费管理 油卡管理 油卡缴费管理 水表管理 水表缴费管理 帮助中心类型管理 油卡所属公司管理 客服管理 轮播图管理等功能
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
多智能体、一致性、时滞 含通信时滞和输入时滞的多智能体一致性仿真 简单的多智能体一致性性仿真图,包含状态轨迹图和控制输入图。 适用于初学者。
内容概要:本文介绍了一种新的智能对比度增强技术——动态直方图均衡化(DHE)。该方法通过对输入图像的直方图进行分割并分别进行直方图均衡化来克服传统全局直方图均衡化(GHE)和其他方法存在的局限性,从而实现更好的图像细节保护及显著的整体对比度增强效果。具体来说,DHE基于局部极小值将图像直方图划分为子直方图,并重新调整各分区以避免高灰度频率部分对低频区域的影响。同时,在进行均衡时限制每种子直方图的灰度级范围,防止过度拉伸导致细节丢失等问题。 适用人群:从事计算机视觉和图像处理研究的专业人员,特别是关注对比度增强算法及其实际应用的研究学者和技术开发者。 使用场景及目标:可用于医疗影像处理、指纹识别等多个领域的前期预处理步骤;主要目的是改善低对比度图像的质量,提升后续图像识别或其他处理任务的效果。 其他说明:相比于现有技术如全球均值变换、局部直方图均衡以及特定直方图规格化等方式,本提出的DHE能有效避免因增强处理而引起的严重副作用如棋盘效应等,提供更加平滑自然的视觉体验。此外文中还展示了多个实验结果以验证新方法的有效性和优越性能表现。
我的超迷你机械臂机器人项目。_Dummy-Robot
实体单元椭圆主体扭转分析,着重分析扭矩的施加方式
OKR计划表 自我管理
用于微信小程序的ProtoBuffer库