`
presses
  • 浏览: 116084 次
  • 性别: Icon_minigender_1
  • 来自: 中山
社区版块
存档分类
最新评论

面向事件编程

    博客分类:
  • flex
阅读更多

    此信息同时发布在www.humanmonth.cn 上。

 

面向事件编程:钩子。

 

如果要用一句俗一点的话来解释什么是面向事件编程,那句话就是:面向钩子编程。

 

什么是钩子呢?写过 GUI 的人,一般都接触过面向事件编程。那在 GUI 中,钩子在哪里呢?说钩子之前,先说一下元素。界面编程中有各种各样的元素,有看得见的,例如按钮、输入框,也有看不见的,例如 Socket 、异常。而这些元素下挂满了各式各样的构子(事件)例如常见的“ click ”(有些平台下,用户可以自定义构子,例如 Flex )。这些钩子中,有些是由用户触发的,例如:键盘输入、鼠标点击,有些是由远程触发的,例如: Socket IO ,也有由系统触发的,例如:异常。

 

知道了什么是钩子之后,再了解一下面向钩子编程有哪些步骤。一般来说,要用某平台的 GUI 来编程有三个步骤,第一是了解各元素下有哪些钩子、第二步是编写需要被触发的代码、第三步就是把你写的代码正确地放在钩子上。

 

面向事件编程:新瓶旧酒。

 

我们中的很大一部份人都是写后台程序出身。作为一个后台程序员,刚接触 GUI 编程时可能会认为面向事件编程是个新东西。其实你早已认识它。

 

作来后台程序员,你或多或少听过多线程吧?还记得多线程模式中的 Future 模式吗? GUI 初始化后,主类就监听各元素。而各元素开始工作:向服务端请求、数据处理、计算、等待客户输入等。每当元素做完工作就会 notify 主类,也就是触发钓子。如果你在钓子上挂了段代码,那段代码就运行起来。

 

好了,多线程你用得不多。那 GoF Observer 模式你可能比较熟。元素的事件就是目标对像、而你写的代码就是观察者。元素的事件被触发后,观察者就被通知,而你注册在事件上的代码就被执行。

 

其实现在常见 GUI 的面向事件编程就是多线程下的观察者模式。像 IO 操作、向服务端请求、元素更新,更贴近于 Future 模式。而一般的用户触发的事件更贴近观察者模式。

 

面向事件编程:常见陷阱。

<!---->1、  <!---->异常。如果你习惯于后台编程,接触到的异常一般都是同步的。而 GUI 的面向事件编程是中有部份异常是异步的。也就是说如果你要处理异步错误,你需要通过添加事件监听器来处一是。

<!---->2、  <!---->隐蔽的异步构子。有些元素的外观更新是异步的。像近来在 HIM 中修复的一个 BUG 的情况。程序监听 XMLSocket DataEvent.DATA 事件,当检查到是消息协议时,向消息框 TextArea 添加信息。由于要向用户显视最新的信息,也就是 TextArea 最下边的信息,所以在添加完后,还要获取 TextArea 的最大垂直高度,然后设置 TextArea 的重直滚动高度为最大垂直高度。代码如下:

		override public function deal(str:String):void {
			this.face.getMsgArea().htmlText+=str.match(this.getPattern())[1]+"<br/>";
			face.getMsgArea().verticalScrollPosition=face.getMsgArea().maxVerticalScrollPosition;
		}
 

              这样处理的结果是当消息长度超过一行时,只显视到消息的第一行。后来找到的原因是 TextArea 的信息更新是异步的,我运行

this.face.getMsgArea().htmlText+=str.match(this.getPattern())[1]+"<br/>";
 

后, TextArea 只更新到一半,然后我就设置它的新高度了,所以得到的高度不是最后的调度。

最后向 TextArea 添加函数:

msgArea.addEventListener(FlexEvent.UPDATE_COMPLETE,textAreaUpdateEvent);
		public function textAreaUpdateEvent(event:FlexEvent):void{
				this.getMsgArea().verticalScrollPosition=this.getMsgArea().maxVerticalScrollPosition;
		}。
 

后,问题解决。

分享到:
评论
2 楼 流浪的面包树 2008-08-13  
VB也不是吗?JSF 也是事件驱动编程方式. 我觉得VB 做的很好!如果FLEX 还能更VB点就更好了!
1 楼 presses 2008-08-05  
刚毕业出来主要搞多线程和IO,然后又搞了一年Servlet。虽然以前也用过swing,平时写js也会遇到这种基于事件的编程。但比较全面地了解这类基于事件的编程还是flex。所以总结了一下。VB、Delphi这些,我们这一代是错过了。

相关推荐

    ChatGPT付费版本落地,AIGC应用商业化在即,.pdf

    20230205-华西证券-传媒行业:ChatGPT付费版本落地,AIGC应用商业化在即,关注先发布局AIGC及拥有下游分发话语权的标的

    2023-2029全球与中国β-烟酰胺单核苷酸市场现状及未来发展趋势.docx

    2023-2029全球与中国β-烟酰胺单核苷酸市场现状及未来发展趋势.docx

    2024年东南亚电子级磷酸市场深度研究及预测报告.pdf

    东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

    2024汽车玻璃集成UWB数字钥匙发展研究白皮书-CAICV.pdf

    2024汽车玻璃集成UWB数字钥匙发展研究白皮书-CAICV.pdf

    Adyen伽马数据:2023中国游戏出海支付研究报告.pdf

    Adyen伽马数据:2023中国游戏出海支付研究报告

    AI竞赛方案资源分享3

    AI竞赛方案资源分享3

    省市区数据库的SQL源码

    自己写的省市区数据库的源码

    城市智慧停车解决方案双份资料.pptx

    城市智慧停车解决方案双份资料.pptx

    智慧能源建设方案两份材料.pptx

    智慧能源建设方案两份材料.pptx

    AI提示词prompt系列:个人介绍生成器

    个人介绍是我们在社交和职业场合中展示自己的重要方式之一。一个好的个人介绍可以让别人更好地了解我们的背景、技能和兴趣,进而产生更深入的交流和合作。作为一个个人介绍生成器,我会帮助你将个人信息整理成一篇亮眼的介绍,以吸引更多人的注意。

    电信领域数据安全风险评估规范.pdf

    电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范 电信领域数据安全风险评估规范

    2023年中国光伏玻璃企业对比分析(福莱特、金晶科技、彩虹新能源、亚玛顿)-24页.pdf

    各类报告

    进化算法包括GA、PSO、DE

    进化算法是一系列受自然界生物进化过程启发的优化方法,广泛应用于解决复杂优化问题。本文概述了主流进化算法:遗传算法(GA)、粒子群优化(PSO)、差分进化(DE)、蚁群优化(ACO)、灰狼优化(GWO)以及模拟退火(SA)等,并提供了MATLAB示例代码。 遗传算法通过模拟自然选择、交叉和变异过程,迭代地改进解集,寻找最优解。粒子群优化通过模拟鸟群觅食行为,利用粒子间的信息交流来探索解空间。差分进化则通过变异、交叉和选择操作,有效地平衡全局和局部搜索能力。蚁群优化模仿了蚂蚁寻找最短路径的行为,通过信息素的正反馈机制引导搜索方向。灰狼优化借鉴了灰狼的社会等级结构,通过Alpha、Beta和Delta角色引领种群向最优解逼近。模拟退火算法基于物理退火过程,通过接受一定概率的劣解,避免陷入局部最优,实现全局优化。这些算法各有特点,适用于不同类型的优化问题。GA和DE在连续和离散优化问题中表现良好;PSO易于实现且收敛速度快;ACO擅长解决组合优化问题,如旅行商问题;GWO和SA则能有效处理高维和非线性优化问题。通过调整算法参数和策略,可以进一步提升算法性能,解决更广泛的优化挑战。

    抖音品牌视觉识别手册方案双份文档.pptx

    抖音品牌视觉识别手册方案双份文档.pptx

    智慧农牧业解决方案双份材料.pptx

    智慧农牧业解决方案双份材料.pptx

    一次Springboot版本升级导致的问题.md

    springboot

    2024年东南亚锻压机市场深度研究及预测报告.pdf

    东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

    古镇智慧旅游建设方案双份文档.pptx

    古镇智慧旅游建设方案双份文档.pptx

    2024年东南亚动物模型服务市场深度研究及预测报告.pdf

    东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

Global site tag (gtag.js) - Google Analytics