美文网首页
项目问题集(一)—— tip关闭

项目问题集(一)—— tip关闭

作者: d546d748d718 | 来源:发表于2017-11-05 13:32 被阅读0次

        刚刚做Unity大项目的菜鸟一枚,带来一项目中遇到的问题。这个问题集呢,就作为我成长的写照吧

        废话不多说了,上问题吧。最近做项目的过程中,遇到了一个问题。做的功能呢很简单,就是一个小的预览tip,要求点击tip时,不能关闭,点击tip之外,关闭tip,很平常的功能。项目是纯lua开发的,使用的是EasyTouch和Ngui。EasyTouh的一些点击事件都封装起来了,包括点击,长按,单指,双指的一些事件等等。ngui的按钮事件也封装起来了。我是接手的别人的工作,他对于这功能的做法如下:

function UI_SmallCommonTipPanel:AddListener( ... )

-- 点击tip本身,tip不会消失

EventManager.SetButtonEventHandler(BG_Sprite.gameObject, EnumButtonEvent.OnClick, DelegateFactory.DelegateDefines_OnTouchButtonHandler(UI_SmallCommonTipPanel.DontCloseUI), 100, 0);

EasyTouchUP = DelegateFactory.EasyTouch_TouchUpHandler(UI_SmallCommonTipPanel.CloseUI);

EasyTouch.AddTouchUpHandler(EasyTouchUP);

end

-- 不关闭UI的方法

function UI_SmallCommonTipPanel.DontCloseUI()

        IsOpen = 0;

end

-- 关闭UI的方法

function UI_SmallCommonTipPanel.CloseUI()

        if IsOpen == 0 then

               IsOpen = IsOpen +1;

        else

              -- 封装的关闭ui的方法

              UIManager.Instance:CloseUI(UITypeEnum.UI_SmallCommonTipPanel);

              IsOpen = IsOpen -1;

       end

end

       注册了两个监听事件,一个NGUI中的OnClick事件,一个EasyTouch中的鼠标抬起事件,出现的问题是正常点击是能够满足需求的,但是鼠标按下,拖拽,再抬起时,就算是在tip范围内部也会关闭tip。

      出现这种问题的原因在于,按下——拖拽——抬起已经不属于NGUI中封装的按钮事件了,这个应该是封装缘故导致的。解决的办法就是将OnPress事件来做为按钮事件就可以了。OnPress事件分为两种状态——按下和抬起两种状态。在按下的的时候,将标志位IsOpen设置为0即可。

相关文章

网友评论

      本文标题:项目问题集(一)—— tip关闭

      本文链接:https://www.haomeiwen.com/subject/wdsypxtx.html