有时我必须实现像自定义拖动&拖放功能。代码可能是这样的:如何让鼠标事件处理更容易?
bool mouse_down = false;
Vec2 mouse_pos;
void on_mouse_down() {
mouse_down = true;
mouse_pos = cursor_pos();
}
void on_mouse_move() {
if(mouse_down) {
Vec2f c = cursor_pos();
Vec2f d = c - mouse_pos;
// dragging. make objects tracing the cursor.
// ...
}
}
void on_mouse_up() {
mouse_down = false;
// dropped
// ...
}
我知道这工作得很好,但我喜欢donnot冗余变量和这样的事情在所有的分离程序。在IP(命令式编程)中,这可能是不可避免的;我的问题是,有没有更好的方法来处理FP(函数式编程)中的这种事情?无论编程语言,Lisp,Scheme,F#,Ruby等,还是一些更好的方式在IP中执行此操作,都会赞赏任何想法和建议?
什么多余的变量? – 2012-01-16 02:41:17
上面的代码只是一个最简单的示例。如果我在整个系统中增加了更多的功能和限制,比如左,右,中间,轮子,双击,不同的操作,而光标移过不同的对象,变量账户将会爆炸...... – 2012-01-16 02:51:12