【发布时间】:2013-11-15 11:46:20
【问题描述】:
我正在用 java 制作一个在鼠标后面使用“尾巴”的游戏。我使用 MouseMotionListener 并使用 mouseDragged(MouseEvent e) 函数将鼠标的位置添加到数组中。
所以只要触发了 mouseDragged(MouseEvent e) 函数,它就应该将当前鼠标位置添加到一个数组中,当拖动停止时,该数组应该被清除。
我的想法是使用 mouseMoved(MouseEvent e) 函数将数组设置为空。我可以这样做:
public void mouseMoved(MouseEvent e) {
if(myTailArray != null) {
myTailArray = null;
}
}
或者像这样:
public void mouseMoved(MouseEvent e) {
myTailArray = null;
}
最后一个方法意味着 myTailArray 将被设置为 null 很多次都没有。但这对性能有影响吗?
编辑:为了清楚起见,我知道当鼠标在拖动后没有移动时,这可能会导致错误。我使用 MouseListener 来重置鼠标的按下和释放,但我只是好奇。
EDIT2:感谢所有 cmets!我认为因为该事件被触发“相当多”,所以它可能在我的代码中是一种难闻的气味。虽然我还没有考虑缓存等。
【问题讨论】:
-
不检查就做。
-
回答任何性能问题的最佳方式始终是测试。您可以编写一两个示例应用程序来测试不同的选项并亲自查看。
-
您补充说您“没有考虑过缓存等”。小心,你仍然可能错过了重点。您没有考虑“缓存等”。而你不应该。不在鼠标事件处理程序中。您没有想到的真实是实际的性能要求、分析和适当的优化。
-
@JasonC 你是绝对正确的。问题是我喜欢优化东西,但我没有太多经验。我并不是真的担心它会对我的程序产生太大影响,只是担心它会产生什么样的影响。
-
如果你喜欢优化东西,你应该尝试优化影响更大的东西。这篇文章虽然过时了,但可能会占用你一点时间onjava.com/pub/a/onjava/2002/03/20/optimization.html
标签: java