其他分享
首页 > 其他分享> > libgdx学习ActorGestureListener点击滑动等动作监听

libgdx学习ActorGestureListener点击滑动等动作监听

作者:互联网

libgdx学习ActorGestureListener点击滑动等动作监听

介绍

最近学习用aide手机写游戏,在此记录一下libgdx学习过程。
ActorGestureListener用于游戏中的手势识别一般。
演示中的所有函数主函数都为MyGdxGame函数。

libgdx文档翻译

Detects tap, long press, fling, pan, zoom, and pinch gestures on an actor. If there is only a need to detect tap, use ClickListener.

ActorGestureListener可以检测点击,长按,滑动,平移,缩放,和收缩等的演员手势。如果只需要检测点击,使用ClickListener即可。

点击

libgdx文档翻译

在这里插入图片描述
touchDown检测监听按下动作,touchUp抬起,tap则是监听点击动作,不分按下抬起。
x和y分别是发生位置的横坐标和纵坐标。

演示代码

主函数:
public static float x=0,y=0; 把x和y定义为全局变量,在哪个类都可以改变。

package com.mycompany.mygame;

import com.badlogic.gdx.*;
import com.badlogic.gdx.graphics.*;
import com.badlogic.gdx.graphics.g2d.*;
import com.badlogic.gdx.scenes.scene2d.*;

public class MyGdxGame implements ApplicationListener
{
	Texture texture;
	SpriteBatch batch;
	Stage stage;
	public static float x=0,y=0;

	@Override
	public void create()
	{
		texture = new Texture(Gdx.files.internal("android.jpg"));
		batch = new SpriteBatch();
		stage=new Stage();
		stage.addListener(new MyGestureListener());
		Gdx.input.setInputProcessor(stage);
	}

	@Override
	public void render()
	{        
	    Gdx.gl.glClearColor(1, 1, 1, 1);
	    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
		batch.begin();
		batch.draw(texture, x, y, 
				   Gdx.graphics.getWidth() / 2, Gdx.graphics.getWidth() / 2);
		batch.end();
		stage.act();
		stage.draw();
	}

	@Override
	public void dispose()
	{
	}

	@Override
	public void resize(int width, int height)
	{
	}

	@Override
	public void pause()
	{
	}

	@Override
	public void resume()
	{
	}
}

touchDown

MyGestureListener函数重写ActorGestureListener类

package com.mycompany.mygame;
import com.badlogic.gdx.scenes.scene2d.utils.*;
import com.badlogic.gdx.scenes.scene2d.*;

public class MyGestureListener extends ActorGestureListener
{
	@Override
	public void touchDown(InputEvent event, float x, float y, int pointer, int button)
	{
		// TODO: Implement this method
		super.touchDown(event, x, y, pointer, button);
		MyGdxGame.x=x;
		MyGdxGame.y=y;
	}
}

效果:
在这里插入图片描述

touchUp

package com.mycompany.mygame;
import com.badlogic.gdx.scenes.scene2d.utils.*;
import com.badlogic.gdx.scenes.scene2d.*;

public class MyGestureListener extends ActorGestureListener
{
	@Override
	public void touchUp(InputEvent event, float x, float y, int pointer, int button)
	{
		// TODO: Implement this method
		super.touchUp(event, x, y, pointer, button);
		MyGdxGame.x=x;
		MyGdxGame.y=y;
	}
}

在这里插入图片描述

tap

package com.mycompany.mygame;
import com.badlogic.gdx.scenes.scene2d.utils.*;
import com.badlogic.gdx.scenes.scene2d.*;

public class MyGestureListener extends ActorGestureListener
{
	@Override
	public void tap(InputEvent event, float x, float y, int count, int button)
	{
		// TODO: Implement this method
		super.tap(event, x, y, count, button);
		MyGdxGame.x=x;
		MyGdxGame.y=y;
	}
}

在这里插入图片描述

长按

在这里插入图片描述
如果返回是true,其他的手势不会被触发,因为该事件是随着时间流逝触发的。
演示代码:

package com.mycompany.mygame;
import com.badlogic.gdx.scenes.scene2d.utils.*;
import com.badlogic.gdx.scenes.scene2d.*;

public class MyGestureListener extends ActorGestureListener
{
	@Override
	public boolean longPress(Actor actor, float x, float y)
	{
		// TODO: Implement this method
		MyGdxGame.x=x;
		MyGdxGame.y=y;
		return super.longPress(actor, x, y);
	}	
}

在这里插入图片描述

标签:badlogic,gdx,libgdx,float,ActorGestureListener,public,import,com,监听
来源: https://blog.csdn.net/weixin_42353399/article/details/104691263