<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://wiki.cifprodolfoucha.es/index.php?action=history&amp;feed=atom&amp;title=LIBGDX_TouchPad</id>
	<title>LIBGDX TouchPad - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cifprodolfoucha.es/index.php?action=history&amp;feed=atom&amp;title=LIBGDX_TouchPad"/>
	<link rel="alternate" type="text/html" href="https://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_TouchPad&amp;action=history"/>
	<updated>2026-10-17T10:28:19Z</updated>
	<subtitle>Historial de revisiones de esta página en el wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_TouchPad&amp;diff=494&amp;oldid=prev</id>
		<title>Wiki: Página creada con «&lt;span style=&quot;font-size:150%;&quot;&gt;UNIDADE 3: Touchpad&lt;/span&gt;  ===Introdución===  &lt;b&gt;&lt;u&gt;Nota:&lt;/u&gt;&lt;/b&gt; Esta explicación está [http://mediawiki.cifprodolfoucha.es/index.php?tit...»</title>
		<link rel="alternate" type="text/html" href="https://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_TouchPad&amp;diff=494&amp;oldid=prev"/>
		<updated>2015-12-11T17:24:57Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «&amp;lt;span style=&amp;quot;font-size:150%;&amp;quot;&amp;gt;UNIDADE 3: Touchpad&amp;lt;/span&amp;gt;  ===Introdución===  &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Nota:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Esta explicación está [http://mediawiki.cifprodolfoucha.es/index.php?tit...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:150%;&amp;quot;&amp;gt;UNIDADE 3: Touchpad&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Introdución===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Nota:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Esta explicación está [http://mediawiki.cifprodolfoucha.es/index.php?title=LIBGDX_As_interfaces_para_capturar_eventos relacionada coa sección de Interfaces].&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clase que se utiliza: [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/Touchpad.html TouchPad].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O Touchpad ven ser a representación dun joystick na pantalla. &lt;br /&gt;
&lt;br /&gt;
Desta forma podemos manexar o noso protagonista dunha forma máis cómoda, aínda que dependerá do tipo de xogo e pode ser que non sexa conveniente este tipo de control.&lt;br /&gt;
&lt;br /&gt;
O normal é que sexa o control elixido para manexar unha nave (avión, nave espacial,...) non xogo no que se teña un movemento aberto en todas as direccións.&lt;br /&gt;
&lt;br /&gt;
===Proceso de visualización===&lt;br /&gt;
&lt;br /&gt;
Para visualizar o Touchpad  imos necesitar dúas texturas que van representar o joystick, como os da seguinte imaxe:&lt;br /&gt;
&lt;br /&gt;
[[Imagen:LIBGDX_UD3_Touchpad_1.jpg|300px|center]]&lt;br /&gt;
&lt;br /&gt;
Cando prememos no centro, a textura central moverase (impulsada por nos) por dentro do círculo exterior.&lt;br /&gt;
&lt;br /&gt;
* Deberedes por tanto definir dúas texturas, unha para o fondo e outra para o interior.&lt;br /&gt;
&lt;br /&gt;
* Unha vez teñades as texturas é necesario definir un estilo para o Touchpad. Para definir o estilo necesitamos facer uso dun obxecto da [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/Skin.html clase Skin] que ven ser como un almacén onde definimos recursos (texturas, fontes, cores...) que van poder ser usados por elementos gráficos como botóns, caixas de texto,...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Nota:&amp;lt;/u&amp;gt; Isto o veremos posteriormente no [http://mediawiki.cifprodolfoucha.es/index.php?title=LIBGDX_Scene_UI sección de Stage UI].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
	private Skin touchpadSkin;&lt;br /&gt;
        ....&lt;br /&gt;
	@Override&lt;br /&gt;
	public void create () {&lt;br /&gt;
          .......&lt;br /&gt;
    		touchpadSkin = new Skin();&lt;br /&gt;
		touchpadSkin.add(&amp;quot;touchBackground&amp;quot;, new Texture(&amp;quot;LIBGDX_touchBackground.png&amp;quot;));&lt;br /&gt;
		touchpadSkin.add(&amp;quot;touchKnob&amp;quot;, new Texture(&amp;quot;LIBGDX_touchKnob.png&amp;quot;));&lt;br /&gt;
          .......&lt;br /&gt;
        }           &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Nese Skin imos cargar as dúas texturas anteriores.&lt;br /&gt;
&lt;br /&gt;
* Agora necesitamos asinar o estilo ó Touchpad. Creamos por tanto un obxecto da [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/Touchpad.TouchpadStyle.html clase TouchpadStyle].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
	private TouchpadStyle touchpadStyle;&lt;br /&gt;
          .......&lt;br /&gt;
	@Override&lt;br /&gt;
	public void create () {&lt;br /&gt;
          .......&lt;br /&gt;
		touchpadStyle = new TouchpadStyle();&lt;br /&gt;
        }           &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* A este obxecto temos que asinarlle a dúas propiedades as texturas que se atopan no Skin, pero non podemos usar obxectos da clase Texture, se non que necesitamos obxectos da [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/Drawable.html clase Drawable]. O obxectos da clase Drawable os podemos obter a partires do [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/Skin.html#getDrawable-java.lang.String- método getDrawable] da clase Skin no que lle pasamos de argumento o nome utilizado na liña: touchpadSkin.add(&amp;quot;&amp;#039;&amp;#039;&amp;#039;touchBackground&amp;#039;&amp;#039;&amp;#039;&amp;quot;, new Texture(&amp;quot;LIBGDX_touchBackground.png&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
          .......&lt;br /&gt;
	@Override&lt;br /&gt;
	public void create () {&lt;br /&gt;
          .......&lt;br /&gt;
		Drawable D_background = touchpadSkin.getDrawable(&amp;quot;touchBackground&amp;quot;);&lt;br /&gt;
		Drawable D_knob = touchpadSkin.getDrawable(&amp;quot;touchKnob&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        }           &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Como as texturas poden ter tamaños diferentes, definimos o tamaño de cada unha chamando ó método setMinHeight e setMinWidth:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
          .......&lt;br /&gt;
	@Override&lt;br /&gt;
	public void create () {&lt;br /&gt;
          .......&lt;br /&gt;
		D_background.setMinHeight(40);&lt;br /&gt;
		D_background.setMinWidth(40);&lt;br /&gt;
		&lt;br /&gt;
		D_knob.setMinHeight(15);&lt;br /&gt;
		D_knob.setMinWidth(15);&lt;br /&gt;
        }           &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Como vemos estamos a poñer un tamaño de 40 pixeles ó círculo exterior e de 15 pixeles ó circulo interior.&lt;br /&gt;
&lt;br /&gt;
* Unha vez temos modificados os obxectos da clase Drawable, os asinamos o estilo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
          .......&lt;br /&gt;
	@Override&lt;br /&gt;
	public void create () {&lt;br /&gt;
          .......&lt;br /&gt;
		touchpadStyle.background = D_background;&lt;br /&gt;
		touchpadStyle.knob = D_knob;&lt;br /&gt;
        }           &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Agora só queda por definir o obxecto da [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/Touchpad.html clase Touchpad] e asinarlle dito estilo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
	private Touchpad touchpad;&lt;br /&gt;
          .......&lt;br /&gt;
	@Override&lt;br /&gt;
	public void create () {&lt;br /&gt;
          .......&lt;br /&gt;
		touchpad = new Touchpad(5, touchpadStyle);&lt;br /&gt;
		touchpad.setBounds(40, 40, 50, 50);&lt;br /&gt;
        }           &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Liña 7: Instanciamos o Touchpad e pasamos como parámetros o número de pixeles con respecto ó centro, a partires do cal a bola interior do joystick se move. Como segundo parámetro leva o estilo definido.&lt;br /&gt;
* Liña 8: Moi importante. O Touchpad se debe usar coa [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/Stage.html clase Stage] que veremos posteriormente na [http://mediawiki.cifprodolfoucha.es/index.php?title=LIBGDX_Scene_UI sección de Scene]. Coa chamada ó método setBounds(x,y,width,height) estamos a indicar a posición e tamaño do joystick.&lt;br /&gt;
&lt;br /&gt;
A modo de introdución rápida diremos que a clase que necesitamos para debuxar é Stage. Dentro do Stage existen &amp;#039;Actors&amp;#039; que son os elementos que se debuxan. Cada actor ten unha textura, posición, tamaño....&lt;br /&gt;
&lt;br /&gt;
O Stage vai ter dous métodos moi importantes: act e draw.&lt;br /&gt;
:O método act vai &amp;#039;actualizar&amp;#039; todos os actores que se atopen engadidos ó Stage.&lt;br /&gt;
:O método draw vai debuxar todos os actores que se atopen no Stage.&lt;br /&gt;
&lt;br /&gt;
Estes métodos deben ir no método render.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;10&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
	private Touchpad touchpad;&lt;br /&gt;
          .......&lt;br /&gt;
	@Override&lt;br /&gt;
	public void create () {&lt;br /&gt;
          .......&lt;br /&gt;
		/* Stage */&lt;br /&gt;
		&lt;br /&gt;
		stage = new Stage();&lt;br /&gt;
		stage.addActor(touchpad);&lt;br /&gt;
		&lt;br /&gt;
		Gdx.input.setInputProcessor(stage);&lt;br /&gt;
&lt;br /&gt;
        }           &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
No noso caso, o Stage está conformado por un único actor que é o Touchpad.&lt;br /&gt;
Como queremos que o Stage xestione os eventos dos actores que están engadidos a el (así moverá o roda interior do joystick) indicamos que a xestión de eventos o leve él (liña 12).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Nota:&amp;lt;/u&amp;gt; O cambiar a xestión de eventos ó Stage perdemos a xestión de interface InputProcessor. Se queredes manter as dúas teriades que utilizar [http://mediawiki.cifprodolfoucha.es/index.php?title=LIBGDX_Xestion_Eventos_GestureListener#Xestionando_m.C3.BAltiples_interfaces_de_eventos múltiples interfaces de eventos] como vimos anteriormente.&lt;br /&gt;
&lt;br /&gt;
* O Stage ó igual que a cámara, ten un [http://mediawiki.cifprodolfoucha.es/index.php?title=LIBGDX_A_c%C3%A1mara_2D viewport] asociado. Se queremos que se modifique en función do tamaño da pantalla teremos que facer isto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
	public void resize(int width, int height) {&lt;br /&gt;
		stage.getViewport().update(width, height, true);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
: Co parámetro true indicamos que a cámara debe situarse no centro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Por último temos que facer o render dos actores:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
	@Override&lt;br /&gt;
	public void render() {&lt;br /&gt;
		Gdx.gl.glClearColor(0, 0, 0, 1);&lt;br /&gt;
		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);&lt;br /&gt;
		&lt;br /&gt;
		stage.act(Gdx.graphics.getDeltaTime());&lt;br /&gt;
		stage.draw();&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Control do Touchpad===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para saber en que posición está o Touchpad temos os seguintes métodos:&lt;br /&gt;
&lt;br /&gt;
* [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/Touchpad.html#getKnobPercentX-- getKnobPercentX()]: Devolve a posición X do círculo central coma unha porcentaxe con respecto á distancia có círculo exterior. Vai dende -1 a +1 (esquerda-dereita).&lt;br /&gt;
* [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/Touchpad.html#getKnobPercentY-- getKnobPercentY()]: Devolve a posición Y do círculo central coma unha porcentaxe con respecto á distancia có círculo exterior. Vai dende -1 a +1 (arriba-abaixo).&lt;br /&gt;
* [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/Touchpad.html#getKnobX-- getKnobX()]: Devolve a posición X  do círculo central con respecto á distancia có círculo exterior. O valor vai depender do tamaño asinado ó Touchpad.&lt;br /&gt;
* [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/Touchpad.html#getKnobX-- getKnobY()]: Devolve a posición Y  do círculo central con respecto á distancia có círculo exterior. O valor vai depender do tamaño asinado ó Touchpad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Exemplo de código===&lt;br /&gt;
&lt;br /&gt;
Neste exemplo vaise mover un gráfico pola pantalla de acordo ó movemento do Touchpad.&lt;br /&gt;
&lt;br /&gt;
Para mover o gráfico se fixo uso da [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Sprite.html clase Sprite]. Dita clase permite almacenar a textura, tamaño e posición. Poderíamos utilizar unha textura e unha clase separada para gardar os datos da figura (posición, tamaño, velocidade) como fixemos no xogo seguindo o Modelo-Vista-Contralador.&lt;br /&gt;
Non se utilizou esta clase por mezclar o modelo-vista, pero a estas alturas tedes total liberdade para utilizar esta clase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Preparación:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Descargade o seguinte arquivo e descomprimídeo no cartafol assets da versión Android.[[Media:LIBGDX_touchpad.zip]]&lt;br /&gt;
&lt;br /&gt;
* Crear unha nova clase e cambiar os diferentes proxectos para que carguen dita clase.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Código da clase UsoTouchPad&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Obxectivo:&amp;#039;&amp;#039;&amp;#039; Amosar como funciona o Touchpad.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;17-19,41-67,79-80,83-84,89,94-96&amp;quot; &amp;gt;&lt;br /&gt;
import com.badlogic.gdx.ApplicationAdapter;&lt;br /&gt;
import com.badlogic.gdx.Gdx;&lt;br /&gt;
import com.badlogic.gdx.graphics.GL20;&lt;br /&gt;
import com.badlogic.gdx.graphics.OrthographicCamera;&lt;br /&gt;
import com.badlogic.gdx.graphics.Texture;&lt;br /&gt;
import com.badlogic.gdx.graphics.g2d.Sprite;&lt;br /&gt;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;&lt;br /&gt;
import com.badlogic.gdx.scenes.scene2d.Stage;&lt;br /&gt;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;&lt;br /&gt;
import com.badlogic.gdx.scenes.scene2d.ui.Touchpad;&lt;br /&gt;
import com.badlogic.gdx.scenes.scene2d.ui.Touchpad.TouchpadStyle;&lt;br /&gt;
import com.badlogic.gdx.scenes.scene2d.utils.Drawable;&lt;br /&gt;
&lt;br /&gt;
public class UsoTouchPad extends ApplicationAdapter {&lt;br /&gt;
	private SpriteBatch batch;&lt;br /&gt;
&lt;br /&gt;
	private Skin touchpadSkin;&lt;br /&gt;
	private TouchpadStyle touchpadStyle;&lt;br /&gt;
	private Touchpad touchpad;&lt;br /&gt;
	&lt;br /&gt;
	private OrthographicCamera camara2d;&lt;br /&gt;
	&lt;br /&gt;
	private Stage stage;&lt;br /&gt;
	private Sprite grafico;&lt;br /&gt;
	private float velocidade = 5;&lt;br /&gt;
   &lt;br /&gt;
	@Override&lt;br /&gt;
	public void create () {&lt;br /&gt;
		batch = new SpriteBatch();&lt;br /&gt;
		&lt;br /&gt;
		grafico = new Sprite(new Texture(&amp;quot;badlogic.jpg&amp;quot;));&lt;br /&gt;
		grafico.setBounds(100, 150, 25, 25);&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;
		camara2d = new OrthographicCamera();&lt;br /&gt;
		camara2d.setToOrtho(false,300,300);&lt;br /&gt;
		camara2d.update();&lt;br /&gt;
&lt;br /&gt;
		batch.setProjectionMatrix(camara2d.combined);&lt;br /&gt;
		&lt;br /&gt;
		/* TOUCHPAD */&lt;br /&gt;
		touchpadSkin = new Skin();&lt;br /&gt;
		touchpadSkin.add(&amp;quot;touchBackground&amp;quot;, new Texture(&amp;quot;LIBGDX_touchBackground.png&amp;quot;));&lt;br /&gt;
		touchpadSkin.add(&amp;quot;touchKnob&amp;quot;, new Texture(&amp;quot;LIBGDX_touchKnob.png&amp;quot;));&lt;br /&gt;
		&lt;br /&gt;
		touchpadStyle = new TouchpadStyle();&lt;br /&gt;
		Drawable D_background = touchpadSkin.getDrawable(&amp;quot;touchBackground&amp;quot;);&lt;br /&gt;
		Drawable D_knob = touchpadSkin.getDrawable(&amp;quot;touchKnob&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		D_background.setMinHeight(40);&lt;br /&gt;
		D_background.setMinWidth(40);&lt;br /&gt;
		&lt;br /&gt;
		D_knob.setMinHeight(15);&lt;br /&gt;
		D_knob.setMinWidth(15);&lt;br /&gt;
		&lt;br /&gt;
		touchpadStyle.background = D_background;&lt;br /&gt;
		touchpadStyle.knob = D_knob;&lt;br /&gt;
&lt;br /&gt;
		touchpad = new Touchpad(5, touchpadStyle);&lt;br /&gt;
		touchpad.setBounds(40, 40, 50, 50);&lt;br /&gt;
		&lt;br /&gt;
		/* Stage */&lt;br /&gt;
		&lt;br /&gt;
		stage = new Stage();&lt;br /&gt;
		stage.addActor(touchpad);&lt;br /&gt;
		&lt;br /&gt;
		Gdx.input.setInputProcessor(stage);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void render() {&lt;br /&gt;
		Gdx.gl.glClearColor(0, 0, 0, 1);&lt;br /&gt;
		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);&lt;br /&gt;
		&lt;br /&gt;
		batch.begin();&lt;br /&gt;
		batch.draw(grafico.getTexture(), grafico.getX(), grafico.getY(),grafico.getWidth(),grafico.getHeight());&lt;br /&gt;
		batch.end();&lt;br /&gt;
		&lt;br /&gt;
		stage.act(Gdx.graphics.getDeltaTime());&lt;br /&gt;
		stage.draw();&lt;br /&gt;
		&lt;br /&gt;
		//Movemos o grafico&lt;br /&gt;
		grafico.setX(grafico.getX() + touchpad.getKnobPercentX()*velocidade);&lt;br /&gt;
		grafico.setY(grafico.getY() + touchpad.getKnobPercentY()*velocidade);&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public void resize(int width, int height) {&lt;br /&gt;
		stage.getViewport().update(width, height, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void dispose() {&lt;br /&gt;
		stage.dispose();&lt;br /&gt;
		batch.dispose();&lt;br /&gt;
		Gdx.input.setInputProcessor(null);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Liñas 83-84: Son as encargadas de mover o Sprite en función da velocidade e da distancia do punto central ó extremo. Canto máis próximo máis velocidade.&lt;br /&gt;
&lt;br /&gt;
Se executades dará como resultado isto:&lt;br /&gt;
&lt;br /&gt;
[[Imagen:LIBGDX_UD3_Touchpad_2.jpg|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==TAREFA OPTATIVA A FACER==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
:Modificade o control do xogo para mover o Alien utilizando un TouchPad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2015).&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
		
	</entry>
</feed>