依赖注入

在理解和使用robotles之前,我们需要理解什么是依赖注入。简单来说,就是将对象的实例化,从我们的代码中挪出去。将它们配置在配置文件中,由容器来根据配置,在我们需要实例的时候帮我们进行对象的实例化,并进行赋值。这样一来,我们就将对象代码A和使用对象A的实例的代码B之间的耦合关系解除了,这就是解耦。

框架结构

一张图就能很好地描述这个问题了,图片来源于:MVCS Class and Flow Diagram

View和Mediator的关系

这里的感觉有点类似于以前接触的MVC概念中的view和controller之间的关系。举例来说,一个HTML页面(view)有很多按钮,而按钮的点击事件就是一个event,而这个event view是不管的,而是通过mediator来进行捕捉和控制。用户点击按钮然后mediator发送事件,等到收到反馈后,再进行view的更新。view和mediator是两者一体一组的一个集显示和事件控制为一体的结构。

View和Mediator具体职责划分

应该理解robotlegs向舞台上添加的View是一个容器,而不是直接的显示内容。然后在该view内管理view上要显示的内容(MovieClip),并在view内进行事件注册(不包含事件响应),以及实现view内显示内容更新的逻辑(事件响应后的页面更新)。然后在Mediator中实现view中注册事件的响应逻辑。

addContextListener与addViewListener之间的差别

addViewListener是使用在view与mediator相互之间通讯的方法,你可以在你的mediator里使用这个函数注册一个事件的回调函数,然后当view(Sprite)有变化的时候,这个回调会被触发。当然,因为view一般都会作为注入对象,注入到mediator中,所以你也可以在view中创建一个signal,然后通过使用signal的方法来获取事件监听的效果。

而addContextListener则不同,它是用来监听mediator与其他组件之间通讯的方法。比如说某个command会触发某个事件,而这个事件需要在mediator中被捕捉到进而更新view的显示。这个时候你就需要在mediator中使用addContextListener来注册一个回调函数,然后在command中dispatch该事件,mediator中就能捕捉到这个事件了。(这个case中,该事件的流向是command触发,mediator捕捉的,还有一种情况则是mediator触发,command捕捉。需要在context中使用commandMap.mapEvent来注册一个全局的事件监听,然后由mediator来dispatch该事件,command来捕获该事件。)

-----------------------------------------------------------------------------------------------------------------------------------------------

2012-09-11

由于大环境趋势以及自身时间限制和发展方向的原因,基本上以后就很少会再弄flash了。更新到这里结束。

2012-11-06

因为一些原因,我现在被解放出来了,那么继续弄flash。