开源java游戏框架libgdx专题-10-核心库-Viewport

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开源java游戏框架libgdx专题-10-核心库-Viewport相关的知识,希望对你有一定的参考价值。

Viewport类,又称为视口类,主要负责管理游戏相机,处理游戏世界坐标与布景层坐标的换算关系。在移动端开发,不像PC端容易。因为要适配不同分辨率的设备。libgdx处理不同的设备屏幕时,用视口处理舞台与相机的关系。主要使用其子类。
7种Viewport类型:
StretchViewport:伸展视口,支持设备宽度与高度比改变,根据参数内的宽度和高度来自动适应不同设备的屏幕
FitViewport:会保持自身参数内的宽度与高度比,并以此为依据尽量拉伸类适应屏幕。可能出现黑边。
FillViewport:填充视口。保持了布景尺寸层尺寸的纵横比,但是与FitViewport不同,该视口总是填满整个屏幕
ScreenViewport:屏幕视口。不参照虚拟屏幕尺寸,总是填满整个窗口,不拉伸也不出现黑边。可能导致部分游戏内容在小屏幕上无法显示。
ExtendViewport:延展视口。保持游戏世界的纵横比,不会出现黑边。未填满游戏窗口的部分会被拉伸,超过屏幕的游戏世界会沿着该方向延展。
StaticViewport:静态视口。不支持任何延展,始终保持一个固定纵横比。
ScalingViewport:放缩视口。可根据比例自动适配设备屏幕。
构造方法:
ExtendViewport(float minWorldWidth,float minWorldHeight):延展视口,第一个参数代表世界的最小宽度,第二参数代表游戏世界的最小高度。
ScreenViewport(Camera camera):屏幕视口。视口内相机使用参数内相机。对于无参方法默认使用正交投影相机。
ScalingViewport(Scaling scaling,float worldWidth,float worldHeight):放缩视口。第一个参数传入放缩模式,第二个和第三个参数代表游戏世界的宽度和高度
StretchViewport(float worldWidth,float worldHeight,Camera camera):伸展视口。第一和第二个参数代表世界的宽度和高度,第三个参数代表渲染使用的相机。
FillViewport(float worldWidth,float worldHeight,Camera camera):填充视口。第一个和第二个参数代表世界的宽度和高度,第三个参数代表渲染使用的相机
FitViewport(float worldWidth,float worldHeight,Camera camera):第一个参数和第二个参数代表世界的宽度和高度,第三个参数代表渲染使用的相机。
 实例代码:
 1 package com.mygdx.viewport;
 2 
 3 import com.badlogic.gdx.graphics.Texture;
 4 import com.badlogic.gdx.graphics.g2d.Batch;
 5 import com.badlogic.gdx.scenes.scene2d.Actor;
 6 /**
 7  * 我的演员类
 8  * @author Jack(乐智)
 9  * @blog dtblog.cn
10  * @qq 984137183
11  */
12 public class MyActor extends Actor {
13     private Texture texture;
14     public MyActor(){
15         this.init();
16     }
17     private void init() {
18         texture=new Texture("badlogic.jpg");
19     }
20     @Override
21     public void draw(Batch batch, float parentAlpha) {
22         batch.draw(texture, 0, 0);
23     }
24     
25 }
26 
27 
28 package com.mygdx.viewport;
29 
30 import com.badlogic.gdx.ApplicationAdapter;
31 import com.badlogic.gdx.Gdx;
32 import com.badlogic.gdx.graphics.GL20;
33 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
34 import com.badlogic.gdx.scenes.scene2d.Stage;
35 import com.badlogic.gdx.utils.viewport.ExtendViewport;
36 import com.badlogic.gdx.utils.viewport.ScreenViewport;
37 import com.badlogic.gdx.utils.viewport.StretchViewport;
38 
39 /**
40  * 伸展视口
41  * @author Jack(乐智)
42  * @blog dtblog.cn
43  * @qq 984137183
44  */
45 public class UseStretchViewport extends ApplicationAdapter{
46     //精灵画笔
47     public SpriteBatch batch;
48     //声明演员
49     public MyActor actor;
50     //声明舞台
51     public Stage stage;
52     //声明伸展视口,等比缩放
53     private StretchViewport viewport;
54     //声明延展视口
55     private ExtendViewport extViewport;
56     private ScreenViewport screenViewport;//屏幕视口
57     @Override
58     public void create() {
59         //初始化精灵画笔
60         batch=new SpriteBatch();
61         //初始化演员
62         actor=new MyActor();
63         viewport=new StretchViewport(800, 480);
64         extViewport =new ExtendViewport(200, 200);
65         screenViewport=new ScreenViewport();
66         //初始化舞台
67         //        stage=new Stage(viewport);
68         //        stage=new Stage(extViewport );
69         stage=new Stage(screenViewport);
70         //添加演员
71         stage.addActor(actor);
72 
73     }
74     @Override
75     public void render() {
76         //设置背景颜色
77         Gdx.gl.glClearColor(1, 1, 1, 1);
78         Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
79         //更新舞台逻辑
80         stage.act();
81         //绘制舞台内容
82         stage.draw();
83     }
84 
85 }

原文由博主 乐智 编辑撰写,版权归博主所有。

原文地址 http://www.dtblog.cn/1147.html 转载请注明出处!

以上是关于开源java游戏框架libgdx专题-10-核心库-Viewport的主要内容,如果未能解决你的问题,请参考以下文章

开源java游戏框架libgdx专题-04-接口介绍及生命周期

开源java游戏框架libgdx专题-01-libgdx介绍

开源java游戏框架libgdx专题-08-中文显示与绘制

开源java游戏框架libgdx专题-06-使用libgdx自带的日志方法

开源java游戏框架libgdx专题-07-文件处理

开源java游戏框架libgdx专题-09-动画的使用