• 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 }

    运行结果:

  • 相关阅读:
    百度地图API示例之小实践 添加代理商标注
    百度地图API示例之文本标注
    百度地图API示例之添加自定义控件
    百度地图API示例之添加定位相关控件
    linux crontab 计划任务 atd和windows下的计划任务
    转:PHP教程之PHP调用session_start后页面始终加载的问题研究
    PHP使用empty检查函数返回结果时报Fatal error: Can't use function return value in write context的问题
    Linux命令之yes
    转:Yii实战中8个必备常用的扩展,模块和widget
    转:Yii 常量的轻松管理
  • 原文地址:https://www.cnblogs.com/MiniHouse/p/3799719.html
Copyright © 2020-2023  润新知