Reputation: 486
ive got the following code for a drag and drop event:
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);
}
how can i shorten this now with a better logic i tried
isMouseDown = event.getType().equals("mousedown") && !(event.getType().equals("mousemove") && isMouseDown);
if (event.getType().equals("mousemove") && isMouseDown)
thisMove(event);
but its wrong...
Upvotes: 0
Views: 93
Reputation: 641
You can still write the code in a similar way you originally you wrote it. Here's the logic.
String t = event.getType();
isMouseDown = t.equals("mousedown") || !(t.equals("mouseup")) && !(t.equals("mouseout")) && isMouseDown;
if (t.equals("mousemove") && isMouseDown)
thisMove(event);
Upvotes: 0
Reputation: 65851
If you need to keep track of state (isMouseDown
in your case) it is generally easier (and better) to encapsualte that state in an object along with the functionality that makes use of that state.
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;
}
}
Upvotes: 0
Reputation: 1624
Why not use default value and one if as below :
isMouseDown = false;
if (event.getType().equals("mousedown"))
{
isMouseDown = true;
}
if (event.getType().equals("mousemove"))
{
if (isMouseDown)
thisMove(event);
}
I know switch would be a better option. But just in case.....
Upvotes: 0
Reputation: 719
You can change your code as follow:
switch(event.getType()){
case "mousedown":
isMouseDown = true;
break;
case "mouseup":
case "mouseout":
isMouseDown=false;
break;
case "mousemove":
if(isMouseDown) thisMove(event);
break;
default:
break;
}
Upvotes: 1
Reputation: 4883
Try using a switch statement like the following:
switch(event.getType()) {
case "mousedown":
code block
break;
case "mouseup":
code block
break;
default:
default code block}
Upvotes: 2