我有一个拖放事件的代码:
if (event.getType().equals("mousedown")){
isMouseDown = true;
}
if (event.getType().equals("mouseup")){
isMouseDown = false;
}
if (event.getType().equals("mouseout")){
isMouseDown = false;
}
if (event.getType().equals("mousemove")){
if (isMouseDown)
thisMove(event);
}
我怎样才能通过我尝试的更好的逻辑来缩短这个
isMouseDown = event.getType().equals("mousedown") && !(event.getType().equals("mousemove") && isMouseDown);
if (event.getType().equals("mousemove") && isMouseDown)
thisMove(event);
但错了......
答案 0 :(得分:2)
尝试使用如下所示的开关语句:
switch(event.getType()) {
case "mousedown":
code block
break;
case "mouseup":
code block
break;
default:
default code block}
答案 1 :(得分:1)
您可以按照以下方式更改代码:
switch(event.getType()){
case "mousedown":
isMouseDown = true;
break;
case "mouseup":
case "mouseout":
isMouseDown=false;
break;
case "mousemove":
if(isMouseDown) thisMove(event);
break;
default:
break;
}
答案 2 :(得分:0)
为什么不使用默认值,如果如下,则使用默认值:
isMouseDown = false;
if (event.getType().equals("mousedown"))
{
isMouseDown = true;
}
if (event.getType().equals("mousemove"))
{
if (isMouseDown)
thisMove(event);
}
我知道切换会是更好的选择。但以防万一......
答案 3 :(得分:0)
如果您需要跟踪状态(在您的情况下为isMouseDown
),通常更容易(并且更好)将该状态封装在对象中以及使用该状态的功能。
class Mouse {
boolean down = false;
public void event(Event event) {
switch (event.getType()) {
case MouseDown:
down = true;
break;
case MouseUp:
case MouseOut:
down = false;
break;
case MouseMove:
if (down) {
thisMove(event);
}
break;
default:
break;
}
}
}
private static class Event {
enum Type {
MouseDown, MouseUp, MouseMove, MouseOut;
}
public Event() {
}
private Type getType() {
return null;
}
}
答案 4 :(得分:0)
您仍然可以按照原来编写代码的方式编写代码。这是逻辑。
String t = event.getType();
isMouseDown = t.equals("mousedown") || !(t.equals("mouseup")) && !(t.equals("mouseout")) && isMouseDown;
if (t.equals("mousemove") && isMouseDown)
thisMove(event);