【v2.x OGE-example 第一节】 绘制实体

【v2.x OGE-example 第一节】 绘制实体

前言:

OGE即 OGEngine,是由橙子游戏开发的基于Java支持跨平台的开源游戏引,从12年4月项目成立至今已经有2年多的发展历程。在此期间基于OGEngine开发的项目已经有很多成功投放市场。从正式开源开始,好多开发者开始加入OGEngine的行列,同时在官网、论坛、Q群、看到有好多的问题,大部分是一些新手的问题,经常会被重复的提问。有些是之前用过AndEngine的,对OGEngine的使用会有些出入,开发时不是很顺手。为此今天开始写一个OGE-Example;大家在学习OGEengine时可参考这些例子,应该会更容易上手些。

正文:

首先,先讲解一下这个OGE-example的思路框架,这些案例都会放到一个项目里,用list显示,会分两级菜单,从最简单开始,后续会随着引擎的发展在加入一些例子,也都会放在这个项目里边,方便大家学习和使用。

一、导入OGE-example注意事项:

1.先学习想要运行平台下的环境搭建android搭建:http://dev.ogengine.com/forum.php?mod=viewthread&tid=629&extra=page%3D1,或ios搭建:http://dev.ogengine.com/forum.php?mod=viewthread&tid=631&extra=page%3D1

2.OGE-example项目现支持两个平台运行(android和ios),这些案例会用到一些图片和字

体,需要把这些资源加载到对应的启动器里边(android和ios启动器);

放在Android启动器下:

 

放在IOS启动器下:

OGE-example 项目结构:

第一章

第一节:实体的绘制

1. 位置:Drawing_example --> DrawingSprite
2. 类名:DrawingSprite

(1)绘制线条:

线条Line:Line(float pX1, float pY1, float pX2, float pY2, float pLineWidth, VertexBufferObjectManager pVertexBufferObjectManager)

pX1,pY1线条起点位置

pX2,pY1线条终点位置

pLineWidth:线条宽度

setColor(float pRed, float pGreen, float pBlue)线条颜色

pRed红色

pGreen绿色

pBlue蓝色

颜色值最小是0最大是1,平时输入具体的颜色值可以这样输入 setColor(204/255,4/255,201/255)

VertexBufferObjectManager顶点缓存对象管理

/**

* 画出100条直线,位置、颜色随机

*/

private void drawingLine() {

final long RANDOM_SEED = 1234567890;//随机数种子

final Random random = new Random(RANDOM_SEED);

for (int i = 0; i < 100; i++) {

final float x1 = random.nextFloat() * 300;//线x起点 随机0-300

final float x2 = random.nextFloat() * 300;//线x终点 随机0-300

final float y1 = random.nextFloat() * 480;//线y起点 随机0-480

final float y2 = random.nextFloat() * 480;//线y终点 随机0-480

final float lineWidth = random.nextFloat() * 5;//线的宽度 随机0-5

final Line line = new Line(x1, y1, x2, y2, lineWidth,

getVertexBufferObjectManager());//画线

line.setColor(random.nextFloat(), random.nextFloat(),

random.nextFloat());//设置颜色值 范围0-1

this.attachChild(line);//加入本场景 实体只有加入场景后才会被绘制和更新状态

}

}
(2).绘制矩形

矩形:Rectangle(float pX, float pY, float pWidth, float pHeight, VertexBufferObjectManager pVertexBufferObjectManager)

pX, pY 矩形位置

pWidth,pHeight 矩形宽高

VertexBufferObjectManager 顶点缓存对象管理

/**

* 画出4个矩形

*/

private void drawingRectangle() {

// 红色矩形

Rectangle rectangle0 = new Rectangle(300, 120, 100, 100,

getVertexBufferObjectManager());//绘制矩形,位置x300,位置y120,宽100,高100

rectangle0.setColor(1, 0, 0);//设置为红色 红Red:1 即255/255

this.attachChild(rectangle0);//加入本场景 实体只有加入场景后才会被绘制和更新状态

// 绿色矩形

Rectangle rectangle1 = new Rectangle(400, 120, 100, 100,

getVertexBufferObjectManager());//绘制矩形,位置x400,位置y120,宽100,高100

rectangle1.setColor(0, 1, 0);//设置为绿色 绿Green:1

this.attachChild(rectangle1);//加入本场景 实体只有加入场景后才会被绘制和更新状态

// 蓝色矩形

Rectangle rectangle2 = new Rectangle(300, 220, 100, 100,

getVertexBufferObjectManager());//绘制矩形,位置x300,位置y220,宽100,高100

rectangle2.setColor(0, 0, 1);//设置为蓝色 蓝Blue:1

this.attachChild(rectangle2);//加入本场景 实体只有加入场景后才会被绘制和更新状态

// ***矩形

Rectangle rectangle3 = new Rectangle(400, 220, 100, 100,

getVertexBufferObjectManager());//绘制矩形,位置x400,位置y220,宽100,高100

rectangle3.setColor(1, 1, 0);//设置为红色 红Red:1,绿色 绿Green:1 相加后为***

this.attachChild(rectangle3);//加入本场景 实体只有加入场景后才会被绘制和更新状态

}

