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

  “Atlas”系统是一个非常复杂的框架,具有类似于asp.net般的丰富组件来简化客户端的程序设计。在 dflying的系列文章中,已经为我们大家介绍了很多相关的知识,重复的地方我在这里就不啰嗦了。

  要实现“Atlas”客户端控件,有两种方式,一种是Xml Script定义的方式,dflying书写的系列文章中,涉及到Atlas客户端控件大多数采用的就是上面的这种方式,形式如同:
None.gif      < script type = " text/xml-script " >
None.gif        
< page xmlns:script = " http://schemas.microsoft.com/xml-script/2005 "  xmlns:samples = " samples " >
None.gif            
< components >
None.gif                
< button id = " button1 " >
None.gif                    
< behaviors >
None.gif                        
< hoverBehavior >
None.gif                            
< hover >
None.gif                                
< invokeMethod target = " button1 "  method = " addCssClass " >
None.gif                                    
< parameters className = " pseudo-button-hover "   />
None.gif                                
</ invokeMethod >
None.gif                            
</ hover >
None.gif                            
< unhover >
None.gif                                
< invokeMethod target = " button1 "  method = " removeCssClass " >
None.gif                                    
< parameters className = " pseudo-button-hover "   />
None.gif                                
</ invokeMethod >
None.gif                            
</ unhover >
None.gif                        
</ hoverBehavior >
None.gif                    
</ behaviors >
None.gif                
</ button >
None.gif            
</ components >
None.gif        
</ page >
None.gif    
</ script >
None.gif
  还有一种方式,那就是Javascript实现,如果书写普通js代码般实例化相应的Atlas客户端控件:
 1 None.gif function  Init()
 2 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 3InBlock.gif    var titleTextBox = new Sys.UI.TextBox($("TitleTextBox"));
 4InBlock.gif    titleTextBox.initialize();

 6InBlock.gif    titleTextBox.set_text("AXii");
 7InBlock.gif    
 8InBlock.gif    var itemEvent = new Type.Event(titleTextBox , true);
 9InBlock.gif    itemEvent.add(PopupMessage);
10InBlock.gif
11InBlock.gif    titleTextBox.propertyChanged = itemEvent;
12InBlock.gif    
13InBlock.gif    var itemBehavior = new Sys.UI.HoverBehavior();
14InBlock.gif    itemBehavior.setOwner(titleTextBox);
15InBlock.gif    itemBehavior.initialize();
16InBlock.gif    
17InBlock.gif    itemBehavior.hover.add(Alert);
18ExpandedBlockEnd.gif}

  上面这段js的意思是:
  第3行:实例化一个Sys.UI.TextBox,传入的参数为一input HTML 控件,实现将Atlas控件与HTML控件的关联(绑定);
  第4行:初始化这个新的Atlas客户端控件;
  第6行:修改这个新Atlas TextBox控件的值,Atlas控件所关联(绑定)的HTML控件的相应值同步更新。

  到这一步,我们就利用JavaScript获得了第一个Atlas 客户端控值。

  第8-9行:创建Atlas客户端框架中的事件实例(您可以借鉴c#中的事件来理解),Type.Event类所传入的两个参数,第一个参数为发出事件的源控件(Atlas控件),第二个参数确定此事件是否自动执行。

  第11行:将将新事件指定给第3行创建的Atlas TextBox控件实例的propertyChanged,这样,在TextBox控件的属性(TextBox 控件的Text)发生改变时,就会执行相应的事件:
1 None.gif function  PopupMessage(sender , eventArgs)
2 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
3InBlock.gif    alert(sender.get_text());
4ExpandedBlockEnd.gif}
  注意:事件关联处理函数应该以上面的方式定义,包括sender 与 eventArgs参数,从参数命名上我们可以知道,sender指向的就是发起事件的源。

  第13-17行又是什么意思呢?
  刚才的TextBox在Text属性发生改变时,已经可以通过事件响应了,如果我们还希望在实现鼠标移入TextBox区域(类似HTML控件的onMouseOver),又该如何实现呢?第13-17行就是实现这个功能的。

  Atlas客户端控件包含HoverBehavior类,HoverBehavior类继承与Behavior(动作、行为?)类。Behavior类通过setOwner(ownerControl)方法绑定Behavior的所有者控件。

  同样,不要忘记初始化这个控件。

  这样,我们创建了一个Sys.UI.TextBox控件,并将此TextBox关联至id为“TitleTextBox”的input HTML控件,当TextBox的Text改变时,会有相应的事件激活;同时,这个TextBox控件还能响应鼠标进入动作。

  哈哈哈,实在是表述力欠佳,希望您可以看得明白我在说些什么 tongue_smile.gif。(后续……)

转载于:https://www.cnblogs.com/Luna/archive/2006/05/30/413281.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值