模拟移动选择图片,采用相机实现。
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等常用渲染绘图工具. 下面是一个简单的添加图片,并让镜头左右上下 ...
随机推荐
-
AngularJs优缺点
1.优点:mvc.模块化.指令系统.双向数据绑定. 2.缺点:异步支持不好,放弃IE8.
-
数组json格式的字符串 转 list<;Bean>;
1. 字符串形式: [ { "userid": "admin", "name": "admin", "pas ...
-
ThinkPHP 关联模型中查询某条记录的父级(非查询子级)
数据表 id cat_name cat_pid 76 手机.数码 0 84 手机配件 76 86 蓝牙耳机 84 从属关 ...
-
两端对齐(兼容较好,支持IE)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
-
Ruby窗口程序
require 'tk' tkroot=TkRoot.new { title 'hellw word' geometry '300x200' } lb = TkLabel.new(tkroot) do ...
-
Linux学习之nfs实例
在对exports文件进行了正确的配置后,就可以启动NFS服务器了. 1.启动NFS服务器 为了使NFS服务器能正常工作,需要启动portmap和nfs两个服务,并且portmap一定要先于nfs启动 ...
-
tcpdump参数及使用介绍(转)
原文地址:http://dogdogcom.blog.51cto.com/2402458/490398 tcpdump -a 将网络地址和广播地址转变成名字: -d 将匹配信息包的代码以人们可以理解的 ...
-
MyBatis 3 与 Spring 4 整合关键
MyBatis 3 与 Spring 4 整合关键 MyBatis与Spring整合,首先需要一个Spring数据源.其次有两个关键,配置sqlSessionFactory时需要配置扫描sql映射xm ...
-
BAPI_GOODSMVT_CREATE 移动类型201 CODE = &#39;03&#39; 代码
DATA: MAT_DOC LIKE BAPI2017_GM_HEAD_RET-MAT_DOC. "物料凭证编号 DATA: GMHEAD LIKE BAPI2017_GM_H ...
-
Memory and Scores
Memory and Scores 题目链接:http://codeforces.com/contest/712/problem/D dp 因为每轮Memory和Lexa能取的都在[-k,k],也就是 ...