- 浏览: 75142 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
兩ting:
说实话,我没有装成功。。。
Ubuntu上搭建Flex4的开发环境 -
chenzhou123520:
写得很好,赞一个,不过指出一个小错误引用表 2. IoSess ...
Mina服务器开发入门基础,实例讲解 -
jinx3166:
受益良多!
关于flex不能移除监听器总结 -
兩ting:
Flex太强大了,不过会的人不是很多.精通的人就更少了
Ubuntu上搭建Flex4的开发环境 -
liminjun:
你们平时开发也是用Ubuntu吗?Flex做企业项目还是有很大 ...
Ubuntu上搭建Flex4的开发环境
首先看我从网上转载了一篇文章:
<!------------
在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
-------------!>
在实际运用中,我们可能为某个组件或容器添加监听
xx(Id).addEventListener(xxxEvent,fun)
又要在AS代码中用获取组件或容器的ID来移除监听
xx(Id).removeEventListener(xxxEvent,fun);此时不能移除该监听改怎么办呢?
今天在开发的时候用到了一种比较简单和实用的办法就是,在上面的监听事件执行方法fun中用判断
一个变量的值来控制代码执行,比如加一个flg:Boolean的开关,将要监听的代码放到if(flg){}里面,用
不到监听时,但现在又不能移除监听,这时就可以将flg设置为false不然监听事件的方法执行任何逻辑
代码。这样虽然没有根本移除监听,但对要经常在一个容器或组件上反复使用和取消监听的菜鸟是个很
不错的解决方法!!!
我们继续用代码来实例为在mxml中的组件不能用xx(Id).removeEventListener(xxxEvent,fun)移除
和哪些情况可以移除,请阅读下面实例:(自定义监听事件参数,和移除监听)
我们知道FLEX添加监听事件,会经常使用到,但是常见的方法,并不能自定义参数。我收集到一个非常好的方法。可以在监听的时候,添加自己喜欢的参数。好吧,我们开始第一个
- <?xml version="1.0" encoding="utf-8"?>
- <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
- <fx:Script>
- <![CDATA[
- import mx.controls.Alert;
- public var count:int=0;
- protected function button1_clickHandler(event:MouseEvent):void
- {
- bt2.addEventListener(MouseEvent.CLICK,function(event:MouseEvent):void
- {
- clickPar(event,20,30);
- });
- }
- protected function clickPar(event:MouseEvent,x:int,y:int):void
- {
- count++;
- ta.text+="被调用了"+count+"次"+"x:"+x+"y:"+y+"\n";
- }
- ]]>
- </fx:Script>
- <fx:Declarations>
- <!-- 将非可视元素(例如服务、值对象)放在此处 -->
- </fx:Declarations>
- <s:Button x="64" y="40" label="按钮1" click="button1_clickHandler(event)"/>
- <s:Button x="63" y="97" label="按钮2" id="bt2"/>
- <s:TextArea x="217" y="32" id="ta"/>
- </s:Application>
点击按钮1,为按钮2,添加相应的监听事件,点击一次按钮一,将会增加一次对按钮2的监听。这样我们就可以实现监听事件的时候,传递相关参数。问题来了,我们现在需要移除监听。好吧,我们继续,按照我们常规的做法,就是把这个函数再写一遍就是了。
- <?xml version="1.0" encoding="utf-8"?>
- <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
- <fx:Script>
- <![CDATA[
- import mx.controls.Alert;
- public var count:int=0;
- protected function button1_clickHandler(event:MouseEvent):void
- {
- bt2.addEventListener(MouseEvent.CLICK,function(event:MouseEvent):void
- {
- clickPar(event,20,30);
- });
- }
- protected function clickPar(event:MouseEvent,x:int,y:int):void
- {
- count++;
- ta.text+="被调用了"+count+"次"+"x:"+x+"y:"+y+"\n";
- }
- protected function button3_clickHandler(event:MouseEvent):void
- {
- bt2.removeEventListener(MouseEvent.CLICK,function(event:MouseEvent):void
- {
- clickPar(event,20,30);
- });
- }
- ]]>
- </fx:Script>
- <fx:Declarations>
- <!-- 将非可视元素(例如服务、值对象)放在此处 -->
- </fx:Declarations>
- <s:Button x="64" y="40" label="按钮1" click="button1_clickHandler(event)"/>
- <s:Button x="63" y="97" label="按钮2" id="bt2"/>
- <s:TextArea x="217" y="32" id="ta"/>
- <s:Button x="63" y="155" label="按钮3" click="button3_clickHandler(event)"/>
- </s:Application>
其实function(event:MouseEvent):void
{
clickPar(event,20,30);
}
这是一个匿名函数,虽然写的是一模一样,但是函数地址是不一样的,所以说,移除的不是你添加的,这句话你明白了吗?我似乎听见,都在说,small case。
解铃还须系铃人,我们把那个监听的函数给记住,然后不就可以了吗!对。这个匿名函数,怎么能得到他呢。当然我们可以查一下帮助文档,arguments 出现在我们面前,为什么我会知道这个东西呢?当然,我写这篇文章之前,我都从网络上搜索好了,实现方法是什么,所以知道该查什么。
callee |
property |
public var callee:Function
Language Version: | ActionScript 3.0 |
Runtime Versions: | AIR 1.0, Flash Player 8, Flash Lite 4 |
A reference to the currently executing function.
下面稍微修改一下,就可以移除了。
- <?xml version="1.0" encoding="utf-8"?>
- <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
- <fx:Script>
- <![CDATA[
- import mx.controls.Alert;
- public var count:int=0;
- public var ft:Function;
- protected function button1_clickHandler(event:MouseEvent):void
- {
- bt2.addEventListener(MouseEvent.CLICK,function(event:MouseEvent):void
- {
- clickPar(event,20,30,arguments.callee);
- });
- }
- protected function clickPar(event:MouseEvent,x:int,y:int,fn:Function):void
- {
- ft=fn;
- count++;
- ta.text+="被调用了"+count;
- }
- protected function button3_clickHandler(event:MouseEvent):void
- {
- bt2.removeEventListener(MouseEvent.CLICK,ft);
- }
- ]]>
- </fx:Script>
- <fx:Declarations>
- <!-- 将非可视元素(例如服务、值对象)放在此处 -->
- </fx:Declarations>
- <s:Button x="64" y="40" label="按钮1" click="button1_clickHandler(event)"/>
- <s:Button x="63" y="97" label="按钮2" id="bt2"/>
- <s:TextArea x="217" y="32" id="ta"/>
- <s:Button x="63" y="155" label="按钮3" click="button3_clickHandler(event)"/>
- </s:Application>
我总感觉,Flex与JS有太多的相似性,当我不熟悉Flex的时候,我就向JS想,看看能不能有什么突破点没。
发表评论
-
BlazeDS的功能原理及配置实例
2013-05-01 23:26 1127BlazeDS Test Drive里面示例了主要的功能: ... -
Flex与Severlet(Jsp)通信传递中文参数乱码问题的解决
2013-02-19 15:51 681Java代码 var url ... -
Java与Flex建立Socket连接
2013-02-17 23:42 855Socket与其他的通信技术最大的不同是Socket连接在数 ... -
Ubuntu上搭建Flex4的开发环境
2013-02-15 20:58 1133原文出自:http://www.brighthub.com/ ... -
flex web应用程序生成自定义右键菜单
2013-01-25 17:13 1068屏蔽浏览器的鼠标右键,同时监听鼠标右键,当触发右键点击事件的 ... -
Flex通过HTTPService与servlet通信
2013-01-16 15:03 993Flex通过HTTPService与servlet通信 ... -
flex摄像头连接视频录制
2012-12-25 23:55 1613Flex提供了3个类实 ... -
Flex中多线程的实现(摘)
2012-12-25 19:49 1239Flex中多线程的实现 最近在网上看到一个工具 ... -
flash builder 4.7 install for windows 8
2012-12-23 01:02 1264之前在自己的win8上集成fb到myecl ... -
flex load map
2012-12-21 15:48 924ArcGIS Server flex加载google地图 ... -
Flex与JavaScript交互调用函数
2012-12-21 09:43 837一、在JavaScript中调用Flex方法 在 Flex ... -
Flex中TitleWindow关闭按钮CloseButton的定制问题
2012-11-29 16:01 1172问题:TitleWindow的关闭 ... -
flex学习之联动下拉框实现
2012-11-27 12:55 1271Java代码 TbArea.java ... -
flex中弹出确认对话框
2012-11-22 16:30 817Xml代码 <?xml versi ... -
Flex(ActionScript3)解析XML
2012-11-20 17:21 641正文: 对于如下的一个XML文档,在flash中应该怎么读呢 ... -
MessageBroker /amf
2012-11-20 10:58 878MessageBroker 我们称他为信息经纪人,它职责就是把 ... -
Flex3 组件的定位和布局
2012-11-18 19:22 753Flex 组件的定位和布局 大多数 Flex 容器使用预定义 ... -
Flex异步令牌AsyncToken的用法介绍
2012-11-15 09:28 679什么是AsyncToken?官方文档是这样描述的:" ... -
Flex布局简介
2012-11-14 14:38 798★设置组件布局 对于所有的继承自UIComponent的组件包 ... -
Flex编程注意之直接获取某个组件的对象(this[]用法)
2012-11-14 13:09 635有这样一个需求:假如你new了一百次Button,同时这 ...
相关推荐
flex 动态加载css文件方法总结,增加flex的界面美化效果。简单易懂,易操作。
FLEX技术总结20110414FLEX技术总结20110414FLEX技术总结20110414FLEX技术总结20110414FLEX技术总结20110414
FLEX技术总结20110413FLEX技术总结20110413FLEX技术总结20110413FLEX技术总结20110413FLEX技术总结20110413
关于flex的教程,目前flex教材比较少,教材更是更少了
针对Flex不能Debug调试问题:调试器总是加载到48%时,加载到最后会出现会话超时提示框,详情请看文档。
本文主要是我对Flex学习的总结,以供大家学习参考。
这是作者自己亲自编写的教程,里面包含的有图解教程,各式jar,及配置文件,全部包含在内,如果你是一个决定学习flex初学者,我敢保证它肯定适合你!带上你走上flex开发旅途!
关于Flex的入门基础资料,详细介绍了Flex的开发,是一部难得的Flex教程
flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图...
flex语法总结,主要是actionscript的基本语法和一些列插件的使用。
FLEX特效FLEX特效FLEX特效FLEX特效 FLEX特效FLEX特效FLEX特效FLEX特效 FLEX特效FLEX特效FLEX特效FLEX特效 FLEX特效FLEX特效FLEX特效FLEX特效
Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex ...
FLEX 数据绑定 Flex HTTPservice使用 Flex 创建自定义事件。 其它入门基础等。
flex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex学习的好资源啊
Flex简介Flex简介Flex简介Flex简介Flex简介
flex事件flex事件flex事件flex事件flex事件
对flex开发socket的服务的一个总结,包括连java,c++的server socket
flex开发知识总结 flex开发知识总结flex开发知识总结flex开发知识总结flex开发知识总结flex开发知识总结flex开发知识总结flex开发知识总结flex开发知识总结flex开发知识总结flex开发知识总结flex开发知识总结flex...
Flex 组件Flex 组件Flex 组件Flex 组件Flex 组件
主要涉及对于flex中进行一些查询,关于地图与属性之间