当前位置: BOLT界面引擎 > 知识库文章 > 自定义控件/动画实例化事件说明

自定义控件/动画实例化事件说明

作者:李亚星 2013-03-01

引擎在早期引入了自定义控件和自定义动画实例化事件,但考虑到性能原因,并没有对外开放。最近有不少产品问到有没有类似的实现,所以这里公开说明一下。该事件用以监控某个xml控件或者xml动画的实例化,包括前置事件和后置事件,可以实现类似hook的功能,对控件/动画进行全局性的预处理。由于该事件如果用的过多可能会影响到性能,所以大家在开发使用中要控制好。

 

Xml控件实例化事件需要取到ObjectFactory全局对象xml动画实例化事件需要取到AnimationFactory进行挂接和解除事件,接口原型如下:

 

long cookie, bool result AttachListener(string xmlTypeName, string functionName, bool pushback, function)

bool result RemoveListener(string xmlTypeName, string functionName, long cookie)

 

         其中:

1.         xmlTypeName是自定义控件或者自定义动画的类型名,也就是class

2.         functionName是需要监听的事件,目前支持

a)         实例化前置事件 OnPreCreateInstance

b)         后置事件 OnPostCreateInstance

3.         pushback 事件是放到队列前还是队列后,默认为队列前端

4.         function 事件响应函数

a)         对于前置事件,响应函数原型是:long result, bool handled, bool callnext OnPreCreateInstance(string typename, string package)

b)         对于后置事件,响应函数原型是:long result, bool handled, bool callnext OnPostCreateInstance(string typename, string package, object)

 

typenamepackage分别指定了当前正在实例化的自定义控件/动画的class和当前实例化所在的package

object是新实例化出来的对应的对象

 

 

         需要注意下面几点:

l  该事件在对应的控件/动画实例化期间,同步触发

l  上面两个事件只能监视实例化事件,但是不能拦截,也就是实例化过程一定会继续下去

l  和模版实例化事件并不相同,详细的可以参考在线文档的模版实例化事件

l  只对自定义控件和自定义动画有效,对内置元对象则无效

l  对频繁实例化的控件挂事件,需要注意性能问题

 

迅雷公司 版权所有 Copyright 2003-2010 Thunder Inc.All Rights Reserved. 意见反馈:xl7doc@xunlei.com