1.父亲和儿子的关系

我们可以Entity类看到非常多parent(父)与child(子)这种字眼,这是游戏引擎中常有的概念,简单而言是一种has-a的关系

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvT3JhbmdlR2FtZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

相应代码:

B.attachChild(A);

B.attachChild(C);

C.attachChild(D);

从代码和图片能够看出

B没有父

B的子是A、C

A和C的父都是B

C的子是D

D的父是C

2.实体的相对布局

在Entity方法中。Entity经常使用相对布局来实现界面效果,并且能够利用相对布局达到适配的效果。

private void initRectangle() {

// white_rect对象在当前Scene中居中摆放

Rectangle white_rect=new Rectangle(0,0,100,100,

this.getVertexBufferObjectManager());

white_rect.setCentrePosition(TestScene.this.getCameraWidth() /2,

TestScene.this.getCameraHeight() /2);

// 将white_rect对象加入至场景TestScene

TestScene.this.attachChild(white_rect);

的矩形

green_rect=new Rectangle(0,0,50,50,this.getVertexBufferObjectManager());

// white_rect的顶部Y值将设置在white_rect的底部

green_rect.setTopPositionY(white_rect.getBottomY());

// green_rect的中心X与white_rect的中心X一致

green_rect.setCentrePositionX(white_rect.getCentreX());

green_rect.setColor(Color.GREEN);

// 将green_rect对象加入至场景TestScene

TestScene.this.attachChild(green_rect);

}

3.Layer

图层的基类是Entity,图层是逐个叠加的。类似于制作卡通动画时所用的赛璐珞。图层用来对场景中的Sprite等实体进行管理控制。以便在同一场景使用不同的图层达到表现效果。

如天天酷跑,有了图层,我们能够将RPG游戏中的button,状态放在一个场景中,游戏内容能够放到还有一个图层中,这样就不会相互干扰了。

4.ZIndex的使用

有时候由于需求。须要将原本在底部的Entity置顶,那么就须要用到ZIndex这个參数,两者对照,ZIndex较大的Entity在上面,所以设置好ZIndex的值后,用sortChildren对其又一次排序。

5.IEntityGroup

仅仅有实现这个接口的类才干够进行这种操作,这种嵌套方式能够让开发自行定义游戏层级结构

LayerA.attachChild(layerB);

LayerB.attachChild(layerC);

6.适配原理(多分辨率支持策略和原理)

游戏设计分辨率:

我们自定义游戏的分辨率是多少(比如800×480),然后UI依据这个分辨率来进行画图

手机屏幕分辨率:手机自身屏幕的分辨率

期望分辨率=游戏设计分辨率

实际分辨率=手机屏幕分辨率

首先确定是横屏游戏还是竖屏游戏,如果手机是320×480,是竖屏游戏,而且游戏设计分辨率是480×800

举例:以保持宽不变,高适配。

如果UI给的图是480×800

屏幕宽高比=实际分辨率宽(320)/实际分辨率高(480)=期望分辨率宽(480)/期望分辨率高

,那么空出来那80=800-720部分就是图中没有阴影的那一部分。

在手机显示效果图

1. @Override

2. protectedPixelPerfectEngineOptions onCreatePixelPerfectEngineOptions() {

3.     PixelPerfectEngineOptionspixelPerfectEngineOptions = new PixelPerfectEngineOptions(this,ZoomCamera.class);

4.     pixelPerfectEngineOptions.setDesiredSize(480);

5.     pixelPerfectEngineOptions.setScreenOrientation(ScreenOrientation.PORTRAIT_FIXED);

6.     pixelPerfectEngineOptions.setPixelPerfectMode(PixelPerfectMode.CHANGE_HEIGHT);

7.     returnpixelPerfectEngineOptions;

8. }

复制代码

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvT3JhbmdlR2FtZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

相应源代码

public EngineOptions createEngineOptions() {

float[] screenSize = this.getScreenSize();

float screenWidth = screenSize[0];

float screenHeight = screenSize[1];

float screenRatio = screenWidth / screenHeight;

float cameraWidth = this.mDesiredSize;

float cameraHeight = this.mDesiredSize;

if (this.mPixelPerfectMode == PixelPerfectMode.CHANGE_WIDTH) {

cameraWidth = this.mDesiredSize * screenRatio;

} else if (this.mPixelPerfectMode == PixelPerfectMode.CHANGE_HEIGHT) {

cameraHeight = this.mDesiredSize / screenRatio;

}

Class<?

>[] parameterTypes = { float.class, float.class, float.class,float.class };

Object[] argParam = { 0.0f, 0.0f, cameraWidth, cameraHeight };

Camera camera = ReflectionUtils.newInstance(this.mCameraCls, parameterTypes, argParam);

EngineOptions engineOptions = new EngineOptions(true, this.mScreenOrientation, new FillResolutionPolicy(), camera);

engineOptions.getTouchOptions().setNeedsMultiTouch(true);

engineOptions.getAudioOptions().setNeedsSound(true);

engineOptions.getAudioOptions().setNeedsMusic(true);

engineOptions.getRenderOptions().setDithering(true);

return engineOptions;

}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