(3).画图片精灵

图片精灵AnimatedSprite(float pX, float pY, String pTextureRegionName, VertexBufferObjectManager pVertexBufferObjectManager)

pX,  pY,精灵位置

pTextureRegionName 图片名称

/**

* 画图片精灵

*/

private void drawingPic() {

// 画一个精灵

AnimatedSprite pea = new AnimatedSprite(600, 30, Regions.PEA,

getVertexBufferObjectManager());//绘制一个图片精灵 位置x 600 ,位置y 30, 图片名称引用Regions.PEA

this.attachChild(pea);//加入本场景 实体只有加入场景后才会被绘制和更新状态

}

(4).画动画精灵

动画画精灵AnimatedSprite(float pX, float pY, String pTextureRegionName, VertexBufferObjectManager pVertexBufferObjectManager)

pX,  pY,精灵位置

pTextureRegionName 图片名称

animate(long pFrameDurationEach)动画精灵的帧速

/**

* 画飞机精灵

*/

private void drawingPlane() {

// 画一个动画精灵

AnimatedSprite plane = new AnimatedSprite(610, 140, Regions.PLANE,

getVertexBufferObjectManager());//绘制动画精灵, 位置x 610 ,位置y 140, 图片名称引用Regions.PLANE

this.attachChild(plane);//加入本场景 实体只有加入场景后才会被绘制和更新状态

// 播放帧速 , 每帧的持续时间 , 以毫秒为单位计算

plane.animate(180);

plane.setIgnoreTouch(false);//设置阻止触摸为false

}

(6). 删除精灵

Entity:attachChild(IEntity pEntity);attachChild加入一个实体

detachChild(IEntity pEntity);detachChild删除一个实体

/**

* 精灵删除

*/

private void removingSprite() {

ButtonSprite btnSprite = new ButtonSprite(610, 200, Regions.BACK_BTN,

getVertexBufferObjectManager());//绘制一个按钮精灵 位置x 610 ,位置y 200, 图片名称引用Regions.BACK_BTN

this.attachChild(btnSprite);//加入本场景 实体只有加入场景后才会被绘制和更新状态

btnSprite.setOnClickListener(new OnClickListener() {//注册按键监听

@Override

public void onClick(ButtonSprite pButtonSprite,//响应点击

float pTouchAreaLocalX, float pTouchAreaLocalY) {

System.out.println("detach btnSprite");

DrawingSprite.this.detachChild(pButtonSprite);//删除实体 实体删除后不在绘制和更新状态

}

});

}

}

OGE_Example项目源码

时间: 2024-10-13 08:49:40

【v2.x OGE-example 第一节】 绘制实体的相关文章

&#8203;【v2.x OGE-example 第二节】 实体参数

[v2.x OGE-example 第二节] 实体参数 1. 位置:Drawing_example --> SpriteParameters 2. 类名:SpriteParameters (1)旋转精灵: sprite.setRotation(float pRotation) 设置旋转角度 sprite.setRotationCenter(float pRotationCenterX, float pRotationCenterY)//设置旋转的中心点(以某个点为中心旋转) sprite.set

【v2.x OGE教程 11】 动画编辑器帮助文档

[v2.x OGE教程 11] 动画编辑器帮助文档 版本号 日期 作者 说明 1.0 2014-9-3 橙子游戏 文档创建       一.简单介绍 动画编辑器用于游戏动画的可视化编辑,支持序列帧动画和关键帧动画.通过解析生成的数据文件就可以获取动画信息,并能随时调整,以降低开发工作量.提高开发效率. 二.相关概念 1. 帧 帧是动画在某个时间点的状态.一系列的帧组成了动画的时间线.动画播放时.通过帧的切换,实现动画效果 2. 序列帧 序列帧组成序列帧动画,这样的动画中.仅通过静态图片的切换来实

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一、 除夕诗词概述 二、元日诗词概述 三、 元宵诗词概述 第二节:春节古诗词拾萃

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一. 除夕诗词概述 二.元日诗词概述 三. 元宵诗词概述 第二节:春节古诗词拾萃 一.腊祭诗词 二.祭灶诗词 三.除夕诗词 四.元旦诗词 五.人日诗词 六.元宵诗词 第一节:春节古诗词概述 中国的春节,作为除旧迎新的节日,时间相当长,从年前的腊月二十三,天空中就似乎弥漫了节日的气息.这种节日的气氛,在保持传统风俗较好的地方,甚至会持续到二月二龙抬头的时候,但欢度春节的高潮,应该说是自除夕始一直到上元之夜.因此,历代歌咏和反

