Android Open Source - GameEngine Single Touch Handler






From Project

Back to project page GameEngine.

License

The source code is released under:

# Copyright 2013 JK Wood <joshuakwood@gmail.com> # This framework is released under the Dog-on-Fire License: # If use of this framework causes your dog to catch on fire, # you agree to send me five d...

If you think the Android project GameEngine listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.slaxer.framework.implementation;
//from w  w  w  . ja va 2  s . c  om
import java.util.ArrayList;
import java.util.List;

import android.view.MotionEvent;
import android.view.View;

import com.slaxer.framework.Input.TouchEvent;
import com.slaxer.framework.Pool;
import com.slaxer.framework.Pool.PoolObjectFactory;

public class SingleTouchHandler implements TouchHandler {
  boolean isTouched;
  int touchX;
  int touchY;
  Pool<TouchEvent> touchEventPool;
  List<TouchEvent> touchEvents = new ArrayList<TouchEvent>();
  List<TouchEvent> touchEventsBuffer = new ArrayList<TouchEvent>();
  float scaleX;
  float scaleY;

  public SingleTouchHandler(View view, float scaleX, float scaleY) {
    PoolObjectFactory<TouchEvent> factory = new PoolObjectFactory<TouchEvent>(){
      @Override
      public TouchEvent createObject(){
        return new TouchEvent();
      }
    };
    touchEventPool = new Pool<TouchEvent>(factory, 100);
    view.setOnTouchListener(this);
    
    this.scaleX = scaleX;
    this.scaleY = scaleY;
  }

  @Override
  public boolean onTouch(View v, MotionEvent event) {
    synchronized(this){
      TouchEvent touchEvent = touchEventPool.newObject();
      switch(event.getAction()){
      case MotionEvent.ACTION_DOWN:
        touchEvent.type = TouchEvent.TOUCH_DOWN;
        isTouched = true;
        break;
      case MotionEvent.ACTION_MOVE:
        touchEvent.type = TouchEvent.TOUCH_DRAGGED;
        isTouched = true;
        break;
      case MotionEvent.ACTION_CANCEL:
      case MotionEvent.ACTION_UP:
        touchEvent.type = TouchEvent.TOUCH_UP;
        isTouched = false;
        break;
      }
      
      touchEvent.x = touchX = (int)(event.getX() * scaleX);
      touchEvent.y = touchY = (int)(event.getY() * scaleY);
      touchEventsBuffer.add(touchEvent);
      
      return true;
    }
  }

  @Override
  public boolean isTouchDown(int pointer) {
    synchronized(this){
      if(pointer == 0)
        return isTouched;
      else
        return false;
    }
  }

  @Override
  public int getTouchX(int pointer) {
    synchronized(this){
      return touchX;
    }
  }

  @Override
  public int getTouchY(int pointer) {
    synchronized(this){
      return touchY;
    }
  }

  @Override
  public List<TouchEvent> getTouchEvents() {
    synchronized(this){
      int length = touchEvents.size();
      for(int touchEventPoolIndex = 0; touchEventPoolIndex < length; touchEventPoolIndex++){
        touchEventPool.free(touchEvents.get(touchEventPoolIndex));
      }
      touchEvents.clear();
      touchEvents.addAll(touchEventsBuffer);
      touchEventsBuffer.clear();
      return touchEvents;
    }
  }

}




Java Source Code List

com.slaxer.framework.Audio.java
com.slaxer.framework.FileIO.java
com.slaxer.framework.Game.java
com.slaxer.framework.Graphics.java
com.slaxer.framework.Image.java
com.slaxer.framework.Input.java
com.slaxer.framework.Music.java
com.slaxer.framework.Pool.java
com.slaxer.framework.Screen.java
com.slaxer.framework.Sound.java
com.slaxer.framework.implementation.AndroidAudio.java
com.slaxer.framework.implementation.AndroidFastRenderView.java
com.slaxer.framework.implementation.AndroidFileIO.java
com.slaxer.framework.implementation.AndroidGame.java
com.slaxer.framework.implementation.AndroidGraphics.java
com.slaxer.framework.implementation.AndroidImage.java
com.slaxer.framework.implementation.AndroidInput.java
com.slaxer.framework.implementation.AndroidMusic.java
com.slaxer.framework.implementation.AndroidSound.java
com.slaxer.framework.implementation.CollRect.java
com.slaxer.framework.implementation.Dimension.java
com.slaxer.framework.implementation.MultiTouchHandler.java
com.slaxer.framework.implementation.Rectangle.java
com.slaxer.framework.implementation.SingleTouchHandler.java
com.slaxer.framework.implementation.TouchHandler.java