【v2.x OGE课程 15】 布局相关的更多相关文章

  1. 【v2.x OGE课程 14】 控制使用

    在这里,精灵.动画精灵.button天才.经常使用的文本的使用 一个.相关精灵 1.加入精灵 //创建精灵 Sprite bar_up = new Sprite(400, 0, RegionRes.g ...

  2. Linux课程---15、域名相关

    Linux课程---15.域名相关 一.总结 一句话总结: 先购买域名,再备案,再解析,域名即可使用 1.域名备案是怎么回事(比如二级域名,三级域名)? 每个二级域名需要备案一次,三级域名不需要备案, ...

  3. amazeui学习笔记--css(布局相关3)--辅助类Utility

    amazeui学习笔记--css(布局相关3)--辅助类Utility 一.总结 1.元素清除浮动: 添加 am-cf 这个 class 即可 2.水平滚动: .am-scrollable-horiz ...

  4. display属性的表格布局相关属性

    基于CSS属性display:table的表格布局的使用   项目改造中遇到DIV+CSS实现的table,新需求需要在表格使用单元格合并,网上调查返现CSS display:table实现的tabl ...

  5. laravel基础课程---15、分页及验证码(lavarel分页效果如何实现)

    laravel基础课程---15.分页及验证码(lavarel分页效果如何实现) 一.总结 一句话总结: 数据库的paginate方法:$data=\DB::table("user" ...

  6. js课程 1-5 js如何测试变量的数据类型

    js课程 1-5 js如何测试变量的数据类型 一.总结 一句话总结:用typeof()方法. 1.js如何判断变量的数据类型? 用typeof()方法. 13 v=10; 14 15 if(typeo ...

  7. Spider Studio 新版本 (20140225) - 设置菜单调整 / 提供JQueryContext布局相关的方法

    这是年后的第一个新版本, 包含如下: 1. 先前去掉的浏览器设置功能又回来了! 说来惭愧, 去掉了这两个功能之后发现浏览经常会被JS错误打断, 很不方便, 于是乎又把它们给找回来了. :) 2. 为J ...

  8. mysql数据库优化课程---15、mysql优化步骤

    mysql数据库优化课程---15.mysql优化步骤 一.总结 一句话总结:索引优化最立竿见影 1.mysql中最常用最立竿见影的优化是什么? 索引优化 索引优化,不然有多少行要扫描多少次,1亿行大 ...

  9. amazeui学习笔记--css(布局相关1)--网格Grid

    amazeui学习笔记--css(布局相关1)--网格Grid 一.总结 基本使用 1.div+class布局:amaze里面采取的就是div+class的布局方式  <div class=&q ...

随机推荐

  1. 远离“精神乞丐”(IBM的前CEO郭士纳把员工分为四种类型)

    语音丨吴伯凡 乞丐与其说是一种身份, 不如说是一种精神状态, 习惯性索取且心安理得, 习惯性寻求安慰,习惯性抱怨, 与之截然对立的, 是“操之在我”(Proactive)的精神, 乞丐型员工是公司内部 ...

  2. js课程 1-3 Javascript变量类型详解

    js课程 1-3  Javascript变量类型详解 一.总结 一句话总结:js对象点(属性方法),json对象冒号(属性方法).属性和方法区别只有一个括号. 1.json对象中的函数的使用? 函数名 ...

  3. Powerful Bash-style command line editing for cmd.exe

    https://mridgers.github.io/clink/ Clink Powerful Bash-style command line editing for cmd.exe Downloa ...

  4. 【22.17%】【codeforces718B】 Efim and Strange Grade

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  5. [Angular] Implementing a ControlValueAccessor

    So when you need to create a ControlValueAccessor? When you want to use a custom component as form c ...

  6. SPOJ4491. Primes in GCD Table(gcd(a,b)=d素数,(1&lt;=a&lt;=n,1&lt;=b&lt;=m))加强版

    SPOJ4491. Primes in GCD Table Problem code: PGCD Johnny has created a table which encodes the result ...

  7. thinkphp5如何使用ajax(变化的核心,也就是ajax作用的核心是什么)

    thinkphp5如何使用ajax(变化的核心,也就是ajax作用的核心是什么) 一.总结 一句话总结:ajax的核心在于页面的不刷新而获取后台数据,所以后台的操作还是一样(获取参数,返回数据),只是 ...

  8. 前端切图:一个好看的表格css样式

    <!DOCTYPE html><html>        <head>        <meta charset="UTF-8">  ...

  9. js实现去文本换行符小工具

    js实现去文本换行符小工具 一.总结 一句话总结: 1.vertical属性使用的时候注意看清定义,也注意父元素的基准线问题.vertical-align:top; 2.获取textareaEleme ...

  10. http协议头文件的控制信息(转)

    通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息.这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成.HTTP的头域包括通用头,请求头,响应 ...