易截截图软件、单文件、免安装、纯绿色、仅160KB

如何从 itemRenderer 中分派事件[Flex][翻译]

原文:How to dispatch an event from a custom item renderer
从 MXML 组件中分派事件并不困难,但是想要从 itemRenderer 中分派事件就没有那么直接了。下文中,我们将回顾一下这两种情况的处理方式并找出一个合适的解决方案。
正常情况下,当你想从 MXML 组件中分派一个事件时会使用如下的元数据标签:
<!-- 写在某个组件中 -->
<mx:metadata>[Event(name="myEvent")]</mx:metadata>
元数据标签让你能在另一个类中以如下方式监听事件:
<!-- 写在调用上面定义的那个组件的类中 -->
<nw:somecomponent myEvent="onSomeEventHandler(event)"/>
最后,当你想在组件中分派事件时可以手工的使用 dispatchEvent() 方法来分派。
但是如果你是想从一个作为 itemRenderer 的组件中分派事件的话会如何呢?考虑一下以下的情况:
在 Flex 应用程序中新建一个 List 组件。然后新建一个包含有 RadioButton 的组件用于 List 的 itemRenderer。当用户单击 RadioButton 时,可能你会想让他的父组件 List 产生一个事件。
但是如下的代码会产生一个编译器错误,因为 List 组件并没有“myEvent”属性:
<!-- 会产生一个编译器错误 -->
<mx:list id="myList" dataprovider="{listData}"
       itemRenderer="uk.nwebb.CustomRenderer"
       myEvent="onSomeEventHandler(event)" />
由于我们并没有实例化自己的 itemRenderer,如何才能获得广播出来的事件呢?要想实现这样的功能,必须通过下面的两个步骤:
首先,我们必须让我们分派的事件上浮,只要在方法中添加一些而外的参数就可以做到。如下设置 bubble 和 cancelable 参数:
//写在某个组件中
dispatchEvent("myEvent", true, true);

//由于原文比较老,上面这个写法是 Flex 2 的。Flex 3 的后面两个参数要赋到 Event 实例里面。
//Flex 3 代码如下
dispatchEvent(new Event("myEvent", true, true));
现在 List 组件仍然还是没有 myEvent 属性。为了能让 List 组件接收到上面分派的事件,我们必须确保这个 List 组件有 ID,然后可以在初始化函数或者 creattionComplete 函数中绑定事件:
//写在创建 List 组件的类中
private function onInit():void
{
    myList.addEventListener("myEvent", myEventHandler);
}
据我所


相关文档:

flex 操作TabNavigator子视图遇到的null值异常

A界面,B界面
A调用B,B中有TabNavigator
我想在A中获得B第二个标签的控件。报空值异常
---解决办法
在TabNavigator属性中添加creationPolicy=“all”,意思是TabNavigator创建的时候所有子视图全部实例化,否则只实例化默认视图,虽然这样做会导致程序启动稍微慢一些。 ......

flex game

package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;

import flashx.textLayout.formats.BackgroundColor;

import spark.effects.interpolation.RGBInterpolator;
public class Map extends Sprite implements IMap
{
//格子的宽高
private va ......

Flex Builder 3中对AS和MXML的格式化

在Eclipse中,有个快捷键是对java代码进行格式化,写完代码后觉得代码格式不够好,按下快捷键就搞定了。但是在Flex开发中,很头疼的问题是没有提供对as3代码和MXML代码格式化的支持,我在网上搜索了一下,发现一个开源的好工具:Flex Formatter 项目托管地址:http://sourceforge.net/projects/flexformatter/ 去上面那个 ......

Flex琐事

1.关于flex调试出错新的解决思路:除了网上说的flash debug版本没装外,nod杀毒软件也是一个问题 还有就是调试模式的问题 有本地模式和远程模式 具体修改方式调试状态下右击调试器选择自己想要的. 2.flex绑定数组删除元素后list没有更新数据 可以用invalidateList() 3.progressBar进度没更新可能是mode设定的原因 ......

as 运算符(FLEX)

as 运算符是 ActionScript 3.0 中的新增运算符,也可用来检查表达式是否为给定数据类型的成员。但是,与 is 运算符不同的
是,as 运算符不返回布尔值,as 运算符返回表达式的值(代替 true)或 null(代替 false)。下面的示例演示在检查 Sprite 实例
是否为 DisplayObject、IEventDispatcher 和 Number 数据类型的成员这 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号