当前位置: BOLT界面引擎 > 知识库文章 > TipsHostWnd使用指南

TipsHostWnd使用指南

作者:李亚星

 

 在使用之前,先需要配置一个TipsHostWnd模板,和其它的hostwnd类似,如下

 

<hostwndtemplate id="bolt.tips" class="TipsHostWnd" >

                   <attr>

                            <layered>1</layered>

                            <left>200</left>

                            <top>100</top>

                            <width>100</width>

                            <height>100</height>

                            <cacheleft>0</cacheleft>

                            <cachetop>0</cachetop>

                            <cachewidth>1000</cachewidth>

                            <cacheheight>720</cacheheight>

                            <center>1</center>

                            <topmost>1</topmost>

                            <visible>1</visible>

                            <fps>30</fps>

                   </attr>

                   <eventlist>

                            <event name="OnSize">

                                     local arg = {...}

                                     local self = arg[1]

                                     local objectTree = self:GetBindUIObjectTree()

                                     local rootObject = objectTree:GetRootObject()

                                     rootObject:SetObjPos(0, 0, arg[3], arg[4])

                                     --XLMessageBox("OnSize")

                            </event>

                            <event name="OnDelayPopup">

                                     XLMessageBox("popup")

                            </event>

                            <event name="OnDelayCancel">

                                     XLMessageBox("cancel")

                            </event>

                   </eventlist>

</hostwndtemplate>

 

 

然后就是tipshostwnd的实例,可以全局就只有一个,也可以每次都创建,用完了立刻销毁,同样需要保证id不能重复

 

local templateMananger = XLGetObject("Xunlei.UIEngine.TemplateManager")

local tipsHostWndTemplate = templateMananger:GetTemplate("bolt.tips","HostWndTemplate")

local tipsHostWnd = tipsHostWndTemplate:CreateInstance("Bolt.Tips")

 

最关键的一步,设置一个tips的模板,也就是一个ObjectTemplate,里面就是自己要展示的内容了,这个可以修改(在tipshostwnd还没有创建或者被销毁的情况下)

tipsHostWnd:SetTipTemplate("bolt.login.panel")

 

其中bolt.login.panel的定义如下(里面的内容可以任意,根据需要而定)

 

<objtemplate id="bolt.login.panel" class="LayoutObject">

                                     <attr>

                                     </attr>

                                     <children>

                                               <obj id="bolt.login.face" class="ImageObject">

                                                        <attr>

                                                        <left>0</left>

                                                        <top>0</top>

                                                        <width>60</width>

                                                        <height>60</height>

                                                        <image>bolt.face</image>

                                                        </attr>

                                               </obj>

                                     </children>

                            </objtemplate>

 

 

然后到了下面最关键的几点了,现在设计的tipshostwnd有两种模式:自动模式auto和手动manual模式,默认为自动模式

l  自动模式下,只要设置一个ObjectTemplateid,然后利用DelayPopup(time)DelayCancel(time)指定自动弹出和取消的延时,popup延时达到后,会自动创建窗口,并根据指定的template id创建树,并自动绑定,创建窗口,然后显示;cancel时候,自动隐藏并销毁

 

l  在手动模式下面,和普通的hostwnd的流程相同(同样需要调用CreateDestroy来创建和销毁),在hostwnd已经创建的情况下,DelayPopupDelayCancel只是用来显示和隐藏tips窗口

 

l  在上面两种情况下,如果不想使用延时模式,可以使用Popup()Cancel()这对接口来控制显示和隐藏,调用后,在函数返回之前,tipshostwnd将会显示和隐藏

 

l  通过SetTipMode可以设置tipshostwnd的模式: SetTipMode(“auto”)或者SetTipMode(“manual”),默认为auto模式

 

l  同时增加了设置tipshostwnd位置的方法

SetPositon(x,y)  相对于窗口所在屏幕的左上角

SetPositionByObject(x,y,object) 相对于指定object的左上角

SetPostionByHostWnd(x,y,hostwnd) 相对于指定hostwnd的左上角

SetPositionByWindow(x,y,,hwnd) 相对于指定的实窗口HWND的左上角

 

SetPositionMove都可以改变窗口的位置,在这一点上来说是相同的。

 

 

可以下面形式来显示一个tips

<event name="OnMouseMove">

         local arg = {...}

         local obj = arg[1]

                                                       

         local hostWndManager = XLGetObject("Xunlei.UIEngine.HostWndManager")

         local tipsHostWnd = hostWndManager:GetHostWnd("Bolt.Tips")

                                                       

         tipsHostWnd:DelayPopup(1000) // 延时1spopup,新的调用会覆盖老的调用

         tipsHostWnd:SetPositionByObject(100,30,obj)               

</event>

<event name="OnMouseLeave">

         local hostWndManager = XLGetObject("Xunlei.UIEngine.HostWndManager")

         local tipsHostWnd = hostWndManager:GetHostWnd("Bolt.Tips")

         tipsHostWnd:DelayCancel(0) //指定延时为0,就是立刻隐藏

         </event>

 

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