问题:TitleWindow的关闭按钮不好看,能否自己定制?
方法:利用Flex的皮肤机制。
环境:Flex SDK 4.6
针对Flex中TitleWindow的关闭按钮修改问题,在前面的博文中sxy给出了一种解决方案,其主要思路是在TitleWindow上加一个关闭图标按钮,使其压盖原有的关闭按钮。这种方法可行但存在以下两个问题:
- 新加的关闭按钮图标只能叠加在原有的关闭按钮上面,不能随便移动其位置。
- 不能作为Flex界面定制的通用解决方案。
Flex组件的外观都是基于皮肤机制,而皮肤可以随意定制,换句话说Flex组件的外观你是可以随便修改的。这里我们以修改TitleWindow的关闭按钮为例,探讨下Flex的皮肤机制。
TitleWindow的皮肤机制
我们在Adobe Flash Builder中查看TitleWindow的源代码(spark.components.TitleWindow),发现其继承自Panel,而Panel最终继承自皮肤组件类SkinnableComponent,即该类可以应用皮肤,其默认皮肤为TitleWindowSkin(spark.skins.TitleWindowSkin)。
TitleWindowSkin类控制着TitleWindow的表现形式,其中名为closeButton的Button即为关闭按钮。其属性width=”15” height=”15” right=”7” top=”7”表示关闭按钮高宽都是15,距离右侧7,距离顶部7,和我们看到关闭按钮位于TitleWindow的左上角一致,修改这些属性可以调整关闭按钮的位置,而skinClass属性控制着SkinClass的外观,默认皮肤TitleWindowCloseButtonSkin。
查看TitleWindowCloseButtonSkin源码,我们发现其样式为X形状,而且up, over, down, disabled四种状态下颜色的apha值各不相同。正是基于这种机制来实现当鼠标移动到关闭按钮、点击关闭按钮时关闭按钮的不同变化。
定制关闭按钮.
基于Flex的皮肤机制,我们来定制一个TitleWindow,主要是定制关闭按钮closeButton。
首先新建一个组件MyTitleWindow(文件->新建->MXML组件),该组件继承自TitleWindow。建立好后设置其skinClass属性,指向自己定义的皮肤类MyTitleWindowSkin。
然后新建一个类MyTitleWindowSkin类(文件->新建->MXML外观),其中主机组件选择TitleWindow,创建以下项的副本会自动填写为TitleWindowSkin。
建立好MyTitleWindowSkin类后,你会发现其代码和TitleWindowSkin的代码完全一样。这里我们仅仅修改closeButon,设置其skinClass属性为MyTitleWindowCloseButtonSkin。当然你如果想调整关闭按钮的位置,你可以修改其right,top等属性。
最后我们来定制关闭按钮的外观,新建MyTitleWindowCloseButtonSkin(文件->新建->MXML外观),主机组件选择Button,创建以下项的副本选择TitleWindowCloseButtonSkin。
新建好MyTitleWindowCloseButtonSkin后,基本删除继承来的所有代码,然后用一个关闭图标去替换原来的X样式,并设置鼠标移动上去和鼠标点击状态下图标不同的alpha值。
关闭图标为:
到此为止,我们就完成了关闭按钮的定制工作。最后将MyTitleWindow组件加到应用程序中,呈现出效果。
最终效果图:此效果图,除了关闭按钮外,在MyTitleWindowSkin中对其他样式也进行了些定制。
小结
通过Flex的皮肤机制,我们可以完全自由地掌控组件的外观,方便地设计出统一风格、美观的Flex组件。
实际应用中如果仅仅修改TitleWindow等组件的一些属性,是不用这么复杂的,毕竟这些组件本身提供了一些修改其样式的方法。
然而如果需要定制完全个性化的组件,上文的方法比较可取。设计好几组皮肤,以后就可以根据需要选择使用。
分享到:
相关推荐
标题中的“带最小化、最大化、关闭按钮的titlewindow”指的是开发者为了提高用户体验,对原有的TitleWindow组件进行了自定义扩展,添加了这些常用的窗口操作功能。这在ActionScript或Flex等技术中是常见的做法,因为...
TitleWindow是Flex中的一个组件,常用于创建带有标题的弹出窗口,类似于操作系统中的对话框。在Flex中,TitleWindow可以自定义内容,包括文本、图像以及视频等多媒体元素。 本文将详细讲解如何在Flex的TitleWindow...
flex4.6 可以拉伸的TitleWindow。自由缩放。
// 调用Flex中的windowCloseHandler方法 return 'Are you sure to close this page?'; } } ``` 这里的`TestFlash`是嵌入到HTML中的Flex SWF文件的ID。通过这种方式,当用户试图关闭页面时,会弹出一个提示框询问...
TitleWindow是Flex中的一种容器类,它类似于操作系统中的窗口,通常包含一个标题栏,可以显示标题,并提供一些基本操作,如关闭、最小化、最大化和还原。在本例中,我们讨论的是一个自定义的TitleWindow组件,它增加...
在Flex编程中,TitleWindow是一种常用的组件,它用于创建具有标题栏、关闭、最小化和最大化按钮的标准窗口样式。在Flex应用中,我们可能需要对TitleWindow的行为进行自定义,例如改变其默认的最大化和最小化功能。本...
flex中为titlewindow添加更多按钮,使其显示在标题栏右方
2. **数据读取**:当TitleWindow关闭时,主应用可以通过再次访问TitleWindow实例中的组件变量,获取最新的数据。 #### 示例代码分析 在提供的代码片段中,我们看到了完整的数据传输流程。在`titleWin.mxml`文件中...
总的来说,“Flex中支持缩放的TitleWindow”是一个关于增强Flex应用程序交互性的主题,涉及组件定制、事件处理、皮肤设计和性能优化等多个方面,对于希望提升Flex应用用户体验的开发者来说是非常有价值的。...
在Flex开发中,TitleWindow是一种常用的组件,它用于创建具有标题栏和关闭、最小化、最大化按钮的独立窗口。这个特定的示例是关于如何在Flex中创建一个TitleWindow,该窗口不仅具备基本的窗口操作功能,还允许用户...
TitleWindow作为Flex中的一个容器组件,可以包含其他子组件或页面,形成层级结构。在这样的结构中,事件派发是实现父子页面间通信的关键。事件派发允许子页面(或组件)向父级或其他组件发送通知,从而触发特定行为...
主要介绍了Flex中TitleWindow传值思路及实现,需要的朋友可以参考下
TitleWindow组件包含一个标题栏,可以显示窗口的标题,并提供关闭、最小化和最大化按钮。在Flex中创建一个TitleWindow,你需要在MXML文件中定义它,例如: ```xml <mx:TitleWindow xmlns:mx=...
这是一个flex4的项目,可以下载下来单独运行,项目中是一个自定义的TitleWindow,TitleWindow中存放了一个dataGrid,它可以根据dataGrid中数据行增加而改变自身高度,直至要最大高度。此组件使用mxml定义,重写了...
通过这个小demo,我们可以学习到如何在Flex中使用TitleWindow创建自定义窗口,以及如何通过按钮事件来控制组件的显示状态。这种交互设计对于创建用户友好的界面非常有用,因为它允许用户根据需要自由地隐藏或显示...
首先,我们需要了解Flex中的容器和组件。容器是Flex应用程序的基础,它们可以包含一个或多个组件,如按钮、文本输入等。在Flex中,我们可以使用MX容器或Spark容器来创建自定义布局。对于边框和标题的需求,MX容器中...
TitleWindow在Adobe Flex中是一种常见的用户界面组件,它通常用于创建具有标题栏的自定义窗口。在本场景中,我们讨论的是一个特定的TitleWindow实现,它具备了最大化、最小化和关闭的功能,这对于开发者来说是非常...
综上所述,Flex 3中通过TitleWindow为DataGrid添加新数据的过程包括创建TitleWindow作为弹出对话框,设计表单获取用户输入,处理“添加”按钮的点击事件以将新数据添加到DataGrid的数据源,以及在主应用中触发...
NULL 博文链接:https://176170847.iteye.com/blog/774691