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

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

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

解决问题:

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

 1 None.gif < control >
 2 None.gif     < behaviors >
 3 None.gif         <!--  behaviors  -->
 4 None.gif     </ behaviors >
 5 None.gif     < bindings >
 6 None.gif         <!--  bindings  -->
 7 None.gif     </ bindings >
 8 None.gif     < propertyChanged >
 9 None.gif         <!--  actions  -->
10 None.gif     </ propertyChanged >
11 None.gif </ control >
12 None.gif
  我们看到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 None.gif < hoverBehavior >
 2 None.gif     < bindings >
 3 None.gif         <!--  bindings  -->
 4 None.gif     </ bindings >
 5 None.gif     < hover >
 6 None.gif         <!--  actions  -->
 7 None.gif     </ hover >
 8 None.gif     < propertyChanged >
 9 None.gif         <!--  actions  -->
10 None.gif     </ propertyChanged >
11 None.gif     < unhover >
12 None.gif         <!--  actions  -->
13 None.gif     </ unhover >
14 None.gif </ clickBehavior >
15 None.gif
  发hoverBehavior具有hover字节点,而hover中定义的又是actions。同样的Action也是静态类,从Action派生有一个InvokeMethodAction(调用方法Action)。

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

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

67 None.gif
  然后在page_load中调用:
   CreatePopupMessage($("TimeSpan"), $("PopupDIV"));
  
  OK。(后续……)

转载于:https://www.cnblogs.com/Luna/archive/2006/05/31/414299.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值