Atlas客户端类库、控件介绍(2)

转载 2006年06月09日 17:05:00

今日任务:
  在HTML元素中,实现鼠标的over、out事件非常简单,将onmouseover、onmouseout关联至相应的javascript函数即可。同样的,在Atlas框架模型里,需要实现同样的功能,又该如何设计呢?

  根据Atlas Doc的介绍,可以有两种实现方式:1、Xml Script定义;2、JavaScript。

解决问题:

  我们首先来看看Atlas 中的Sys.UI.Control在Xml Script定义方式下的格式:

 1<control>
 2    <behaviors>
 3        <!-- behaviors -->
 4    </behaviors>
 5    <bindings>
 6        <!-- bindings -->
 7    </bindings>
 8    <propertyChanged>
 9        <!-- actions -->
10    </propertyChanged>
11</control>
12
  我们看到Control具体behaviors集合。
      Sys.UI.Behavior类是一个静态类,不能直接实例化,Atlas框架已经实现有几个字类,其中包括HoverBehavior类,这个类专门用于执行鼠标进入、退出目标对象所欲发生的动作(Action),(关于Behaviors以及如何扩展自己的Behaviors,dflying在这两篇文章中已经讲的非常清楚了:1:使用ASP.NET Atlas开发实时验证用户名是否被注册的自定义Behavior ;2:ASP.NET Atlas中创建自定义的Behavior)。

  那么,我们再来看看HoverBehaviors的Xml Script定义:
 1<hoverBehavior>
 2    <bindings>
 3        <!-- bindings -->
 4    </bindings>
 5    <hover>
 6        <!-- actions -->
 7    </hover>
 8    <propertyChanged>
 9        <!-- actions -->
10    </propertyChanged>
11    <unhover>
12        <!-- actions -->
13    </unhover>
14</clickBehavior>
15
  发hoverBehavior具有hover字节点,而hover中定义的又是actions。同样的Action也是静态类,从Action派生有一个InvokeMethodAction(调用方法Action)。

  至此,我们基本清楚,要完成任务,我们至少需要有一个InvokeMethodAction实例、一个HoverBehavior实例,还有一个PopupBehavior实例。

  具体如何实现呢?下面是完整的代码,每行都有注释:
 1function CreatePopupMessage(sender , popupElement)
 2{
 3    //  创建Atlas Sys.UI.Control 类实例
 4    //  此Atlas控件绑定至HTML 元素popupElement
 5    var c = new Sys.UI.Control(popupElement);
 6    //  初始化Atlas控件
 7    c.initialize();
 8    
 9    //  创建Sys.UI.PopupBehavior实例
10    //  PopupBehavior类型继承自Sys.UI.Behavior
11    //  PopupBehavior控件实现类似于ToolTip(ASP.net服务器控件属性)或tilte(HTML 元素特性)的加强版功能
12    var popupBehavior = new Sys.UI.PopupBehavior();
13    
14    //  设置Popup动作的所有者,类似于ToolTip或title的提示方框
15    //  在这里我们可以对这个“提示方框”进行很好的外观控制
16    popupBehavior.setOwner(c);
17    
18    //  设置Popup动作发生的父对象
19    popupBehavior.set_parentElement(sender);
20    
21    //  设置Popup动作发生时类似于ToolTip或tilte的提示框显示的位置
22    popupBehavior.set_positioningMode(Sys.UI.PositioningMode.Absolute );
23    popupBehavior.set_y(20);
24    
25    //  初始化popupBehavior控件
26    popupBehavior.initialize();
27    
28    //  那么,上面的popup又将如何被激活呢?
29    //  这就需要应用到调用方法动作类:InvokeMethodAction
30    //  InvokeMethodAction需要指定目标动作对象和目标动作中的具体方法
31    //  InvokeMethodAction类似于C#中的委托、事件???
32    
33    //  创建InvokeMethodAction实例
34    var newAction = new Sys.InvokeMethodAction();
35    
36    //  设置InvokeMethodAction的目标为上面创建的popupBehavior
37    newAction.set_target(popupBehavior);
38    //  设置调用的方法,popupBehavior.show();
39    newAction.set_method("show");
40    //  初始化控件
41    newAction.initialize();
42    
43    //  另一个方法调用Action
44    var uAction = new Sys.InvokeMethodAction();
45    uAction.initialize();
46    uAction.set_target(popupBehavior);
47    uAction.set_method("hide");
48    
49    //  最后,上述过程又是如何被实现调用的呢?
50    //  我们还是以鼠标进入目标控件为例来说明
51    
52    //  首先实例一HoverBehavior类
53    var hBehavior = new Sys.UI.HoverBehavior();
54    
55    //  设置HoverBehavior动作的检测对象
56    var timeControl = new Sys.UI.Control(sender);
57    timeControl.initialize();
58    
59    //  设置HoverBehavior动作的所有者
60    hBehavior.setOwner(timeControl);
61    hBehavior.initialize();
62    
63    //  最后将Action添加至Hover的相关事件
64    hBehavior.hover.addAction(newAction);
65    hBehavior.unhover.addAction(uAction);
66}

