事件机制,传递Function,两者相结合,恰到好处

世界是多元的,不同的事物有机地整合在一起,才能达到”自然和谐“的状态。

事件机制是传递信息的有效手段,但不是”唯一的“,也不能说是”最好的“(因为没有所谓”最好的“)。

它有其适用的范围,也就是说有些场合用它并不是最合适的。

比如DropDown,DateChooser这些有弹出窗体效果的组件。弹出的窗体都是通过stage.addChild(window)这种方式显示的。

也就是说只有通过stage.addEventListener()的方式才能够监听到窗体发出的事件。而在组件内部无法监听到窗体发出的事件。

这很别扭。从代码结构上看非常不自然。

且事件机制提供便利的信息传递的途径的同时,也带来”信息的泄露“。

”封闭性“差。

选择、设计数据传递方式的时候,也要重视自然界中所描述的”自然和谐“。

意即代码结构简明合理,通俗易懂。

这对于组件的结构和机制的设计都非常重要。

父子组件之间可以通过建立回调函数来实现信息的传递。

这样的结构和机制保证了数据的”封闭性“,不会向外扩散,同时简单易行。也减少了事件监听器产生的性能开销。

时间: 2024-12-14 07:37:09

事件机制,传递Function,两者相结合,恰到好处的相关文章

百度地图API详解之事件机制,function“闭包”解决for循环和监听器冲突的问题:

原文:百度地图API详解之事件机制,function"闭包"解决for循环和监听器冲突的问题: 百度地图API详解之事件机制 2011年07月26日 星期二 下午 04:06 和DOM编程里的事件模型一样,百度地图API也提供了类似的事件机制.本文介绍了事件监听的添加和移除方法,this指针和事件参数的使用以及绑定事件监听函数中涉及的闭包问题,最后分享了一个用来增强地图API事件机制的开源项目. 事件添加和移除 我们最简单的事件开始,下面的代码示例给map对象添加了click事件的监听

Android事件机制之一:事件传递和消费

http://www.cnblogs.com/lwbqqyumidi/p/3500997.html 关于Android中的事件机制,用到的地方还是很多的,并且这个知识点还真有点复杂. 在写这篇文章前,网上看了不少博文,有的写的感觉挺不错的.只是当时感觉好像理解了,事后又很容易忘.现在自己也系统整理下吧. Android中的事件在表现形式上有很多,如onTach.onClick和onLongClick等,在具体微观上的表现形势有action_down.action_move和action_up等.

[学习总结]4、Android的ViewGroup中事件的传递机制(一)

本文主要针对dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent三个方法,通过简单的例子来简单的介绍下. 根据字面意思的理解,dispatchTouchEvent分发触摸事件,onInterceptTouchEvent拦截触摸事件,onTouchEvent触摸事件.正如它们各自的字面意思,下面简单的列出各自的作用和用法. 1.dispatchTouchEvent作用:决定事件是否由onInterceptTouchEvent来拦截处理. 返回s

[学习总结]5、Android的ViewGroup中事件的传递机制(二)

下面是第一篇的连接 Android的ViewGroup中事件的传递机制(一) 关于onInterceptTouchEvent和onTouchEvent的详细解释. 1 public class MainActivity extends Activity { 2 Group1 group1; 3 Group2 group2; 4 MyTextView myTv; 5 6 /** Called when the activity is first created. */ 7 @Override 8

Touch事件的传递机制

本文主要从源代码的角度讲解view以及viewgroup的事件传递机制. ViewGroup的dispatchTouchEvent方法: Private TouchTarget firstTouchTarget; Public Boolean dispatchTouchEvent(MotionEvent ev){ 先进行安全检查,看看当前window有没有遮挡,如果没有继续 if(action==ACTION_DOWN){ 清理上次的TouchTargets的状态,避免程序切换和ANR的时候会抛

史上最详细的iOS之事件的传递和响应机制

前言: 按照时间顺序,事件的生命周期是这样的: 事件的产生和传递(事件如何从父控件传递到子控件并寻找到最合适的view.寻找最合适的view的底层实现.拦截事件的处理)->找到最合适的view后事件的处理(touches方法的重写,也就是事件的响应) 其中重点和难点是: 1.如何寻找最合适的view 2.寻找最合适的view的底层实现(hitTest:withEvent:底层实现) (一)iOS中的事件 iOS中的事件可以分为3大类型: 触摸事件 加速计事件 远程控制事件这里我们只讨论iOS中的

事件的传递和响应机制(全)

前言: 按照时间顺序,事件的生命周期是这样的: 事件的产生和传递(事件如何从父控件传递到子控件并寻找到最合适的view.寻找最合适的view的底层实现.拦截事件的处理)->找到最合适的view后事件的处理(touches方法的重写,也就是事件的响应) 其中重点和难点是: 1.如何寻找最合适的view 2.寻找最合适的view的底层实现(hitTest:withEvent:底层实现) (一)iOS中的事件 iOS中的事件可以分为3大类型: 触摸事件 加速计事件 远程控制事件 这里我们只讨论iOS中

Node.js入门:事件机制

Evented I/O for V8 JavaScript 基于V8引擎实现的事件驱动IO. 事件机制的实现 Node.js中大部分的模块,都继承自Event模块(http://nodejs.org/docs/latest/api/events.html ).Event模块(events.EventEmitter)是一个简单的事件监听器模式的实现.具有addListener/on,once,removeListener,removeAllListeners,emit等基本的事件监听模式的方法实现

Cocos2d-X3.0 刨根问底(七)----- 事件机制Event源码分析

这一章,我们来分析Cocos2d-x 事件机制相关的源码, 根据Cocos2d-x的工程目录,我们可以找到所有关于事件的源码都存在放在下图所示的目录中. 从这个event_dispatcher目录中的文件命名上分析 cocos2d-x与事件相关的类一共有四种, Event, EventListener,EventDispatcher, Touch分别为 事件,事件侦听器,事件分发器,触摸 我们先从Event类开始. 打开CCEvent.h文件 /** * Base class of all ki