Java tutorial
/******************************************************************************* * Copyright 2011 See AUTHORS file. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package com.badlogic.gdx.scenes.scene2d; import com.badlogic.gdx.Input.Buttons; import com.badlogic.gdx.math.Vector2; /** Event for actor input: touch, mouse, keyboard, and scroll. * @see InputListener */ public class InputEvent extends Event { private Type type; private float stageX, stageY; private int pointer, button, keyCode, scrollAmount; private char character; private Actor relatedActor; public void reset() { super.reset(); relatedActor = null; button = -1; } /** The stage x coordinate where the event occurred. Valid for: touchDown, touchDragged, touchUp, mouseMoved, enter, and exit. */ public float getStageX() { return stageX; } public void setStageX(float stageX) { this.stageX = stageX; } /** The stage x coordinate where the event occurred. Valid for: touchDown, touchDragged, touchUp, mouseMoved, enter, and exit. */ public float getStageY() { return stageY; } public void setStageY(float stageY) { this.stageY = stageY; } /** The type of input event. */ public Type getType() { return type; } public void setType(Type type) { this.type = type; } /** The pointer index for the event. The first touch is index 0, second touch is index 1, etc. Always -1 on desktop. Valid for: * touchDown, touchDragged, touchUp, enter, and exit. */ public int getPointer() { return pointer; } public void setPointer(int pointer) { this.pointer = pointer; } /** The index for the mouse button pressed. Always 0 on Android. Valid for: touchDown and touchUp. * @see Buttons */ public int getButton() { return button; } public void setButton(int button) { this.button = button; } /** The key code of the key that was pressed. Valid for: keyDown and keyUp. */ public int getKeyCode() { return keyCode; } public void setKeyCode(int keyCode) { this.keyCode = keyCode; } /** The character for the key that was type. Valid for: keyTyped. */ public char getCharacter() { return character; } public void setCharacter(char character) { this.character = character; } /** The amount the mouse was scrolled. Valid for: scrolled. */ public int getScrollAmount() { return scrollAmount; } public void setScrollAmount(int scrollAmount) { this.scrollAmount = scrollAmount; } /** The actor related to the event. Valid for: enter and exit. For enter, this is the actor being exited, or null. For exit, * this is the actor being entered, or null. */ public Actor getRelatedActor() { return relatedActor; } /** @param relatedActor May be null. */ public void setRelatedActor(Actor relatedActor) { this.relatedActor = relatedActor; } /** Sets actorCoords to this event's coordinates relative to the specified actor. * @param actorCoords Output for resulting coordinates. */ public Vector2 toCoordinates(Actor actor, Vector2 actorCoords) { actorCoords.set(stageX, stageY); actor.stageToLocalCoordinates(actorCoords); return actorCoords; } /** Returns true of this event is a touchUp triggered by {@link Stage#cancelTouchFocus()}. */ public boolean isTouchFocusCancel() { return stageX == Integer.MIN_VALUE || stageY == Integer.MIN_VALUE; } public String toString() { return type.toString(); } /** Types of low-level input events supported by stage2d. */ static public enum Type { /** A new touch for a pointer on the stage was detected */ touchDown, /** A pointer has stopped touching the stage. */ touchUp, /** A pointer that is touching the stage has moved. */ touchDragged, /** The mouse pointer has moved (without a mouse button being active). */ mouseMoved, /** The mouse pointer or an active touch have entered (i.e., {@link Actor#hit(float, float, boolean) hit}) an actor. */ enter, /** The mouse pointer or an active touch have exited an actor. */ exit, /** The mouse scroll wheel has changed. */ scrolled, /** A keyboard key has been pressed. */ keyDown, /** A keyboard key has been released. */ keyUp, /** A keyboard key has been pressed and released. */ keyTyped } }