用户名:  密码:
兄弟在线   

标题:flash MXML标签添加的侦听

作者:佚名 来源:一聚教程 时间:2011-09-15

在flex中我们可以很方便的在mxml标签中使用事件名="函数名()"来给对象添加侦听..
像click="goUrl()"

可是当我们不需要该侦听的时候..
如果想使用
id.removeEventListener("click",goUrl)来删除侦听.
却发现怎么也remove不成功..

原来使用该方法给对象添加侦听时..
flex并不是直接使用我们指定的函数(goUrl),
而是先动态生成一个函数.
然后再使用该函数调用我们指定的函数..

所以我们使用id.removeEventListener("click",goUrl)当然就失败了...

正当ym的时候..记得之前使用过状态(state)来移除过这样的侦听..
马上试了下一下..
<mx:states>
  <mx:State name="statename">
    <mx:SetEventHandler target="{obj}" name="click"/>
  </mx:State>
</mx:states>运行了一下..果然成功了..

无耐之下只好把swf反编译一下...终于在代码里看到了
一个叫"__obj_click"的函数..

猜想这个应该就是由flex动态添加的函数..于是试了一下...

obj.removeEventListener("click",this["__obj_click"]);
//这里需要注意..为什么不直接使用__obj_click
而使用this["__obj_click"],
因为当flex编译时..__obj_click 这个函数还不存在,直接调用会出错..所以取巧一下..

保存运行..侦听成功删除...猜想正确...

分析一下该函数的规律..
第一部份是"__"
第二部份是对象ID
第三部份是"_"
第四部份是事件名

相应的
mouseOver事件就是__obj_mouseOver
mouseDown事件就是__obj_mouseDown



编辑:admin 总点击 [939]   评论  0 查看评论
上一篇:flash 面积计算器
下一篇:flash as3.0 动态画曲线
【关闭窗口】
您可能感兴趣的文章
我要评论
          
评论标题:   可以输入250
 
验证数字: 1 + 2 =
兄弟友情提示
· 请自觉遵守国家有关法律、法规,尊重网上道德。
· 兄弟在线坚决抵制不良言行,违者文责自负。
· 如果文章有版权或其他问题等,请联系我们,我们会尽快处理。
· 文章注名来自网络的旨在传播共享信息,不做其它用途;注名原创的本站支持原创,但不代表同意其观点。
· 兄弟在线拥有管理用户与其文章和评论的一切权利,并有权在网站内转载或引用。
兄弟在线
兄弟热门文章
兄弟推荐文章
兄弟站内搜索

兄弟感兴趣的文章
兄弟最新影视