模拟移动选择图片,采用相机实现。

 package com.fxb.newtest;

 import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
import com.badlogic.gdx.input.GestureDetector;
import com.badlogic.gdx.input.GestureDetector.GestureAdapter;
import com.badlogic.gdx.scenes.scene2d.Action;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.actions.Actions;
import com.badlogic.gdx.scenes.scene2d.ui.Image; public class Lib025_PicChange extends ApplicationAdapter{ GestureAdapter gestureAdapter = new GestureAdapter(){
@Override
public boolean fling(float velocityX, float velocityY, int button) {
// TODO Auto-generated method stub
/* if( velocityX > 0 ){
System.out.println( "fling right" );
stage.getCamera().translate( -stage.getWidth(), 0, 0 );
}
else{
System.out.println( "fling left" );
stage.getCamera().translate( stage.getWidth(), 0, 0 );
}*/ return super.fling(velocityX, velocityY, button);
} @Override
public boolean pan(float x, float y, float deltaX, float deltaY) {
// TODO Auto-generated method stub
System.out.println( "pan" );
if( index>0 && deltaX>0 || index<imgs.length-1 && deltaX<0 ){
stage.getCamera().translate( -deltaX, 0, 0 );
add = deltaX > 0? -1: 1;
} return super.pan(x, y, deltaX, deltaY);
} @Override
public boolean panStop(float x, float y, int pointer, int button) {
// TODO Auto-generated method stub
System.out.println( "pan stop" );
if( index>0 && add==-1 || index<imgs.length-1 && add==1 ){
index += add;
stage.getCamera().position.set( index*500+stage.getWidth()/2, stage.getHeight()/2, 0 );
}
return super.panStop(x, y, pointer, button);
} };
GestureDetector detector = new GestureDetector( gestureAdapter ); Stage stage;
Image img1, img2, img3, img4;
Image[] imgs;
int index;
int add = 0;
ShapeRenderer rend; @Override
public void create() {
// TODO Auto-generated method stub
super.create();
Gdx.input.setInputProcessor( detector ); img1 = new Image( new Texture( Gdx.files.internal( "data/pal4_0.jpg" ) ) );
img2 = new Image( new Texture( Gdx.files.internal( "data/pal4_1.jpg" ) ) );
img3 = new Image( new Texture( Gdx.files.internal( "data/pal4_2.jpg" ) ) );
img4 = new Image( new Texture( Gdx.files.internal( "data/pal4_3.jpg" ) ) ); stage = new Stage();
stage.addActor( img1 );
stage.addActor( img2 );
stage.addActor( img3 );
stage.addActor( img4 ); imgs = new Image[]{ img1, img2, img3, img4 }; for( int i=0; i<imgs.length; ++i ){
imgs[i].setSize( 400, 240 );
imgs[i].setPosition( i*500 + stage.getWidth()/2-imgs[i].getWidth()/2, stage.getHeight()/2-imgs[i].getHeight()/2 );
} //imgs[1].setVisible( false );
//imgs[2].setVisible( false );
index = 0;
rend = new ShapeRenderer();
} @Override
public void render() {
// TODO Auto-generated method stub
super.render();
Gdx.gl.glClearColor( 1, 1, 1, 1 );
Gdx.gl.glClear( GL10.GL_COLOR_BUFFER_BIT );
stage.act();
stage.draw(); rend.begin( ShapeType.Filled );
rend.setColor( Color.LIGHT_GRAY );
rend.rect( 0, 0, 100, 480 );
rend.rect( 700, 0, 100, 480 );
rend.rect( 100, 0, 700, 60 );
rend.rect( 100, 420, 700, 60 );
rend.end(); } @Override
public void dispose() {
// TODO Auto-generated method stub
rend.dispose();
stage.dispose();
super.dispose();
} }

运行结果:

