开源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介绍