移除由MXML标签添加的侦听
来源:互联网 发布:thinkphp三级分销源码 编辑:程序博客网 时间:2024/06/05 21:04
在flex中我们可以很方便的在mxml标签中使用事件名="函数名()"来给对象添加侦听..
像click="goUrl()"
可是当我们不需要该侦听的时候..
如果想使用
id.removeEventListener("click",goUrl)来删除侦听.
却发现怎么也remove不成功..
原来使用该方法给对象添加侦听时..
flex并不是直接使用我们指定的函数(goUrl),
而是先动态生成一个函数.
然后再使用该函数调用我们指定的函数..
所以我们使用id.removeEventListener("click",goUrl)当然就失败了...
正当ym的时候..记得之前使用过状态(state)来移除过这样的侦听..
马上试了下一下..
1.
<mx:states>
2.
<mx:State name=
"statename"
>
3.
<mx:SetEventHandler target=
"{obj}"
name=
"click"
/>
4.
</mx:State>
5.
</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
一个例子...简单的三个鼠标事件..没有进行大范围的测试..至少鼠标事件是ok了..详细就不多说了..
01.
<?xml version=
"1.0"
encoding=
"utf-8"
?>
02.
<mx:Application xmlns:mx=
"http://www.adobe.com/2006/mxml"
layout=
"absolute"
backgroundGradientAlphas=
"[1.0, 1.0]"
backgroundGradientColors=
"[#FFFFFF, #FFFFFF]"
width=
"400"
height=
"300"
fontSize=
"12"
>
03.
<mx:Script>
04.
<![CDATA[
05.
private
function
func(e:MouseEvent):
void
06.
{
07.
t.text = e.type+
":"
+e.localX+
","
+e.localY;
08.
}
09.
private
function
remove():
void
10.
{
11.
c.removeEventListener(
"click"
,
this
[
"__c_click"
]);
12.
c.removeEventListener(
"mouseMove"
,
this
[
"__c_mouseMove"
]);
13.
c.removeEventListener(
"rollOut"
,
this
[
"__c_rollOut"
]);
14.
t.text =
"事件已经移除"
15.
}
16.
]]>
17.
</mx:Script>
18.
<mx:Canvas id=
"c"
click=
"func(event);"
mouseMove=
"func(event);"
rollOut=
"func(event);"
x=
"10"
y=
"10"
width=
"200"
height=
"280"
borderStyle=
"none"
backgroundColor=
"#333333"
>
19.
</mx:Canvas>
20.
<mx:Text id=
"t"
x=
"218"
y=
"10"
width=
"172"
height=
"250"
/>
21.
<mx:Button x=
"218"
y=
"268"
label
=
"remove event"
click=
"remove()"
/>
22.
</mx:Application>
测试说明:
先在灰色的块中移动,单击,移出测试事件..
然后点击"remove event"后..
再回来灰色块中..试试
- 移除由MXML标签添加的侦听
- flex中移除由MXML标签添加的侦听
- mxml的标签
- Flex在匿名方法移除自身的侦听方法
- Flex在匿名方法移除自身的侦听方法
- Flex在匿名方法移除自身的侦听方法
- 仅适用于 MXML 的标签
- js标签添加与移除特效
- JQuery快速添加/移除插件EasyInsert的简单取值、自动添加或移除多行标签、自动添加事件
- select标签左边集合和右边集合 ,添加,移除, 多选添加,移除功能
- jquery为a标签添加和移除onclick事件
- 进入页面给HTML标签添加、移除样式
- 加载由mxml生成的swf,并访问内部方法
- Swift UIView 的多种添加方法和打标签和移除(方法的详解)、父子视图的关系
- 移除HTML标签
- 移除Html标签
- subView的添加与移除
- 对ListBox的添加移除操作
- Silverlight 2 开发环境
- 推荐一个工具包自定义HTTP 404错误
- ASP.NET MVC Release Candidate 1学习指南
- DNF为什么会火~
- 【转】软件性能测试前期需求分析
- 移除由MXML标签添加的侦听
- ASP.NET MVC 1.0 RC 那些事
- Linus Torvalds 宣布转向使用 GNOME
- Silverlight: 通过LINQ 和Isolated Storage构建客户端数据库
- Linux下的Silverlight:Moonlight 1.0 发布了
- Silverlight 中的 CoreCLR
- 分布式计算平台:Dryad
- 奥巴马就职委员会选择微软Silverlight技术
- WPF/Silverlight中的Command