zoukankan      html  css  js  c++  java
  • libgdx学习记录4——舞台Stage

    libgdx总的来说是一个框架,而不是一个成熟的游戏引擎。Stage是其中一个比较好的封装,里面自带Camera、SpriteBatch等常用渲染绘图工具。

    下面是一个简单的添加图片,并让镜头左右上下移动以显示整副图片的例子。

     1 package com.fxb.newtest;
     2 
     3 import com.badlogic.gdx.ApplicationAdapter;
     4 import com.badlogic.gdx.Gdx;
     5 import com.badlogic.gdx.graphics.GL10;
     6 import com.badlogic.gdx.graphics.Texture;
     7 import com.badlogic.gdx.scenes.scene2d.Stage;
     8 import com.badlogic.gdx.scenes.scene2d.ui.Image;
     9 
    10 public class Lib003_Stage extends ApplicationAdapter{
    11 
    12     Stage stage;
    13     Image img;
    14     float leftX = 0;
    15     float bottomY = 0;
    16     
    17     enum Direct{ move_right, move_left, move_up, move_down };
    18     Direct direct = Direct.move_right;
    19     
    20     @Override
    21     public void create() {
    22         // TODO Auto-generated method stub
    23         stage = new Stage( Gdx.graphics.getWidth(), Gdx.graphics.getHeight() );
    24         img = new Image( new Texture( Gdx.files.internal( "data/pal_4.jpg" ) ) );
    25         
    26         img.setPosition(0,0);
    27         stage.addActor( img );
    28     }
    29 
    30     @Override
    31     public void render() {
    32         // TODO Auto-generated method stub
    33         Gdx.gl.glClearColor( 1, 1, 1, 1 );
    34         Gdx.gl.glClear( GL10.GL_COLOR_BUFFER_BIT );
    35         
    36             
    37         if(  direct==Direct.move_right ){
    38             if( leftX + stage.getWidth()<img.getRight() ){
    39                 stage.getCamera().translate( 2f, 0, 0 );
    40                 leftX += 2f;
    41             }
    42             else{
    43                 direct = Direct.move_up;
    44             }
    45         }        
    46         else if( direct == Direct.move_left ){
    47             if( leftX > 0 ){
    48                 stage.getCamera().translate( -2f, 0, 0 );
    49                 leftX -= 2f;                
    50             }
    51             else{
    52                 direct = Direct.move_down;
    53             }
    54         }
    55         else if( direct == Direct.move_up ){
    56             if( bottomY + stage.getHeight() < img.getTop() ){
    57                 stage.getCamera().translate( 0, 1.5f, 0 );
    58                 bottomY += 1.5f;                
    59             }
    60             else{
    61                 direct = Direct.move_left;
    62             }
    63         }
    64         else if( direct == Direct.move_down ){
    65             if( bottomY > 0 ){
    66                 stage.getCamera().translate( 0, -1.5f, 0 );
    67                 bottomY -= 1.5f;                
    68             }
    69             else{
    70                 direct = Direct.move_right;
    71             }
    72         }        
    73         
    74         stage.act();
    75         stage.draw();
    76     }
    77 
    78     @Override
    79     public void dispose() {
    80         // TODO Auto-generated method stub
    81         super.dispose();
    82     }
    83 
    84 }

    运行效果:

  • 相关阅读:
    【Spring源码深度解析系列 】Spring整体架构
    【Spring Boot && Spring Cloud系列】在spring-data-Redis中如何使用切换库
    自定义异常
    Java IO
    多线程和虚拟机的宏观理解
    mybatis添加记录时返回主键id
    从JVM角度看i++ 与++i
    JVM指令集介绍
    jvm 指令集代码
    javap -c命令详解
  • 原文地址:https://www.cnblogs.com/MiniHouse/p/3739761.html
Copyright © 2011-2022 走看看