【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-->DrawingSprite2.类名:DrawingSprite(1)绘制线条:线条Line:Line(floatpX1,floatpY1,floatpX2,floatpY2,floatpLineWidth,VertexBufferObjectManagerpVertexBufferObjectManager)
pX1,pY1线条起点位置
pX2,pY1线条终点位置
pLineWidth:线条宽度
setColor(floatpRed,floatpGreen,floatpBlue)线条颜色
pRed红色
pGreen绿色
pBlue蓝色
颜色值最小是0最大是1,平时输入具体的颜色值可以这样输入setColor(204/255,4/255,201/255)
VertexBufferObjectManager顶点缓存对象管理
/**
*画出100条直线,位置、颜色随机
*/
privatevoiddrawingLine(){
finallongRANDOM_SEED=1234567890;//随机数种子
finalRandomrandom=newRandom(RANDOM_SEED);
for(inti=0;i<100;i++){
finalfloatx1=random.nextFloat()*300;//线x起点随机0-300
finalfloatx2=random.nextFloat()*300;//线x终点随机0-300
finalfloaty1=random.nextFloat()*480;//线y起点随机0-480
finalfloaty2=random.nextFloat()*480;//线y终点随机0-480
finalfloatlineWidth=random.nextFloat()*5;//线的宽度随机0-5
finalLineline=newLine(x1,y1,x2,y2,lineWidth,
getVertexBufferObjectManager());//画线
line.setColor(random.nextFloat(),random.nextFloat(),
random.nextFloat());//设置颜色值范围0-1
this.attachChild(line);//加入本场景实体只有加入场景后才会被绘制和更新状态
}
}(2).绘制矩形矩形:Rectangle(floatpX,floatpY,floatpWidth,floatpHeight,VertexBufferObjectManagerpVertexBufferObjectManager)
pX,pY矩形位置
pWidth,pHeight矩形宽高
VertexBufferObjectManager顶点缓存对象管理
/**
*画出4个矩形
*/
privatevoiddrawingRectangle(){
//红色矩形
Rectanglerectangle0=newRectangle(300,120,100,100,
getVertexBufferObjectManager());//绘制矩形,位置x300,位置y120,宽100,高100
rectangle0.setColor(1,0,0);//设置为红色红Red:1即255/255
this.attachChild(rectangle0);//加入本场景实体只有加入场景后才会被绘制和更新状态
//绿色矩形
Rectanglerectangle1=newRectangle(400,120,100,100,
getVertexBufferObjectManager());//绘制矩形,位置x400,位置y120,宽100,高100
rectangle1.setColor(0,1,0);//设置为绿色绿Green:1
this.attachChild(rectangle1);//加入本场景实体只有加入场景后才会被绘制和更新状态
//蓝色矩形
Rectanglerectangle2=newRectangle(300,220,100,100,
getVertexBufferObjectManager());//绘制矩形,位置x300,位置y220,宽100,高100
rectangle2.setColor(0,0,1);//设置为蓝色蓝Blue:1
this.attachChild(rectangle2);//加入本场景实体只有加入场景后才会被绘制和更新状态
//***矩形
Rectanglerectangle3=newRectangle(400,220,100,100,
getVertexBufferObjectManager());//绘制矩形,位置x400,位置y220,宽100,高100
rectangle3.setColor(1,1,0);//设置为红色红Red:1,绿色绿Green:1相加后为***
this.attachChild(rectangle3);//加入本场景实体只有加入场景后才会被绘制和更新状态
}
(3).画图片精灵图片精灵AnimatedSprite(floatpX,floatpY,StringpTextureRegionName,VertexBufferObjectManagerpVertexBufferObjectManager)
pX,pY,精灵位置
pTextureRegionName图片名称
/**
*画图片精灵
*/
privatevoiddrawingPic(){
//画一个精灵
AnimatedSpritepea=newAnimatedSprite(600,30,Regions.PEA,
getVertexBufferObjectManager());//绘制一个图片精灵位置x600,位置y30,图片名称引用Regions.PEA
this.attachChild(pea);//加入本场景实体只有加入场景后才会被绘制和更新状态
}
(4).画动画精灵动画画精灵AnimatedSprite(floatpX,floatpY,StringpTextureRegionName,VertexBufferObjectManagerpVertexBufferObjectManager)
pX,pY,精灵位置
pTextureRegionName图片名称
animate(longpFrameDurationEach)动画精灵的帧速
/**
*画飞机精灵
*/
privatevoiddrawingPlane(){
//画一个动画精灵
AnimatedSpriteplane=newAnimatedSprite(610,140,Regions.PLANE,
getVertexBufferObjectManager());//绘制动画精灵,位置x610,位置y140,图片名称引用Regions.PLANE
this.attachChild(plane);//加入本场景实体只有加入场景后才会被绘制和更新状态
//播放帧速,每帧的持续时间,以毫秒为单位计算
plane.animate(180);
plane.setIgnoreTouch(false);//设置阻止触摸为false
}
(6).删除精灵Entity:attachChild(IEntitypEntity);attachChild加入一个实体
detachChild(IEntitypEntity);detachChild删除一个实体
/**
*精灵删除
*/
privatevoidremovingSprite(){
ButtonSpritebtnSprite=newButtonSprite(610,200,Regions.BACK_BTN,
getVertexBufferObjectManager());//绘制一个按钮精灵位置x610,位置y200,图片名称引用Regions.BACK_BTN
this.attachChild(btnSprite);//加入本场景实体只有加入场景后才会被绘制和更新状态
btnSprite.setOnClickListener(newOnClickListener(){//注册按键监听
@Override
publicvoidonClick(ButtonSpritepButtonSprite,//响应点击
floatpTouchAreaLocalX,floatpTouchAreaLocalY){
System.out.println("detachbtnSprite");
DrawingSprite.this.detachChild(pButtonSprite);//删除实体实体删除后不在绘制和更新状态
}
});
}
}
OGE_Example项目源码
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。