- 浏览: 140993 次
- 性别:
- 来自: 火星
文章分类
最新评论
-
rogermmjj:
挺好使的呢
Flex AdvancedDataGrid 子节点渲染器展开式混乱问题 -
dong_yunqiqiqi:
讲的不错!
python模块和类在import上的区别 -
zhzczyc:
试了一下 还是不管用。。
Flex AdvancedDataGrid 子节点渲染器展开式混乱问题 -
zhzczyc:
博主 可方便贴出完整代码?
Flex AdvancedDataGrid 子节点渲染器展开式混乱问题 -
xiaoranchenxi:
_allot 是个啥东东?
Flex AdvancedDataGrid 子节点渲染器展开式混乱问题
/* PureMVC - Copyright(c) 2006-08 Futurescale, Inc., Some rights reserved. Your reuse is governed by the Creative Commons Attribution 3.0 United States License */ package org.puremvc.as3.core { import org.puremvc.as3.interfaces.*; import org.puremvc.as3.patterns.observer.Observer; // 中介名称-中介 列表 protected var mediatorMap : Array; // 消息名称-观察者列表 protected var observerMap : Array; // 单例的view protected static var instance : IView; // 出错消息 protected const SINGLETON_MSG : String = "View Singleton already constructed!"; public class View implements IView { /** * 构造函数,并构造相应的map * * * @throws Error * */ public function View( ) { if (instance != null) throw Error(SINGLETON_MSG); instance = this; mediatorMap = new Array(); observerMap = new Array(); initializeView(); } /** * 初始化view,由构造函数自动调用, * 在子类中可以通过此函数初始化view而不用覆盖构造函数 * * @return void */ protected function initializeView( ) : void { } /** * 单例view的工厂方法 * * @return 返回单例view */ public static function getInstance() : IView { if ( instance == null ) instance = new View( ); return instance; } /** * 作用:注册观察者 * //对一个消息可能存在多个观察者 * @param notificationName 消息名称 * @param observer 要注册的观察者 */ public function registerObserver ( notificationName:String, observer:IObserver ) : void { //得到该消息对应的所有观察者,如果不为空,就把这个观察者加进去,如若为空就初始化 var observers:Array = observerMap[ notificationName ]; if( observers ) { observers.push( observer ); } else { observerMap[ notificationName ] = [ observer ]; } } /** * * 作用:通知所有的观察者了 * * * @param notification 要通知观察者的消息 */ public function notifyObservers( notification:INotification ) : void { if( observerMap[ notification.getName() ] != null ) { //获取该消息的所有对应观察者 var observers_ref:Array = observerMap[ notification.getName() ] as Array; //这有点迷糊完全可以这样写,原因是因为在循环的时候observers可能发生变化 /** * * for(var i:Number = 0;i<observers_ref.length;i++) * { * observer = observers_ref[i] as IObserver; * observer.notifyObserver(notification); * } * * * */ var observers:Array = new Array(); var observer:IObserver; for (var i:Number = 0; i < observers_ref.length; i++) { observer = observers_ref[ i ] as IObserver; observers.push( observer ); } // Notify Observers from the working array for (i = 0; i < observers.length; i++) { observer = observers[ i ] as IObserver; observer.notifyObserver( notification ); } } } /** * 作用:根据给定的消息名和对消息感兴趣的对象移除观察者 * //上面提到一个消息名称可能对于多个观察者,所以必须使用第二个参数进一步确定 * @param notificationName 消息名称 * @param notifyContext 对消息感兴趣的对象 */ public function removeObserver( notificationName:String, notifyContext:Object ):void { // the observer list for the notification under inspection var observers:Array = observerMap[ notificationName ] as Array; // find the observer for the notifyContext for ( var i:int=0; i<observers.length; i++ ) { if ( Observer(observers[i]).compareNotifyContext( notifyContext ) == true ) { observers.splice(i,1); break; } } if ( observers.length == 0 ) { delete observerMap[ notificationName ]; } } /** * 作用:注册中介 * @param mediator 要注册的中介实例 */ public function registerMediator( mediator:IMediator ) : void { //保证以中介名称为key的对象在mediatorMap中唯一 if ( mediatorMap[ mediator.getMediatorName() ] != null ) return; // 根据名称注册该Mediator mediatorMap[ mediator.getMediatorName() ] = mediator; // 得到所以该Mediator感兴趣的消息 var interests:Array = mediator.listNotificationInterests(); // 其实说白了是把Mediator感兴趣的消息都注册成观察者,以便得到通知 if ( interests.length > 0 ) { var observer:Observer = new Observer( mediator.handleNotification, mediator ); for ( var i:Number=0; i<interests.length; i++ ) { registerObserver( interests[i], observer ); } } mediator.onRegister(); } /** * 作用:根据中介名称获取中介 * * @param mediatorName 要获取中介名称 * @return */ public function retrieveMediator( mediatorName:String ) : IMediator { return mediatorMap[ mediatorName ]; } /** * 作用:从view中移除中介 * * @param mediatorName 要移除的中介名称 * @return */ public function removeMediator( mediatorName:String ) : IMediator { // 先拿到该中介 var mediator:IMediator = mediatorMap[ mediatorName ] as IMediator; if ( mediator ) { // 根据感兴趣的消息移除观察者 var interests:Array = mediator.listNotificationInterests(); for ( var i:Number=0; i<interests.length; i++ ) { removeObserver( interests[i], mediator ); } // 移除中介 delete mediatorMap[ mediatorName ]; // alert the mediator that it has been removed mediator.onRemove(); } return mediator; } /** * 作用:根据名称判断是否存在该中介 * * @param mediatorName 中介名称 * @return */ public function hasMediator( mediatorName:String ) : Boolean { return mediatorMap[ mediatorName ] != null; } } }
发表评论
-
Flex 框架PureMVC 源码解析之--IView篇
2011-12-29 17:41 1749首先了解一下几个容易混淆的概念: 消息(Notif ... -
Flex AdvancedDataGrid 子节点渲染器展开式混乱问题
2011-12-29 12:44 2794上次写道在Flex AdvancedDataGrid中使用树形 ... -
Flex 自定义List实现在切换Item前判断条件
2011-12-28 10:33 1832目前项目中需要在List的Item切换前根据条件决定是否切换, ... -
Flex 框架PureMVC 源码解析之--Controller篇
2011-12-22 16:58 17981、Controller实现了IController接口,提供 ... -
Flex 框架PureMVC 源码解析之--IController篇
2011-12-22 16:10 18131、最近工作的事情不太多,自己flex水平也很一般,只是经常用 ... -
Flex 中的undefined类型
2011-12-07 17:09 40781、一个适用于尚未初始化的无类型变量或未初始化的动 ... -
Flex AdvancedDataGrid 列分组功能
2011-12-05 17:25 3112问题: 在ADG的数据源的顶层数据有两 ... -
Flex AdvancedDataGrid 分层显示
2011-12-05 15:36 2752AdvancedDataGrid 实际上是增强版的DataGr ... -
Flex DataGrid 构建自己的编辑器(itemEditor)
2011-11-18 17:24 39901、首先了解编辑器和渲染器的区别,拿DataGrid来说: ... -
在渲染器或编辑器中获取DataGrid的dataField
2011-11-14 18:41 2927要获取dataField首先要获取其父对象DataGrid,通 ... -
使用游标遍历DataGrid的dataProvider
2011-11-08 11:26 1351public function copyToClip(e ... -
Flex 中向对象的可变属性赋值
2011-10-31 17:33 1660var user:Object = new Object(); ... -
Flex 两个ArrayCollection合并
2011-09-30 17:53 1855摘自:http://www.techper.net/20 ... -
Flex 的getChildren()方法
2011-09-28 09:35 1538flex Container 类的getChildren方法只 ... -
flex Renderer中获取父对象
2011-09-28 09:34 1452要在渲染器中获得其父对象,通过实现IDropInListIte ... -
Flex 遍历对象的属性和值
2011-09-27 12:11 1314//_menu 为遍历对象 ... -
flex 删除对象的属性
2011-09-27 12:11 2277delete _menu.FoodCo ... -
flex 事件的target和currentTarget的区别
2011-09-27 12:10 954转自:http://blog.csdn.net/bincavi ... -
Flex 开发android程序键盘遮挡输入框解决方案
2011-09-27 12:09 24501、通过阅读api有个初步解决方案,通过监听虚拟键盘显 ... -
Flex DataGrid 复制选中行数据
2011-09-27 12:08 28341、选中行作为一个对象,可通过遍历对象获取 ...
相关推荐
基于PureMVC 封装Object-c项目框架基于PureMVC 封装Object-c项目框架基于PureMVC 封装Object-c项目框架基于PureMVC 封装Object-c项目框架基于PureMVC 封装Object-c项目框架基于PureMVC 封装Object-c项目框架基于Pure...
在本篇文章中,我们将深入探讨"puremvc-js-multicore-framework-master"这一项目,它代表了PureMVC在JavaScript中的多核实现。 1. **PureMVC简介** PureMVC是基于观察者模式的框架,它将应用程序分为三个主要部分...
标题中的“初探PureMVC:使用PHP+MySQL+Flex结合PureMVC框架做了个Flex留言本”揭示了本文将探讨如何使用PureMVC框架,结合PHP后端和MySQL数据库,构建一个基于Flex的前端留言本应用。PureMVC是一个轻量级、可扩展的...
PureMVC是一个轻量级的框架,用于构建模块化、可维护的JavaScript、ActionScript、Flex、Swift和Java应用程序。它的设计模式基于经典的MVC(Model-View-Controller)架构,但进行了强化和优化,使其更适合现代Web...
纯MVC(PureMVC)是一种设计模式,它在软件工程领域中被广泛用于构建多层架构的应用程序,特别是在富互联网应用程序(RIA)如Flex项目中。该模式将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器...
**标题解析:** "FLEX资源--------Pure...综上所述,"FLEX资源--------PureMVC开发包下载"提供的内容是一个用于Flex开发的开源MVC框架,其源码可以用于学习和定制,配合相关教程和工具,有助于提升开发效率和代码质量。
PureMVC AS3 Standard Framework 是一个轻量级的、开源的、跨平台的模型-视图-控制器(MVC)框架,专为ActionScript 3(AS3)编程语言设计。该框架的主要目的是帮助开发人员按照MVC模式组织代码,提高开发效率,降低...
7. **源码分析**:可能对PureMVC的源码进行解析,帮助理解其内部机制和设计理念。 8. **文档阅读指南**:如何理解和使用提供的PureMVC官方文档,以获取更多关于框架的信息。 通过学习PureMVC,开发者可以获得一种...
### 中文Flex与pureMVC文档知识点解析 #### 一、PureMVC框架概述 - **框架背景**:PureMVC是由Futurescale公司创建并维护的一个开源且免费的程序框架,适用于创建高性能的富互联网应用程序(RIA)。该框架不仅支持...
### Flex PureMVC手册知识点详解 #### 一、PureMVC概述 - **定义与来源**:PureMVC是一个开源的、跨平台的框架,专为构建可扩展、可维护的RIA(Rich Internet Applications)而设计。该框架由Futurescale公司创建...
纯MVC(PureMVC)是一个轻量级的框架,用于构建基于模型-视图-控制器(Model-View-Controller)设计模式的应用程序。在AS3.0版本中,PureMVC提供了强大的组织和管理代码的方式,使得开发者可以更有效地进行多层应用...
在PureMVC框架中,核心层由Model、View和Controller三个单例模式类组成,它们共同协作以保持系统的高内聚和低耦合。 Model层负责维护应用的状态数据,并通过Proxy对象与数据进行交互。Proxy对象对数据模型的操作...
Flex纯MVC(PureMVC)是一个开源的设计模式框架,专为富互联网应用程序(RIA)设计,特别是基于Adobe Flex和ActionScript的项目。在Flex 4.6开发环境中使用PureMVC,可以帮助开发者遵循经典的Model-View-Controller...
**Flex PureMVC框架详解** PureMVC是一个轻量级的、跨平台的框架,主要应用于构建高性能的Rich Internet Applications(RIA)。它采用MVC(Model-View-Controller)设计模式,旨在降低不同组件间的耦合性,提高代码...
标题 "puremvc-swift-standard-framework-master_demo" 指向的是一个使用 Swift 语言实现的 PureMVC 标准框架的示例项目。PureMVC 是一个轻量级的、跨平台的、开源的 Model-View-Controller (MVC) 框架,它为软件...
PureMVC是一个轻量级的、跨平台的、基于观察者模式的多层应用程序架构框架。这个框架的主要目的是为了简化开发过程,提供一种模块化、结构化的开发方式,以提高代码的可重用性和可维护性。在本教程中,我们将深入...
Flex Pure MVC框架是一种基于ActionScript 3.0的模型-视图-控制器(MVC)设计模式实现,专为Adobe Flex应用程序设计。Flex是用于构建富互联网应用(RIA)的开发平台,而Pure MVC则是帮助开发者组织和管理代码结构的...
PureMVC是一个轻量级的、可移植的、模型-视图-控制器(Model-View-Controller)框架,主要用于构建富互联网应用程序(Rich Internet Applications,RIA)。它在ActionScript 3(AS3)环境中得到了广泛的应用,同时也...