libgdx学习记录23——图片移动选择
模拟移动选择图片,采用相机实现。
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——图片移动选择的更多相关文章
- libgdx学习记录19——图片动态打包PixmapPacker
libgdx中,opengl 1.x要求图片长宽必须为2的整次幂,一般有如下解决方法 1. 将opengl 1.x改为opengl 2.0.(libgdx 1.0版本后不支持1.x,当然不存在这个问题 ...
- libgdx学习记录1——图片显示Texture
libgdx底层采用opengl渲染,对图片进行了优化处理,与android原生态的bitmap不太一样. 相比而言,效率要高一些,不过只支持png,jpg,bmp三种格式. 显示中,一般将图片放在a ...
- libgdx学习记录20——多线程MultiThread资源处理
在libgdx中,一般的逻辑流程都在rende()函数中执行,这个函数是由opengl的渲染线程调用的,一般的图形显示和逻辑处理都在这个线程中. 一般情形下,在这个线程中处理就行了.但是当某些逻辑处理 ...
- libgdx学习记录17——照相机Camera
照相机在libgdx中的地位举足轻重,贯穿于整个游戏开发过程的始终.一般我们都通过Stage封装而间接使用Camera,同时我们也可以单独使用Camera以完成背景的移动.元素的放大.旋转等操作. C ...
- libgdx学习记录16——资源加载器AssetManager
AssetManager用于对游戏中的资源进行加载.当游戏中资源(图片.背景音乐等)较大时,加载时会需要较长时间,可能会阻塞渲染线程,使用AssetManager可以解决此类问题. 主要优点: 1. ...
- libgdx学习记录11——平铺地图TiledMap
地图对于游戏场景十分重要,很多游戏都需要对地图进行编辑,可使用TileMap进行编辑并生成对应的tmx格式地图文件. 编辑好后,可通过TmxMapLoader来读取地图文件.可通过一个正交相机Otho ...
- libgdx学习记录6——动作Action
libgdx中的Action类能够有效的帮助我们实现位移.旋转.缩放.淡入淡出等效果,对游戏的设计很有用. Action是一个抽象类,本身不可以实例化.一般使用的它的继承类,常用的有 MoveToAc ...
- libgdx学习记录5——演员Actor
Actor也是libgdx中非常重要的一个元素,一般与stage配合一起使用.Actor能够设置大小,位置,旋转和动画等. 我们自定义的Actor一般需要继承于Actor,并且重写其中的act和dra ...
- libgdx学习记录4——舞台Stage
libgdx总的来说是一个框架,而不是一个成熟的游戏引擎.Stage是其中一个比较好的封装,里面自带Camera.SpriteBatch等常用渲染绘图工具. 下面是一个简单的添加图片,并让镜头左右上下 ...
随机推荐
- cuda中threadIdx、blockIdx、blockDim和gridDim的使用
threadIdx是一个uint3类型,表示一个线程的索引. blockIdx是一个uint3类型,表示一个线程块的索引,一个线程块中通常有多个线程. blockDim是一个dim3类型,表示线程块的 ...
- java 使用 引用数据类型(以Scanner、Random模块为例)
创建一个新变量 类型 变量名 = new 类型() 举个例子: Scanner sc = new Scaner() 使用引用数据类型中的功能: 变量.功能名字() Scanner类:接受键盘输入 1. ...
- JSP 过滤器
JSP教程 - JSP过滤器 JSP过滤器是可用于拦截来自客户端的请求或处理来自服务器的响应的Java类. 过滤器可用于执行验证,加密,日志记录,审核. 我们可以将过滤器映射到应用程序部署描述符文件w ...
- 关于innodb mtr模块
mtr (mini-transaction)微事务 mtr作用 mtr模块主要保证物理操作的一致性和原子性 1 一致性:通过读写锁来保证 2 原子性:涉及到的物理更新,都记入redo日志 mtr何时使 ...
- 巧用top percent优化top 1
废话不多说,直接上sql B.CREW_ID, E.CREW_NAME,C.OFFBLK,C.ONBLK,dbo.PEK_OPS_Date(A.STD) as STD FROM dbo.FLIGHTS ...
- Archive MySQL Data In Chunks Using Stored Procedure
sqladminon September 26, 2018 In a DBA’s day to day activities, we are doing Archive operation on ou ...
- 学习笔记:ALTERing a Huge MySQL Table - 对一个超大表做alter调整
Table of Contents The ProblemFuture SolutionsOverview of SolutionShortcutAssumptions/Restrictions/Co ...
- Linux运维之批量下载指定网站的100个图片文件,并找出大于200KB的文件
题目为: 有一百个图片文件,它们的地址都是http://down.fengge.com/img/1.pnghttp://down.fengge.com/img/2.png…一直到http://dow ...
- Google常用脚本
1.Tampermonkey 可下载常用脚本:https://greasyfork.org/zh-CN 2.常用FQSetupVPN 3.百度药丸屏蔽广告 4.百度文档可粘贴,下载 5.VIP视频可看
- Windows Server 2012上安装.NET Framework 3.5
引用:https://jingyan.baidu.com/article/14bd256e26b714bb6d26128a.html 装不成功后网上搜到很多相同的问题,都尝试过没解决到 用PowerS ...