首页 > 代码库 > 【开源java游戏框架libgdx专题】-10-核心库-Viewport
【开源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.cn10 * @qq 98413718311 */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 @Override21 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.cn43 * @qq 98413718344 */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 @Override58 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 @Override75 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。