一. Htmlayout之behavior

一.什么是behavior
behavior 是HTMLayout界面引擎扩展的特殊css属性.通过CSS样式制定behavior, 可以为任何元素附加上交互行为, 从而将元素附件特定功能的控件或者是组合控件.所有behavior 都是预先写好的.

二.behavior类成员

    // behavior list support
    behavior*        next;
    const char*     name; // name must be a pointer to a static string

看到这里是否会想到学C的时候链表.没错,next指向的就是下一个behavior老巢,name顾名思义就是名字咯(这个名字全局唯一).再看其中一静态成员函数

    // implementation of static list of behaviors  
    static behavior* root(behavior* to_set = 0)
    {
      static behavior* _root = 0;
      if(to_set) _root = to_set;
      return _root;
    }




注释已经说明"static list of behaviors"也就是一个全局的behavior链表.再看构造函数做了什么:

behavior(UINT subsriptions, const char* external_name)
		:next(0),name(external_name), event_handler(subsriptions)
	{
		// add this implementation to the list (singleton)
		next = root();
		root(this);
	}




果然,在构造一个behavior的时候已经将其加入到链表当中(当然你看到SDK中的behavior实例都是全局的---这是必须的).OK 再看一个静态成员

static event_handler* find(const char* name, HELEMENT he)
    {
      for(behavior* t = root(); t; t = t->next)
        if(strcmp(t->name,name)==0)
        {
          return t->attach(he);
        }
      return 0; // not found
    }




已经说明了是根据名字检索出该behavior.(所以上面提到name必须是唯一滴)
三.什么时候为元素附件指定的behavior
 转到notification_handler类看看先.主要关注HLN_ATTACH_BEHAVIOR事件,看看on_attach_behavior的实现就会豁然开朗

四.举例
<div syle="behavior:button"> div元素模仿button元素 </div>
该元素就有了button元素的功能. 当然这是内置behavior,我们也可以制定自己的behavior,详细看SDK下边behavior下代码.

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值