67
  然后在page_load中调用:
   CreatePopupMessage($("TimeSpan"), $("PopupDIV"));
  
  OK。(后续……)
http://luna.cnblogs.com/archive/2006/05/31/414299.html

Atlas架构及相关功能介绍

一、       Atlas的整体架构 Atlas是一个位于应用程序与MySQL之间中间件。在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个DB。Atlas作为服务...
  • wssg3620625
  • wssg3620625
  • 2014年03月14日 17:48
  • 1688

Atlas的安装及配置

一、       Atlas简介 Atlas是Qihoo 360 Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL Proxy 0.8.2版...
  • wssg3620625
  • wssg3620625
  • 2014年03月14日 17:45
  • 2740

【Python笔记】如何源码编译依赖LAPACK和ATLAS库的NumPy包

上篇笔记介绍了不依赖lapack和atlas库的NumPy包源码编译/安装方法,但“纯净版”的NumPy会损失性能,故本篇笔记说明如何源码编译安装依赖lapack和atlas库的NumPy包。 1. ...
  • slvher
  • slvher
  • 2015年04月03日 12:15
  • 2340

数据切分——Atlas读写分离Mysql集群的搭建

关于数据切分的原理可以参见博客:         http://blog.csdn.net/jhq0113/article/details/44226789                关于...
  • jhq0113
  • jhq0113
  • 2015年03月16日 11:58
  • 18319

osg 库以及图形类

一、osg的库 Osg核心库:提供了基本的场景图形和渲染功能,以及3d图形程序所需的某些特定功能实现。包括: 1.osg库:包含了用于创建场景图形的场景图形节点类,用作向量和矩阵运算的类,...
  • aaron121211
  • aaron121211
  • 2015年12月11日 11:27
  • 757

ArcGIS Engine中的重点类库介绍

System类库 System类库是ArcGIS体系结构中最底层的类库。System类库包含给构成ArcGIS的其他类库提供服务的组件。System类库中定义了大量开发者可以实现的接口。Ao...
  • wywywywywywy123456
  • wywywywywywy123456
  • 2015年09月10日 23:39
  • 1497

MFC开发 常见控件库

Xtrme toolkit,BCGControlBar,SkinMagic,AppFace,Skin++,Uskin++,SYGUI,LibUIDK,GuiToolkit,GardenUI等等,除了后...
  • caimagic
  • caimagic
  • 2016年03月12日 10:40
  • 597

Atlas:手淘Native容器化框架和思考

在刚刚过去的云栖大会上,手淘宣布其移动容器化框架Atlas将于2017年年初开源,对这个框架,在过去团队对外部做过一些分享,外界也一直对其十分关注,到现在它终于即将开源了。 本文将介绍Atlas...
  • o190847959
  • o190847959
  • 2017年01月14日 23:18
  • 576

Java核心类库——IO原理和用法

Java IO流(InputStream/OutputSteam) 什么是IO流?  byte序列的读写,Java中的IO流是实现输入/输出的基础. 1) InputStream : 抽象...
  • inaoen
  • inaoen
  • 2015年02月28日 09:48
  • 1313

VC++60 第十六章 VC++开发工具和MFC基础类库(一)

第十六章 VC++开发工具和MFC基础类库   Visual C++是Microsoft公司推出的支持面向对象的“Windows软件”开发环境(Developer Studio),本书的叙...
  • GL_a_
  • GL_a_
  • 2016年10月13日 18:47
  • 355
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Atlas客户端类库、控件介绍(2)
举报原因:
原因补充:

(最多只允许输入30个字)