前言:

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

正文:

首先,先解说一下这个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());//绘制一个button精灵 位置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项目源代码

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

  1. Ionic 入门与实战之第二章第一节:Ionic 环境搭建之开发环境配置

    原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第二章第一节,主要对 Ionic 的开发环境配置做了简要的介绍,本文介绍的开发环境为 Mac 系统,Windows 系统基本类似,少许 ...

  2. 第一节,TensorFlow基本用法

    一 TensorFlow安装 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tsnsor(张量)意味着N维数组,Flow(流)意味着基 ...

  3. ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪

    ASP.NET MVC深入浅出(被替换)   一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...

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

    首先欢迎您来到本书的第二境,本境,我们将全力打造一个实际生产环境可用的爬虫应用了.虽然只是刚开始,虽然路漫漫其修远,不过还是有点小鸡冻:P 本境打算针对几大派生类做进一步深耕,包括与应用的结合.对比它 ...

  5. 第一节:《线程安全和锁Synchronized概念》

    第一节:线程安全和锁Synchronized概念 一.进程与线程的概念 (1)在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单位都是进程. 在未配置 OS 的系统中,程序的执行方 ...

  6. android内部培训视频_第一节

    声明:本视频为公司内部做android培训时录制的,无任何商业目的.同时鉴于水平有限,可能不符合您的需求,放在这里的目的是提供给公司同事下载,作为培训的一个记录,也作为一个系列教程的自我督促完成的理由 ...

  7. 我的第一节Android课

    我的第一节安卓课程,今天非比寻常的一天,我开始了我程序猿之路的第一节安卓课程,安卓课程只是我的一个兴趣班,我的本专业是java开发,因为喜欢做一个属于自己的一个手机APP,就选多个一样技能,毕竟十八般 ...

  8. 第四章 跨平台图像显示库——SDL 第一节 与SDL第一次亲密接触

    http://blog.csdn.net/visioncat/article/details/1596576 GCC for Win32 开发环境介绍(5) 第四章 跨平台图像显示库——SDL 第一节 ...

  9. Centos7 Openstack - (第一节)基本环境配置

    Centos7 install Openstack - (第一节)基本环境配置 我的blog地址:http://www.cnblogs.com/caoguo 根据openstack官方文档配置 官方文 ...

随机推荐

  1. @转EXT2->EXT3->EXT4

    Linux文件系统第一篇—从Ext2到Ext3再到Ext4 1 概述 Linux继承了UNIX一切皆文件的设计哲学,用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文 ...

  2. PHP版本 D-Link 动态域名客户端

    <?php /* * D-Link 动态域名客户端.主域名www.dlinkddns.com 和 www.dlinkddns.com.cn * 首先获取外网IP,若IP没有变化,则结束运行:否则 ...

  3. animation-list -帧动画

    帧动画实现起来比较简单,今天接触到使用xml来创建帧动画,记录下来. 它说白了,其实就是动态的展示图片而已 1.在xml中定义帧动画,如下 <?xml version="1.0&quo ...

  4. OpenCV func

    cvLoadImage("lena.jpg", CV_LOAD_IMAGE_COLOR);  //CV_LOAD_IMAGE_GRAYSCALE   //0

  5. 00103_死锁、Lock接口、等待唤醒机制

    1.死锁 (1)同步锁使用的弊端:当线程任务中出现了多个同步(多个锁)时,如果同步中嵌套了其他的同步.这时容易引发一种现象:程序出现无限等待,这种现象我们称为死锁.这种情况能避免就避免掉: synch ...

  6. UVA - 1161 Objective: Berlin(最大流+时序模型)

    题目大意:有n个城市m条航线.给出每条航线的出发地,目的地,座位数,起飞时间和到达时间(所给形式为HHMM.记得转化),再给出城市A和B.和到达城市B的最晚时间.如今问一天内最多有多少人能从A飞到B, ...

  7. 15、USB摄像头图片采集+QT显示

    一.Qt的下载和的安装 关于Qt的安装,网络上有很详细的介绍.这里只做简单介绍. 需要的安装包一共有两个:Qt Creator 和QTE. 1)QT Creator 下载地址:qt-sdk-linux ...

  8. 【Codeforces Round #185 (Div. 2) B】Archer

    [链接] 链接 [题意] 在这里输入题意 [题解] 概率水题. 枚举它是第几轮成功的. 直到满足精度就好 [错的次数] 1 [反思] long double最让人安心. [代码] #include & ...

  9. Nginx+Tomcat+Memcached实现会话保持(MSM)

    会话保持的三种方式 Session sticky会话绑定:通过在前端调度器的配置中实现统一session发送至同一后发端服务器 Session cluster会话集群:通过配置Tomcat保持所有To ...

  10. 看朋友日志发现的一个ios下block相关的内存管理问题,非常奇怪,请大家帮忙一起来回答!

    http://blog.csdn.net/fengsh998/article/details/38090205 这篇文章以下是我的回复.相同的代码仅仅是把变量的定义从局部变量改为类的成员变量就发现了非 ...