【发布时间】:2016-11-14 01:05:54
【问题描述】:
在这个问题中,我提到了 Unity3D,但通常适用于 c#。
Unity3D 有一个看起来像这样的界面 ..
public class SomeRobot:MonoBehaviour, IPointerDownHandler
{
public void OnPointerDown(PointerEventData data)
{
Debug.Log("Gets called whenever someone touches the screen...");
}
目前没有问题。
我自己做界面..
public interface IFUHandler:IPointerDownHandler
{
void OnBlah (PointerEventData data);
}
假设我有一个守护进程或任何调用 OnBlah 的接口的使用者。
public class SomeRobot:MonoBehaviour, IFUHandler
{
public void OnBlah(PointerEventData data)
{
Debug.Log("Gets called when blah happens...");
}
目前没有问题。但是
public class SomeRobot:MonoBehaviour, IFUHandler
{
public void OnBlah(PointerEventData data)
{
Debug.Log("Gets called when blah happens...");
}
public void OnPointerDown(PointerEventData data)
{
Debug.Log("this DOES still get called also...");
}
事实上,OnPointerDown 仍然会被调用。这是有道理的。
但是 .... 有没有办法让我的接口吃掉对 OnPointerDown 的调用?
所以订阅IFUHandler 的消费者实际上没有收到对OnPointerDown 的调用?
(但当然会收到我的OnBlah 电话。)
或者我只是在忍受“TMIOOK”的想法? (把我自己绑在 OO 结的思想里 :))
【问题讨论】:
-
这是一个非常有趣的问题。我会尝试看看这是否可能。
-
PointerEventData 有一个 used 成员。您可以将其设置为
true以阻止其他任何反应吗? -
嗨@ChrisF - 好吧..我的意思是,在哪里?! (另外,我想这在“一般 c# 问题”的情况下并没有真正的帮助......我认为。)
-
@JoeBlow - 是的。尽管在一般情况下,许多事件确实具有“已处理”属性。
-
@JoeBlow 你想达到什么目的?