有時我必須實現像自定義拖動&拖放功能。代碼可能是這樣的:如何讓鼠標事件處理更容易?
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