问题:点击第三级元素,结果一二级元素也影响了!
解决方案:
事件监听时需要多设置一个参数false,而true意味着事件在所有过程传递也是默认的值。
p0.addEventListener(MouseEvent.CLICK, p0_clickHandler, false);
每个事件都需要防止冒泡
event.stopPropagation();
所有代码如下:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
creationComplete="application1_creationCompleteHandler(event)"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.FlexEvent;
protected function btn0_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
Alert.show("btn0","msg");
}
protected function btn1_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
Alert.show("btn1","msg");
}
protected function btn2_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
Alert.show("btn2","msg");
}
protected function p0_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
Alert.show("p0_clickHandler","msg");
event.stopPropagation();
}
protected function p1_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
Alert.show("p1_clickHandler","msg");
event.stopPropagation();
}
protected function p2_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
Alert.show("p2_clickHandler","msg");
event.stopPropagation();
}
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
// TODO Auto-generated method stub
p0.addEventListener(MouseEvent.CLICK, p0_clickHandler, false);
p1.addEventListener(MouseEvent.CLICK, p1_clickHandler, false);
p2.addEventListener(MouseEvent.CLICK, p2_clickHandler, false);
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Panel id="p0" width="900" height="600" title="一级">
<s:layout>
<s:HorizontalLayout/>
</s:layout>
<s:Panel id="p1" width="600" height="300" title="二级">
<s:layout>
<s:HorizontalLayout/>
</s:layout>
<s:Panel title="三级" id="p2" width="300" height="150">
<s:Button id="btn2" click="btn2_clickHandler(event)" label="btn2"/>
</s:Panel>
<s:Button id="btn1" click="btn1_clickHandler(event)" label="btn1"/>
</s:Panel>
<s:Button id="btn0" click="btn0_clickHandler(event)" label="btn0"/>
</s:Panel>
</s:Application>
分享到:
相关推荐
事件监听器可以在任意阶段注册,以决定何时处理事件。 7. 事件阻止和事件冒泡停止: 使用event.stopPropagation()可以阻止事件继续冒泡到父组件,而event.preventDefault()可以防止事件的默认行为,比如链接的跳转...
在本文中,我们将深入探讨Flex事件的各个方面,包括事件流、事件类型、自定义事件的创建与处理。 首先,Flex的事件流分为三个阶段:冒泡阶段、捕获阶段和目标阶段。冒泡阶段是从最具体的子组件开始,沿着组件层次...
事件机制使得开发者能够轻松响应用户交互和系统事件,为Flex程序员提供了强大且直观的处理工具。 首先,Flex事件是用户与应用程序交互的关键。事件是ActionScript 3.0中的核心概念,它们在DOM3事件模型的基础上进行...
3. **事件目标(Target)**:接收并处理事件的对象。销售人员可以被视为事件目标。 4. **事件侦听器(EventListener)**:监听特定类型的事件,并在事件发生时执行相应代码的对象。销售人员可以被看作是事件侦听器。 5. ...
事件监听器是处理事件的方法;事件流描述了事件从源传播到目标的路径。 2. **事件类型** Flex中有多种内置事件类型,如`MouseEvent`(鼠标事件)、`KeyboardEvent`(键盘事件)、`FocusEvent`(焦点事件)和`...
通过设置`addEventListener`的第三个参数,可以选择在哪个阶段处理事件。 5. **项目结构**:压缩包中的`.actionScriptProperties`和`.flexProperties`文件是Flex项目的配置文件,用于保存编译设置和项目特性。`....
在 Flex 中,事件监听通常通过在 MXML 组件上添加事件处理函数来完成。例如,我们可以为 `Button` 组件的 `click` 事件添加一个处理函数,如 `clickHandler`,并在函数签名中传递 `event` 参数。这个 `event` 参数...
事件对象通过`type`属性标识事件类型,`target`属性指明事件发生的对象,而`currentTarget`属性则表示当前处理事件的组件。 4. 自定义事件 Flex允许开发人员自定义事件,以满足特定需求。创建自定义事件通常需要...
Flex 事件流是Flex应用程序中事件处理的核心机制...在实际开发中,不仅要关注事件的触发和处理,还要注意性能优化,避免过多的事件监听导致的性能问题。在多人协作的项目中,明确事件的使用和命名规范也显得尤为重要。
1. **事件模型**:Flex采用发布/订阅模型处理事件,事件源(如UI组件)发布事件,而感兴趣的接收者(监听器)则订阅这些事件。事件源在特定事件发生时会触发事件,监听器接收到事件后执行预定义的处理函数。 2. **...
通过上述内容,我们了解了Flex事件机制的基本概念及其重要组成部分,包括事件的触发与处理、事件注册通道的作用、事件分发的过程以及事件对象的属性。对于Flex开发者而言,熟练掌握这些知识可以帮助他们更加高效地...
3. 事件处理:处理自定义事件通常需要在组件内部注册事件监听器,并在监听器函数中处理事件。监听器可以添加到组件本身或其父组件上,使用addEventListener方法。事件处理函数接收一个事件参数,从中可以获取事件的...
- `EventDispatcher`是Flex中的事件调度器,负责处理事件的分发。在示例中,`CustomEvent`类使用静态的`EventDispatcher`实例`dispatcher`来分发事件。 - `addEventListener()`:用于注册事件监听器,指定事件发生...
在Flex应用中,事件处理是构建动态和响应式用户界面的关键。 首先,我们要理解Flex事件模型的基础。在Flex中,事件是由Event类或其子类表示的,它们是传递信息的对象。当一个事件发生时,它会从源对象(通常是组件...
本文将深入探讨Flex事件的基础知识、事件模型、事件生命周期、事件监听器,以及如何自定义事件,旨在帮助初学者理解和熟练运用Flex的事件处理。 一、Flex事件基础 1. 事件模型:Flex采用的是基于发布/订阅...
这种模型允许在不同层次的组件上监听并处理事件,增强了代码的灵活性和可维护性。 Flex事件主要分为以下几类: 1. **生命周期事件**:这些事件与组件的创建、显示、隐藏等生命周期状态相关。例如,...
### Flex:事件的流转控制 #### 一、事件机制概览 ...通过上述示例,我们可以清楚地看到如何利用Flex中的事件机制来实现不同场景下的事件处理逻辑。理解这些概念对于构建高效、响应迅速的Flex应用程序至关重要。
2. **事件传播**:Flex事件遵循捕获、目标、冒泡三个阶段的传播模型。开发者可以通过`addEventListener`方法监听特定事件,而`eventPhase`属性则可以帮助确定事件处于哪个传播阶段。 3. **事件处理**:在事件处理...
在这个过程中,任何沿路径上的监听器都会有机会处理事件。 2. 捕获阶段:在事件冒泡之前,事件会从应用程序的根节点向下传播到事件源。这个阶段允许在组件层次结构的更高级别上处理事件,对全局行为的处理非常有用...