首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >射击手册OnClick事件的最佳实践是什么?

射击手册OnClick事件的最佳实践是什么?
EN

Stack Overflow用户
提问于 2010-05-23 19:33:27
回答 3查看 473关注 0票数 0

我有一个XNA项目,它将在屏幕上绘制几个对象。我希望用户能够与这些项目进行交互。因此,我试图构建一个方法来检查鼠标已经结束的对象,从最上面的对象中检查出哪个对象,然后为该对象启动一个OnClick事件。

检查上面的内容并不是问题所在,但最重要的是要把逻辑放在哪里。

我最初的感觉是,检查应该由一个主对象来处理,因为对于一个只了解自己的对象来说,确定其他对象的信息是没有意义的。然而,从主对象远程调用OnClick事件似乎也有违直觉。

在这种情况下,最好的做法是什么?

谢谢,

泰勒

EN

回答 3

Stack Overflow用户

发布于 2010-05-23 19:39:22

不要将逻辑放在事件处理程序中。相反,让事件处理程序调用另一个方法,将单击的对象作为参数传递:

代码语言:javascript
运行
复制
// inside the OnClick event handler
ActOnObject(clickedObject);

然后,您可以在代码中的任何其他地方调用相同的方法,用于任何对象:

代码语言:javascript
运行
复制
ActOnObject(GetObjectUnderMouse()):
票数 4
EN

Stack Overflow用户

发布于 2010-06-03 16:11:26

我可能会有一个类似于"ObjectManager“的类,这个类将保存对象的集合,并处理应该单击的当前对象的查找,然后调用该对象上的click函数。由于对象本身没有处理单击(但在我的示例中,技术上可能是整个游戏本身,或者可能是捕捉单击的ObjectManager ),所以我只需要使用您要单击的对象并调用类似的内容

代码语言:javascript
运行
复制
Object.Click(whatever parameters are logical for your situation)

最后,我想我建议了一种与Fredrik非常相似的方法,但是主要的区别是我个人更喜欢" object“知道单击应该做什么,从而调用对象本身的函数--这也是您在上面建议的函数中要做的.

票数 0
EN

Stack Overflow用户

发布于 2010-06-04 10:32:46

嗯,对于图形对象(纹理、精灵或其他.)

代码语言:javascript
运行
复制
public MyObject()
{ 
  ....

  public AreTheseMyCoordinates(int X, int Y);

}

在哪里,得到鼠标位置的屏幕坐标。

或者你可以做一个助教班:

代码语言:javascript
运行
复制
public static MouseHelper
{
  public static IsObjectClicked(MyObject obj, int X , int Y)
  {
     ....
  }
}

我会和静态助手一起去。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2893125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档