首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

Flex的1点入门经验(2)-itemRenderer的使用

2013-05-02 
Flex的一点入门经验(2)--itemRenderer的使用http://kabike.iteye.com/blog/1850988里我们已经产生了一个列

Flex的一点入门经验(2)--itemRenderer的使用
http://kabike.iteye.com/blog/1850988里我们已经产生了一个列表,不过列表的最后一列往往都是操作,现在我们在最后一列添加几个按钮



现在看到后面出现按钮了,

下面要添加一些事件
首先在barClient.mxml(就是我们一直用的这个文件)中定义一个函数,然后期望在按钮的click事件中触发它


结果发现两个错误,指出"调用的方法 foo 可能未定义。"
这是怎么回事呢?
在flex中,每个mxml文件最终会编译为as文件来执行,我们先在barClient这个工程加上-keep-generated-actionscript选项,保留产生的as文件

会发现barClient和它的那个itemRenderer会分别编译成一个类,

事实上,我们用的这种itemRenderer是inline itemRenderer,它和一个外部的itemRenderer没什么本质的区别.
为了在itemRenderer中引用那个foo函数,我们可以把foo首先改成public,然后button改成如下形式

outerDocument是向外面这个document的引用...

突然想起如果是java的话,itemRenderer应该编译成outerDocument的内部类,那么那个foo方法就不用搞成public的了

现在已经可以工作了,不过每次看着那个public的foo方法总是感觉不爽.因此更好的方案是利用event.itemRenderer的职责应该是显示,然后产生一个event,让外部组件来处理这个事件.

改进后代码如下

这样foo方法摇身一变,成了一个eventhandler,但是它仍然是private的,注意
var event:CrapEvent=new CrapEvent(type,true);
其中第一个true表示这个事件是冒泡的,因为事件是itemRenderer发出的,而handler注册在application上,因此冒泡是必须的.
CrapEvent是一个普普通通的自定义事件.

热点排行