遇到的问题挺无聊的,使用ToggleButtonBar组件时,application捕捉不到MouseEvent.CLICK事件。看了下源码,问题出在这里
ToggleButtonBar.as
/**
* @private
*/
override protected function clickHandler(event:MouseEvent):void
{
var index:int = getChildIndex(Button(event.currentTarget));
// 143958
_selectedIndex = index;
if (_toggleOnClick && index == selectedIndex)
{
selectedIndex = -1;
hiliteSelectedNavItem(-1);
}
else
hiliteSelectedNavItem(index);
super.clickHandler(event);
}
内部已经捕捉了这个事件,并没有抛到上层来,没办法,只能尝试重组这个组件。
以下为用as方式重写这个组件(个人推荐)
import flash.events.MouseEvent;
import mx.controls.ToggleButtonBar;
public class ToggleButtonBar1 extends ToggleButtonBar
{
public function ToggleButtonBar1()
{
super();
}
override protected function clickHandler(event:MouseEvent):void
{
super.clickHandler(event);
dispatchEvent(event);
}
}
以下为用mxml方式重写这个组件
<?xml version="1.0" encoding="utf-8"?>
<mx:ToggleButtonBar xmlns:mx="http://www.adobe.com/2006/mxml" >
<mx:Script>
<![CDATA[
override protected function clickHandler(event:MouseEvent):void
{
super.clickHandler(event);
dispatchEvent(event);
}
]]>
</mx:Script>
</mx:ToggleButtonBar>
解决
代码、思路都没什么好说的,纯粹是第一次做记录一下。
分享到:
相关推荐
重写Flex组件可以通过MXML和ActionScript两种方式进行: 1. **MXML**:适用于创建简单的组件,特别是需要直观布局和快速构建的场景。MXML的编译速度虽然比ActionScript稍慢,但它使得组件的创建更加直观。 2. **...
本文将探讨Flex组件重写的必要性、考虑因素、以及AS和MXML方式的选用规则,并提供AS方式重写组件的一般步骤。 一、为什么要重写组件 1. 扩展功能:当Flex已有的组件无法满足特定业务需求时,我们可以通过继承现有...
Flex提供了两种重写组件的方式:MXML和AS。 1. **MXML**:更适合创建简单的组件,因为可以直接在MXML中定义布局和样式,易于理解和维护。 - 适用场景:当组件的功能比较简单,无需复杂逻辑处理时。 2. **AS...
- 创建一个新的MXML组件类,继承自TextInput。 - 在组件类中添加图片资源,并设计布局,可能包括设置图片位置、大小以及与文本输入框的相对位置。 - 定义新的样式属性,如图片颜色、边框样式等,以便于在不同场景...
5. **使用组件**:在MXML或AS3代码中实例化并使用你的自定义组件。 接下来,我们讨论自定义事件。在ActionScript中,事件是程序间通信的一种方式,用于响应用户操作或其他组件的行为。自定义事件允许你创建特定于...
6. **自定义组件**:如果你需要满足特殊需求,可以通过继承现有组件并重写或扩展其功能来创建自定义组件。这允许你构建符合项目需求的个性化组件库。 7. **优化和性能**:了解如何有效地使用组件以优化性能也至关...
- **绘制组件**:在自定义组件中,通常需要重写`drawRect()`或`updateDisplayList()`方法来绘制组件的外观。 - **添加属性和方法**:根据需求添加新的属性和方法,以实现特定的功能。 - **布局管理**:如果组件...
3. **MXML支持**:如果你希望在MXML中使用这个组件,需要定义一个对应的MXML组件标签。这通常通过在AS3类上添加 `[Component]` 元数据完成。 ```as3 [Component] public class CustomButton extends Button { // ....
通过重写`initialize()`方法来进行组件的深度初始化。这种方法允许在组件添加到显示列表后执行更精细的控制。 **使用标识变量** 标识变量可以帮助追踪组件的生命周期状态。这对于处理特定生命周期阶段的逻辑非常...
同时,如果需要处理组件的大小和位置,可以重写`measure()`和`updateDisplayList()`方法来实现自定义布局。 3. **属性和事件**:为了增加组件的可配置性,可以添加自定义属性。通过`[Inspectable]`元数据标签,可以...
在Flex中,组件的逻辑通常由ActionScript类实现,这些类扩展了基类(如UIComponent),并重写其方法来实现自定义行为。 3. **搜索栏组件**: - **基本结构**:搜索栏组件通常包括一个TextInput用于输入关键词,一...
首先,继承原生的`Image`或任何其他组件,然后重写`updateDisplayList()`方法,在这里可以添加颜色调整的代码。例如: ```mxml <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"> <![CDATA[ override ...
Flex编译器(MXMLC)将MXML和ActionScript源代码转换为字节码,从而生成应用程序的主要类文件。在此阶段,还负责创建`SystemManager`实例,这是管理整个应用程序生命周期的关键组件。 **初始化阶段** 初始化阶段...
- 首先,你需要创建一个新的MXML组件,继承自`mx.controls.Alert`或`spark.components.DialogWindow`,后者在Spark组件模型中更为灵活。 - 在MXML文件中,你可以定义组件的布局、外观以及包含的子组件,比如按钮、...
4. **在MXML中使用组件**:在MXML文件中声明和配置组件实例,将它们加入到应用程序的布局中。 在实际应用中,TimeInputEx组件可能会与 Flex 的DateFormatter 和 DateUtil 类结合使用,以确保时间的正确格式化和解析...
- **使用Flex 2组件**是在MXML或ActionScript中声明和实例化组件的过程。MXML是一种XML格式的标记语言,用于定义Flex应用程序的用户界面。 - **实例化组件**可以通过在MXML中使用`<mx:YourComponent>`标签或者在...
5. **MXML使用**:MXML是一种声明式语言,用于描述Flex界面的布局和组件。在MXML文件中,你可以像使用内置组件一样轻松地使用自定义控件。只需在标签库中引入自定义组件,然后在MXML布局中添加它。 6. **事件监听**...
这是一个flex4的项目,可以下载下来单独运行,项目中是一个自定义的TitleWindow,TitleWindow中存放了一个dataGrid,它可以根据...此组件使用mxml定义,重写了组件updateDisplayList的方法,希望对大家有所帮助。
在MXML中,我们可以声明组件并为其设置属性,而在ActionScript中,我们可以编写组件的行为和扩展功能。对于这个项目,我们可能需要在ActionScript中创建一个新类,继承自DateField,并添加额外的时间选择功能。 1. ...
例如,可以重写`createChildren()`方法来添加自定义的子组件或图形元素。 3. **添加事件处理**:如果需要自定义按钮的点击行为,可以覆盖`click()`方法,或者在AS类中添加`addEventListener()`来监听并处理自定义...