libgdx学习记录23——图片移动选择的更多相关文章

  1. libgdx学习记录19——图片动态打包PixmapPacker

    libgdx中,opengl 1.x要求图片长宽必须为2的整次幂,一般有如下解决方法 1. 将opengl 1.x改为opengl 2.0.(libgdx 1.0版本后不支持1.x,当然不存在这个问题 ...

  2. libgdx学习记录1——图片显示Texture

    libgdx底层采用opengl渲染,对图片进行了优化处理,与android原生态的bitmap不太一样. 相比而言,效率要高一些,不过只支持png,jpg,bmp三种格式. 显示中,一般将图片放在a ...

  3. libgdx学习记录20——多线程MultiThread资源处理

    在libgdx中,一般的逻辑流程都在rende()函数中执行,这个函数是由opengl的渲染线程调用的,一般的图形显示和逻辑处理都在这个线程中. 一般情形下,在这个线程中处理就行了.但是当某些逻辑处理 ...

  4. libgdx学习记录17——照相机Camera

    照相机在libgdx中的地位举足轻重,贯穿于整个游戏开发过程的始终.一般我们都通过Stage封装而间接使用Camera,同时我们也可以单独使用Camera以完成背景的移动.元素的放大.旋转等操作. C ...

  5. libgdx学习记录16——资源加载器AssetManager

    AssetManager用于对游戏中的资源进行加载.当游戏中资源(图片.背景音乐等)较大时,加载时会需要较长时间,可能会阻塞渲染线程,使用AssetManager可以解决此类问题. 主要优点: 1. ...

  6. libgdx学习记录11——平铺地图TiledMap

    地图对于游戏场景十分重要,很多游戏都需要对地图进行编辑,可使用TileMap进行编辑并生成对应的tmx格式地图文件. 编辑好后,可通过TmxMapLoader来读取地图文件.可通过一个正交相机Otho ...

  7. libgdx学习记录6——动作Action

    libgdx中的Action类能够有效的帮助我们实现位移.旋转.缩放.淡入淡出等效果,对游戏的设计很有用. Action是一个抽象类,本身不可以实例化.一般使用的它的继承类,常用的有 MoveToAc ...

  8. libgdx学习记录5——演员Actor

    Actor也是libgdx中非常重要的一个元素,一般与stage配合一起使用.Actor能够设置大小,位置,旋转和动画等. 我们自定义的Actor一般需要继承于Actor,并且重写其中的act和dra ...

  9. libgdx学习记录4——舞台Stage

    libgdx总的来说是一个框架,而不是一个成熟的游戏引擎.Stage是其中一个比较好的封装,里面自带Camera.SpriteBatch等常用渲染绘图工具. 下面是一个简单的添加图片,并让镜头左右上下 ...

随机推荐

  1. 【three.js练习程序】旋转物体自身

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. maven 学习笔记--简介

    1.什么是maven Maven是一个服务于基于java平台的项目构建.依赖管理和项目信息管理. 2:什么是构建,maven是个优秀构建工具? (1)构建(bulid):对代码的进行编译.运行单元测试 ...

  3. LeetCode题解之Binary Number with Alternating Bits

    1.题目描述 2.问题分析 将数值转换为二进制,然后将前面的 0 去掉,再遍历一边二进制字符串,对每个字符和其后部的字符进行比较. 3.代码 bool hasAlternatingBits(int n ...

  4. 【SPL标准库专题(1)】 SPL简介

    什么是SPL SPL是Standard PHP Library(PHP标准库)的缩写. 根据官方定义,它是"a collection of interfaces and classes th ...

  5. 有关 Azure IaaS VM 磁盘以及托管和非托管高级磁盘的常见问题解答

    本文将对有关 Azure 托管磁盘和 Azure 高级存储的一些常见问题进行解答. 托管磁盘 什么是 Azure 托管磁盘? 托管磁盘是一种通过处理存储帐户管理来简化 Azure IaaS VM 的磁 ...

  6. redie config 详解

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位,# 通常的格式就是 1k 5gb 4m 等酱紫:## 1k => 1000 bytes# 1kb =&g ...

  7. MariaDB数据表操作实例

    1. MariaDB 数据库操作实例 MariaDB>create database class; //创建class数据库 MariaDB>use class; MariaDB>c ...

  8. scaffold-dbcontext 命令使用说明

    工具的scaffold-dbcontext(数据库上下文脚手架)指令来生成models和context. 指令详细介绍: Scaffold-DbContext [-Connection] <St ...

  9. windows环境下lib和dll的区别和联系详细

    https://blog.csdn.net/ghevinn/article/details/43759655 c++中共有两种库:1.LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代 ...

  10. WPScan扫描Wordpress漏洞

    一.什么是Wpscan?什么是Wordpres? 1.Wpscan WPScan是一个扫描WordPress漏洞的黑盒子扫描器,可以扫描出wordpress的版本,主题,插件,后台用户以及爆破后台用户 ...