Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Override
- public void onTouchEvent(MotionEvent event)
- {
- int index = event.getActionIndex();
- int id = event.getPointerId(index);
- int count = event.getPointerCount();
- if(_ss.isActive() == false)
- return;
- switch(event.getActionMasked())
- {
- case MotionEvent.ACTION_DOWN:
- case MotionEvent.ACTION_POINTER_DOWN:
- {
- if(_nextOnTouch)
- {
- if(_ss.stopWaiting())
- {
- return;
- }
- }
- if(id >= count)
- break;
- Touch t = new Touch();
- t.position = new vec(event.getX(id), event.getY(id));
- t.timer.scheduleAtFixedRate(new TimeredTouchTask(t.position, id), 0, SHOOTING_INTERVAL);
- Touch old = _touch.put(id, t);
- if(old != null)
- {
- old.timer.cancel();
- old.timer = null;
- old = null;
- }
- }
- break;
- case MotionEvent.ACTION_UP:
- case MotionEvent.ACTION_POINTER_UP:
- {
- removeTouch(id);
- }
- break;
- case MotionEvent.ACTION_MOVE:
- {
- Iterator<Integer> it = _touch.keySet().iterator();
- while(it.hasNext())
- {
- int i = it.next();
- if(i < count)
- {
- vec t = _touch.get(i).position;
- t.x = event.getX(i);
- t.y = event.getY(i);
- }
- else
- {
- it.remove();
- removeTouch(i);
- }
- }
- }
- break;
- }
- }
- private void removeTouch(int id)
- {
- Touch t = _touch.get(id);
- if(t != null)
- {
- if(t.timer != null)
- {
- t.timer.cancel();
- t.timer = null;
- }
- t = null;
- _touch.remove(id);
- }
- }
- private class TimeredTouchTask extends TimerTask
- {
- private vec _t;
- private int _id;
- public TimeredTouchTask(vec t, int id)
- {
- _t = t;
- _id = id;
- }
- @Override
- public void run()
- {
- if(_ss != null && _ss.isActive())
- {
- _ss.getActiveSequence().pushLine(_t, _e.getScreenOffset());
- }
- else
- {
- Touch t = _touch.get(_id);
- if(t != null)
- _touch.remove(_id);
- cancel();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement