组件间函数调用时removeEventListener无效

multimultiarrow 2010-12-10 10:57:16
如题,main.mxml中有组件A和B,A中有个按钮如下:
<mx:LinkButton label="注册" id="regButton" color="#ffffff"/>
<mx:LinkButton label="登录" id="loginButton" color="#ffffff"/>
按下去会弹出个TitleWindow的注册框,即是B组件。
A组件在creationComplete时就给按钮regButton加上个EventListener,效果是点击该按钮即弹出B。
regButton.addEventListener(MouseEvent.CLICK,reg);

在成功注册完并返回结果时,将按钮的click事件给去掉,让它点击无效:
private function resultHandler(event:ResultEvent):void
{
//注册成功,退出注册框
PopUpManager.removePopUp(this);
//修改头部的注册和登录按钮为欢迎字幕
Application.application.header.regButton.label="欢迎登录,***";
Application.application.header.regButton.removeEventListener(MouseEvent.CLICK,Application.application.header.reg);
Application.application.header.loginButton.label="退出";

}

运行程序,发现在注册按钮regButton的label变成了"欢迎登录,***",但是登录按钮loginButton的label没有变,并且
regButton还是可以点击。
我觉得是对reg这个函数的引用不对:
Application.application.header.reg
但是又不知道那里出了问题。。。
ps:改成这样也不行:Application.application.header.reg(event)。但是两种方法都没报错。
麻烦各位了。
...全文
503 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
leemiki 2010-12-10
  • 打赏
  • 举报
回复
楼主搞得怎么麻烦又何必呢~~~

直接控制Button的enable/visiable 属性不就行了

注册完直接enable = false或者visiable = false

removeEventListener一般情况下少用,对于用户体验也不好
fw176170847 2010-12-10
  • 打赏
  • 举报
回复
贴下完整代码
水中影子 2010-12-10
  • 打赏
  • 举报
回复
监听并不好

addEventListener如果用 那就弱引用
multimultiarrow 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 leemiki 的回复:]
楼主搞得怎么麻烦又何必呢~~~

直接控制Button的enable/visiable 属性不就行了

注册完直接enable = false或者visiable = false

removeEventListener一般情况下少用,对于用户体验也不好
[/Quote]
这个方法不错~~~
PS:我关掉浏览器并清了下缓存,发现用removeEventListener就可以了。。。

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