1.2.0.436 更新时间:2012-12-11
点此下载
- 1.LayoutObject增加limit属性和对应的lua接口
- 2.RichEditObject增加GetSelectCharFormat接口
- 3.完善跨进程flash的自定义光标处理
- 4.HostWnd增加GetWindowBitmap接口
- 5.XLUE.dll新增多个C接口
- 6.修复了freetype字体渲染,在某些未安装显卡驱动的系统上导致部分字体花屏的bug
- 7.完善LayoutObject的SetLimitChild实现
- 8.LayoutObject的SetAlpha和SetEnable增加递归设置参数
- ......
详细更新列表如下:
1. LayoutObject增加limit属性和对应的lua接口
该属性是limitchild的配套属性;可以控制元对象是否受父对象的limitchild属性限制;默认为true。
增加这个属性后,增加了limitchild的自由度,如果想添加一个不受parent的限制的对象进去,之前只能重新安排该对象的位置,现在就很轻松了,直接关闭该对象的limit属性即可
LayoutObject新增两个接口:
Void SetLimit(bool limit)
Bool GetLimit()
2. RichEditObject增加GetSelectCharFormat接口
该接口可以用来获取RichEdit里面当前选中文本的cfm格式,其中文本和对象格式有所不同,详细内容参见在线文档
3. 完善跨进程flash的自定义光标处理
4. HostWnd增加GetWindowBitmap接口
该接口可以获取当前窗口的实时渲染位图,这里需要注意的是,该函数返回的位图不可修改
5. XLUE.dll新增多个C接口
包括获取窗口位图的XLUE_GetWindowBitmap接口,另外还包括一些列获取资源的接口
6. 修复了freetype字体渲染,在某些未安装显卡驱动的系统上导致部分字体花屏的bug
7. 完善LayoutObject的SetLimitChild实现
之前该方法在对象创建后,动态调用有可能会出现刷新的bug,本版本这块做了完善处理,确保所涉及对象都有机会刷新
8. LayoutObject的SetAlpha和SetEnable增加递归设置参数
增加第二个可选参数(默认为false),用来指示是否对下面所有子对象递归设置该属性,方便在动画和初始化时候做整体性处理
新的接口如下:
Void SetAlpha(unsigned char alpha, bool isRecursive)
Void SetEnable(bool enable, bool isRecursive)
9. Flash进程外服务器增加拉起时间间隔限制
为了避免在系统极卡或者资源不够的情况下,短时间内拉起多个进程外服务器,增加了尝试拉起进程外服务器的最小时间间隔限制
10. xlueops增加新的基于宿主进程的监测机制
避免在某些情况下,导致宿主进程退出后,进程外服务器无法退出的bug
11. 修复核心render一处由于错误框异步导致的崩溃
12. 修复XL_AdjustBitmapColor接口一个bug
修复了该接口的SAdjust上溢或者下溢导致的bug
13. 优化xml内存结构,减少内存开销
14. 修复LuaGetStyle在没有定义style情况下可能崩溃的bug
15. RichEditObject支持shift+导航键进行选中操作
Shift+方向键 前后左右选中
Shift+home 选中光标位置前半行
Shift+end 选中光标位置后半行
Shift+pageup 选中光标位置起上一view
Shift+pagedown 选中光标位置起下一view
16. LayoutObject增加动态设置focusstrategy的接口
接口原型如下:
SetFocusStrategy(string strategy) 可取值 auto和fuzzy
String GetFocusStrategy()
17. 调整RichEditObject的home和end按键逻辑
Home键导航由之前的导航到所有内容首部,调整为导航到当前光标所在行的行首
End键导航由之前的导航到所有内容尾部,调整为导航到当前光标所在行的行尾
18. XLIPC增加XLIPC_AsynAcceptSession接口
该接口用以异步监听来自客户进程的连接,可以和XLIPC_AcceptSession在不同情况下使用
19. 修复AsynManager由于小概率情况下,消息重入导致崩溃
20. 图形库修复一个位图越界bug(光影魔术手反馈)
21. 完善元对象的非主动焦点导航策略
之前在一些情况下,会导致不可获取焦点的对象也获得焦点,本版本已经调整策略
22. 修复图形库的DrawLine一处内存越界导致的崩溃
23. 修复windowlessflash的framelimit在特定情况下无效的bug
24. 调整资源事件系统,支持动态切换xar的资源包SelectResPackage
由于BOLT引擎对外开放后,有很多产品反馈需要动态切换资源包以实现高级换肤,引擎自始就支持动态切换资源包,但是由于资源事件的缘故导致切换都很多问题;本版本对这块进行了较大的调整,可以动态切换资源包了
25. WindowlessFlashObject增加LoadMovieEx接口,支持加载xar里面的文件(迅雷8需求)
该接口和LoadMovie一致,支持从xar包里面加载flash,这里需要注意的是,由于flash并未提供直接接口,此调用可能会导致写磁盘文件,在远程flash模式下可以忽略,但是如果是本地模式,那么需要考虑性能。
26. 强化Hostwnd的BringWindowToBack方法
该方法最早设置可以把窗口调整到指定窗口的后面(也即改变窗口的zorder),现在新增支持调整窗口到指定的zorder,支持下面四种字符串参数:
l Bottom 调整窗口到最底层
l Top 调整窗口到最上面
l Topmost 调整窗口为topmost
l NoTopMost 调整窗口到所有非topmost窗口上面
27. 对象树在失去焦点后,通过调用SetFocusObject可以改变最后失去焦点对象
接到过多个产品反馈,对象树再次获取焦点后,会自动把焦点设置到上次失焦最后所在的对象。这个特性在使用中多有不便,关键是没有入口来控制下次设置焦点时候的首个焦点对象。所以本版本做了修正,在对象树失去焦点期间调用SetFocusObject,那么下次对象树再获取焦点时候,焦点会设置到这个对象上面
28. 修复模板id为空可能导致的崩溃
29. 修复元对象在开启limitchild属性,位置改变后导致子对象无法正常刷新的bug
30. 完善联动窗口的zorder检测和调整算法
新的算法效率更高
31. Hostwnd增加bottommost属性
该属性可以在xml里面静态配置
<bottommost>1<bottommost>
也可以通过hostwnd接口来动态设置:
Void SetBottomMost(bool isBottomost)
Bool GetBottomMost()
该属性开启后,窗口会自动置底,直到关闭属性,需要特别注意的是,该属性和topmost属性是互斥的,不可以同时设置,否则会失败并在日志版出现错误框提示
32. 修复直接设置资源值,但是某些情况没有解除资源事件的bug
该bug修复涉及所有的资源类型
33. 规范、优化hostwnd的初始化流程
34. 强化同步窗口管理器的位置同步功能
之前的位置同步,只可以跟随目标窗口的左上角,本版本可以指定跟随目标窗口的四个角中的任意一个
使用方式如下:
self:AddSyncWnd(syncWnd:GetWndHandle(), {"position", positionmask={"left", "bottom"}}
可以使用positionmask来指定位置同步的跟踪坐标,水平方向可以指定 left,和 right,默认left;垂直方向可以指定top 和bottom,默认top
35. 修复Modalhostwnd在某些情况下使用输入法无法输入中文等非英文字符的bug
改bug主要是由于进程是基于ansi而非unicode,并且提前注册了ansi版本的窗口类导致的,本版本对这种情况对进行特殊处理,确保输入法输入的符合字符可以正常显示
36. 强化图形库XL_ClipSubBindBitmap的参数检测
如果剪裁区域无效或者超出了位图的有效区域,那么会剪裁失败,返回NULL,避免返回错误值导致的崩溃
37. 修复SeqImageObject的GetGif无法返回的bug
之前版本由于内部实现上的问题,GetGif总是返回nil,本版本已经修复
38. 修复GDI文本绘制在某些情况下导致文本被截断的bug
39. 控件自定义事件功能扩展,返回值默认增加handled和callnext
这两个返回值是为了和内置事件保持一致,并且对事件有更强可控性而增加的。这两个返回值会附加在用户自定义返回基础上,不需要显式定义,并且完全兼容之前的版本。其中handled默认值是false,callnext默认值是true,handled会作为最后一个返回值返回给事件触发者FireExtEvent,而callnext是事件管理器内部使用的,用以控制是否调用下一个事件监听者
40. hostwnd的可接收HWND的相关接口功能扩展
hostwnd有很多接口可以接收一个hwnd参数,而很多时候用户传入的是hostwnd对象,从本版本起所有这种接口都做了修正,可以同时接收hwnd和hostwnd对象本身,内部会智能提取参数并转换
涉及到的接口有:
Create、SetParent、DoModal、SetPositionByWindow、SetDragImageFromWindow、AddSyncWnd、RemoveSyncWnd、BringWindowToFront、BringWindowToBack、TrackPopupMenu、AddMsgFilter、Center
41. 事件系统的RemoveListener功能扩展
可以指定cookie=-1,来移除对应事件中的所有listener
42. 修复hostwnd动态设置topmost可能失效的bug
43. 修复richeditobj在销毁时候,有可能重入导致的崩溃
44. 修复hostwnd在调整mask zorder时候,可能导致窗口置底的bug
45. 修复hostwnd的累积无效渲染区域,在有些情况下可能超出渲染闭包的bug
46. XLFSIO不再对路径有@和$符号限制
由于历史原因,@和$做成了挂载机制的保留字,而如果xar路径里面存在@和$符号的话,会导致xar加载失败。现在XLFSIO内部增加了路径智能分析方法,可以自动识别@和$是保留字,还是正常路径里面的符号,从而避免加载失败
47. 增加全局文本HOOK机制
该hook机制可以用来做多语言,可以直接使用C接口,也可以使用对应的lua封装,有多语言需求的产品可以考虑使用
48. 修复EditObject在SetBknColor对颜色转换出错的bug
该bug主要由于系统颜色colorref不支持alpha通道,从而导致在alpha值不为0的情况下,颜色显示不正常
49. XLLuaRuntime.dll在日志版本增加严格检测机制
开启严格检测,可以及时排除不规范、不正确的lua使用(主要是lua封装),避免经常性的导致luaruntime的崩溃,这个会有详细的说明
50. 由于有些产品更换资源包的需求,XAR新增加IsResPackageExist接口,用来判断指定的资源包存不存在
接口原型如下:
bool IsResPackageExist(const char* resPackageID)
51. ImageObject增加动态设置和获取Antialias的lua接口
接口原型如下:
void SetAntialias(int value)
int GetAntialias()
52. SeqImageObject增加支持拉伸、反走样和对齐(和ImageObject一致),增加对应的属性和lua接口
新增的属性和接口和ImageObject的相同,包括:
属性:drawmode、halign、valign、halign
接口:SetDrawMode、GetDrawMode、SetHAlign、GetHAlign、SetVAlign、GetVAlign、SetAntialias、GetAntialias
53. ModalHostWnd在win32下的窗口class统一修正为XLUEModalHostWnd
这个属于内部的细节,为了统一和方便辨识窗口是否为引擎的hostwnd。如果现在有产品依赖这个细节,需要注意下可能涉及到的问题。
54. 修复图形库一处mask可能导致的崩溃
55. 核心逻辑修正:规范并统一UIObject的移除逻辑
现在对象不管从对象树移除还是未绑定删除,都会遵循统一逻辑,对移除重入也做了更精细的判定。 原则上本改动是兼容之前的版本,但是毕竟是统一了一些小概率的逻辑分支,所以还是有可能出现少数不兼容,所以需要大家注意一下
56. 核心逻辑优化:优化资源查找体系,确保跨xar引用资源,资源事件挂接准确
对资源查找体系做了较大的调整,精简了代码。新的查找体系可以逆向追踪资源来源,确保可以挂接正确的资源事件
57. 资源解析在日志版强化错误提示
现在bitmap、texture等资源配置的一些历史悠久的错误会被提示出来了,各产品收到后需要进行相关修改
58. XLUE增加XLUE_SetTextObjectDefaultTextType接口,用以指定TextObject的默认渲染后端
TextObject 默认使用freetype,通过此接口可以修改为gdi;该接口需要在引擎初始化时候调用
59. 强化光标策略:object和hostwnd在设置不同光标id后,会立即刷新系统光标
60. MenuHostWnd启用自锁逻辑,避免在TrackPopupMenu过程中同步删除可能导致的崩溃
该崩溃会在TrackPopupMenu过程中,调用FinalClear接口强制清除导致出现,本版本已修正
61. 完善hostwnd的visible同步策略
避免在OnCreate事件里面同步修改窗口visible后,可能导致实窗口无法同步的bug
62. 修正MaskObject大小改变后,mask区域可能无法更新的bug
63. objtreetemplate和objecttemplate模版在解析过程中启用自锁和多重判断逻辑,避免事件重入可能导致的崩溃或者逻辑错误
64. MaskObject的SetMaskPosition支持设置表达式
和LayoutObject的SetObjPos一样,可以接收基于字符串的表达式和整型值了
65. 修复RectangleObject等对象,在使用所在位置矩形的右边线和下边线时候,刷新可能出错的bug
该bug在迅雷8使用焦点虚线框时候,有极小概率会出现。
66. 修正旋转动画中心点选择不正确修正
67. 修正SetCentrePointMode的lua接口错误
68. 修复RichEditObject在viewrect大小为0时候,可能导致的崩溃
69. 修复LuaBitmap在绘制文本时候,格式设置无效的bug
70. 修复maskobject的SetMaskPosition和GetMaskPosition的无法在lua正常调用的bug
71. hostwnd的同步窗口管理器,在日志版强制开启重复窗口检测
也即是多次调用AddSyncWnd传入同一个hwnd,现在会弹出错误提示,方便检错
72. 修复图形库一处纹理绘制可能导致越界的bug
73. 修复统计系统一处对象计数bug
74. xar增加AddResPackage接口,支持外挂资源包(426版本更新)
接口原型如下:
bool AddResPackage(string packageName, string packageFile)
packageName就是资源包的名字,这个可以使用xar的SelectResPackage来加载;需要注意的是,如果指定名字的资源包已经在xar内置资源包里面存在,那么SelectResPackage会优先使用内置资源包
packageFile是外部资源包的完整路径,支持zip和文件夹两种形式
75. respackage的名字默认使用load名字,而不是resource.cfg里面配置的名字
这也就意味这对于内置资源包,会使用资源包的文件名(zip格式)或者文件夹名(文件夹格式)
对于外挂资源包,会使用AddResPackage时候指定的名字
76. 核心改动:完善光标策略(432版本更新)
之前的光标策略在对象重叠情况下可能出先闪烁现象,新版本修正了策略,使其更完善,这个接下来会有详细的邮件说明
77. 实窗口对象的GetWindowBitmap增加print模式
该模式可以用以获取被遮盖住的窗口的图片,使用GetWindowBitmap({“print”})调用即可
78. 修复EditObject在绘制时候,覆盖背景的透明度的bug
79. 修复光标绘制可能导致的zorder错误
该错误可能导致光标所在兑现被覆盖,但是光标没有被覆盖和剪裁的错误;修正后策略是光标会跟随所属对象显示,包括zorder也保持一致
80. bitmap创建增加最大大小检测,避免在错误参数情况下导致的内存溢出