【v2.x OGE教程 12】 关卡编辑器帮助文档

[v2.x OGE教程 12] 关卡编辑器帮助文档 一.简介 关卡编辑器用于游戏关卡界面元素的可视化编辑,包括元素的位置.尺寸以及其它自定义属性.通过解析生成的数据文件即可获取关卡信息,并能随时调整,以减少开发工作量,提高开发效率. 二.界面 主界面 图01_主界面 1) 画布 ① 简介 画布用于关卡元素的预览,并提供元素选择和坐标设置等功能:画布的尺寸与其正在显示的关卡的尺寸相同 图02_画布 ② 选择元素 a. 单选:鼠标左键单击即可选中单个元素,选中后的元素周围出现蓝色的方框,未选中的则为

【软件构造】第六章第一节 可维护性的度量与构造原则

第六章第一节 可维护性的度量与构造原则 本章面向另一个质量指标:可维护性--软件发生变化时,是否可以以很小的代价适应变化? 本节是宏观介绍:(1)什么是软件维护:(2)可维护性如何度量:(3)实现高可维护性的设计原则--很抽象. Outline 软件的维护和演化 可维护性的常见度量指标 聚合度与耦合度 面向对象五大原则SOLID 单一职责原则SRP(Single Responsibility Principle) 开放封闭原则OCP(Open-Close Principle) 里式替换原则LSP

【计算机网络】第一章第一节 计算机网络的基本概念

第一章第一节 计算机网络的基本概念 第一章概述了计算机网络和因特网,这一章从整体上粗线条地勾画出计算机网络的概貌和全课程的框架 Outline 计算机网络的具体构成描述 协议 Notes ## 计算机网路的具体构成描述  [计算机网络的定义] 计算机网络是 通信技术 与 计算机技术 紧密结合的产物 计算机网络就是 互连的.自治的 计算机集合 自治:无主从关系 互连:互联互通 计算机网络就是一种特殊的通信网络(信源和信宿都是计算机.传输数字化信息) [具体构成] 主机:处在因特网的边缘部分的设备都

萌新向Python数据分析及数据挖掘 第一章 Python基础 第一节 python安装以及环境搭建 第二节 变量和简单的数据类型

本文将参考<Python编程 从入门到实践>的讲述顺序和例子,加上自己的理解,让大家快速了解Python的基础用法,并将拓展内容的链接添加在相关内容之后,方便大家阅读. 好了!我们开始第一章的学习. 第一章 Python基础 第一节 Python安装以及环境搭建 Python的安装和环境变量的配置通过百度查询即可解决,这里不作赘述. IDE的选择:因为后期需要用来做数据分析,所以直接安装Anaconda会是一个不错的选择. Anaconda详细安装使用教程 https://blog.csdn.

《C# 爬虫 破境之道》:第二境 爬虫应用 — 第一节:HTTP协议数据采集

首先欢迎您来到本书的第二境,本境,我们将全力打造一个实际生产环境可用的爬虫应用了.虽然只是刚开始,虽然路漫漫其修远,不过还是有点小鸡冻:P 本境打算针对几大派生类做进一步深耕,包括与应用的结合.对比它们之间的区别.综合共性.封装.One-By-One. System.IO.Packaging.PackWebRequest System.Net.FileWebRequest System.Net.FtpWebRequest System.Net.HttpWebRequest 第一节,我们先来说说最

火云开发课堂 - 《Shader从入门到精通》系列 第一节:Shader介绍与工程搭建

<Shader从入门到精通>系列在线课程 第一节:Shader介绍与工程搭建 视频地址:http://edu.csdn.net/course/detail/1441/22665?auto_start=1 交流论坛:http://www.firestonegames.com/bbs/forum.php 工程下载地址:请成为正式学员获取工程 课程截图: 项目实例: 版权声明:本文为博主原创文章,未经博主允许不得转载.