libgdx学习记录23——图片移动选择

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

  1 package com.fxb.newtest;
  2 
  3 import com.badlogic.gdx.ApplicationAdapter;
  4 import com.badlogic.gdx.Gdx;
  5 import com.badlogic.gdx.graphics.Color;
  6 import com.badlogic.gdx.graphics.GL10;
  7 import com.badlogic.gdx.graphics.Texture;
  8 import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
  9 import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
 10 import com.badlogic.gdx.input.GestureDetector;
 11 import com.badlogic.gdx.input.GestureDetector.GestureAdapter;
 12 import com.badlogic.gdx.scenes.scene2d.Action;
 13 import com.badlogic.gdx.scenes.scene2d.Stage;
 14 import com.badlogic.gdx.scenes.scene2d.actions.Actions;
 15 import com.badlogic.gdx.scenes.scene2d.ui.Image;
 16 
 17 public class Lib025_PicChange extends ApplicationAdapter{
 18     
 19     GestureAdapter gestureAdapter = new GestureAdapter(){
 20         @Override
 21         public boolean fling(float velocityX, float velocityY, int button) {
 22             // TODO Auto-generated method stub
 23 /*            if( velocityX > 0 ){
 24                 System.out.println( "fling right" );
 25                 stage.getCamera().translate( -stage.getWidth(), 0, 0 );
 26             }
 27             else{
 28                 System.out.println( "fling left" );
 29                 stage.getCamera().translate( stage.getWidth(), 0, 0 );
 30             }*/
 31             
 32             return super.fling(velocityX, velocityY, button);
 33         }
 34 
 35         
 36         
 37         @Override
 38         public boolean pan(float x, float y, float deltaX, float deltaY) {
 39             // TODO Auto-generated method stub
 40             System.out.println( "pan" );
 41             if( index>0 && deltaX>0 || index<imgs.length-1 && deltaX<0 ){
 42                 stage.getCamera().translate( -deltaX, 0, 0 );
 43                 add = deltaX > 0? -1: 1; 
 44             }            
 45             
 46             return super.pan(x, y, deltaX, deltaY);
 47         }
 48 
 49 
 50 
 51         @Override
 52         public boolean panStop(float x, float y, int pointer, int button) {
 53             // TODO Auto-generated method stub
 54             System.out.println( "pan stop" );
 55             if( index>0 && add==-1 || index<imgs.length-1 && add==1 ){
 56                 index += add;
 57                 stage.getCamera().position.set( index*500+stage.getWidth()/2, stage.getHeight()/2, 0 );                
 58             }
 59             return super.panStop(x, y, pointer, button);
 60         }    
 61         
 62         
 63         
 64         
 65     };
 66     GestureDetector detector = new GestureDetector( gestureAdapter );
 67     
 68     Stage stage;
 69     Image img1, img2, img3, img4;
 70     Image[] imgs;
 71     int index;
 72     int add = 0;
 73     ShapeRenderer rend;
 74     
 75     @Override
 76     public void create() {
 77         // TODO Auto-generated method stub
 78         super.create();
 79         Gdx.input.setInputProcessor( detector );
 80         
 81         img1 = new Image( new Texture( Gdx.files.internal( "data/pal4_0.jpg" ) ) );
 82         img2 = new Image( new Texture( Gdx.files.internal( "data/pal4_1.jpg" ) ) );
 83         img3 = new Image( new Texture( Gdx.files.internal( "data/pal4_2.jpg" ) ) );
 84         img4 = new Image( new Texture( Gdx.files.internal( "data/pal4_3.jpg" ) ) );
 85         
 86         stage = new Stage();
 87         stage.addActor( img1 );
 88         stage.addActor( img2 );
 89         stage.addActor( img3 );
 90         stage.addActor( img4 );
 91         
 92         imgs = new Image[]{ img1, img2, img3, img4 };
 93         
 94         for( int i=0; i<imgs.length; ++i ){
 95             imgs[i].setSize( 400, 240 );
 96             imgs[i].setPosition( i*500 + stage.getWidth()/2-imgs[i].getWidth()/2, stage.getHeight()/2-imgs[i].getHeight()/2 );
 97         }
 98             
 99         //imgs[1].setVisible( false );
100         //imgs[2].setVisible( false );
101         index = 0;
102         rend = new ShapeRenderer();
103     }
104 
105     @Override
106     public void render() {
107         // TODO Auto-generated method stub
108         super.render();
109         Gdx.gl.glClearColor( 1, 1, 1, 1 );
110         Gdx.gl.glClear( GL10.GL_COLOR_BUFFER_BIT );
111         stage.act();
112         stage.draw();
113         
114         rend.begin( ShapeType.Filled );
115         rend.setColor( Color.LIGHT_GRAY );
116         rend.rect( 0, 0, 100, 480 );
117         rend.rect( 700, 0, 100, 480 );
118         rend.rect( 100, 0, 700, 60 );
119         rend.rect( 100, 420, 700, 60 );
120         rend.end();
121         
122     }
123 
124     @Override
125     public void dispose() {
126         // TODO Auto-generated method stub
127         rend.dispose();
128         stage.dispose();
129         super.dispose();
130     }
131 
132 }

运行结果:

posted @ 2014-06-20 16:52  丛林小阁楼  阅读(620)  评论(0编辑  收藏  举报