溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

【v2.x OGE-example 第一節(jié)】 繪制實(shí)體

發(fā)布時(shí)間:2020-07-18 11:36:48 來源:網(wǎng)絡(luò) 閱讀:546 作者:橙游Orange 欄目:移動(dòng)開發(fā)

v2.x OGE-example 第一節(jié) 繪制實(shí)體

前言:

    OGE即 OGEngine,是由橙子游戲開發(fā)的基于Java支持跨平臺(tái)的開源游戲引,從124項(xiàng)目成立至今已經(jīng)有2年多的發(fā)展歷程。在此期間基于OGEngine開發(fā)的項(xiàng)目已經(jīng)有很多成功投放市場(chǎng)。從正式開源開始,好多開發(fā)者開始加入OGEngine的行列,同時(shí)在官網(wǎng)、論壇、Q群、看到有好多的問題,大部分是一些新手的問題,經(jīng)常會(huì)被重復(fù)的提問。有些是之前用過AndEngine的,對(duì)OGEngine的使用會(huì)有些出入,開發(fā)時(shí)不是很順手。為此今天開始寫一個(gè)OGE-Example;大家在學(xué)習(xí)OGEengine時(shí)可參考這些例子,應(yīng)該會(huì)更容易上手些。

 

正文:

     首先,先講解一下這個(gè)OGE-example的思路框架,這些案例都會(huì)放到一個(gè)項(xiàng)目里,用list顯示,會(huì)分兩級(jí)菜單,從最簡(jiǎn)單開始,后續(xù)會(huì)隨著引擎的發(fā)展在加入一些例子,也都會(huì)放在這個(gè)項(xiàng)目里邊,方便大家學(xué)習(xí)和使用。

一、導(dǎo)入OGE-example注意事項(xiàng):

1.先學(xué)習(xí)想要運(yùn)行平臺(tái)下的環(huán)境搭建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項(xiàng)目現(xiàn)支持兩個(gè)平臺(tái)運(yùn)行(androidios),這些案例會(huì)用到一些圖片和字

體,需要把這些資源加載到對(duì)應(yīng)的啟動(dòng)器里邊(androidios啟動(dòng)器);

放在Android啟動(dòng)器下:

【v2.x OGE-example 第一節(jié)】 繪制實(shí)體 【v2.x OGE-example 第一節(jié)】 繪制實(shí)體

放在IOS啟動(dòng)器下:

【v2.x OGE-example 第一節(jié)】 繪制實(shí)體 

 

OGE-example 項(xiàng)目結(jié)構(gòu):

【v2.x OGE-example 第一節(jié)】 繪制實(shí)體 

第一章

第一節(jié):實(shí)體的繪制

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

【v2.x OGE-example 第一節(jié)】 繪制實(shí)體 

 

(1)繪制線條:

 線條LineLine(float pX1, float pY1, float pX2, float pY2, float pLineWidth, VertexBufferObjectManager pVertexBufferObjectManager)

pX1pY1線條起點(diǎn)位置

pX2,pY1線條終點(diǎn)位置

pLineWidth:線條寬度

setColor(float pRed, float pGreen, float pBlue)線條顏色 

pRed紅色

pGreen綠色

pBlue藍(lán)色

顏色值最小是0最大是1,平時(shí)輸入具體的顏色值可以這樣輸入 setColor(204/255,4/255,201/255

VertexBufferObjectManager頂點(diǎn)緩存對(duì)象管理

 

/**

 * 畫出100條直線,位置、顏色隨機(jī)

 */

private void drawingLine() {

final long RANDOM_SEED = 1234567890;//隨機(jī)數(shù)種子

final Random random = new Random(RANDOM_SEED);

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

final float x1 = random.nextFloat() * 300;//x起點(diǎn) 隨機(jī)0-300

final float x2 = random.nextFloat() * 300;//x終點(diǎn) 隨機(jī)0-300

final float y1 = random.nextFloat() * 480;//y起點(diǎn) 隨機(jī)0-480

final float y2 = random.nextFloat() * 480;//y終點(diǎn) 隨機(jī)0-480

final float lineWidth = random.nextFloat() * 5;//線的寬度 隨機(jī)0-5

 

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

getVertexBufferObjectManager());//畫線

 

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

random.nextFloat());//設(shè)置顏色值 范圍0-1

 

this.attachChild(line);//加入本場(chǎng)景 實(shí)體只有加入場(chǎng)景后才會(huì)被繪制和更新狀態(tài)

}

}
(2).繪制矩形

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

   pX, pY 矩形位置

  pWidth,pHeight 矩形寬高

VertexBufferObjectManager 頂點(diǎn)緩存對(duì)象管理

 

/**

 * 畫出4個(gè)矩形

 */

private void drawingRectangle() {

// 紅色矩形

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

getVertexBufferObjectManager());//繪制矩形,位置x300,位置y120,寬100,高100

rectangle0.setColor(1, 0, 0);//設(shè)置為紅色 紅Red:1 即255/255

this.attachChild(rectangle0);//加入本場(chǎng)景 實(shí)體只有加入場(chǎng)景后才會(huì)被繪制和更新狀態(tài)

// 綠色矩形

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

getVertexBufferObjectManager());//繪制矩形,位置x400,位置y120,寬100,高100

rectangle1.setColor(0, 1, 0);//設(shè)置為綠色 綠Green:1

this.attachChild(rectangle1);//加入本場(chǎng)景 實(shí)體只有加入場(chǎng)景后才會(huì)被繪制和更新狀態(tài)

// 藍(lán)色矩形

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

getVertexBufferObjectManager());//繪制矩形,位置x300,位置y220,寬100,高100

rectangle2.setColor(0, 0, 1);//設(shè)置為藍(lán)色 藍(lán)Blue:1

this.attachChild(rectangle2);//加入本場(chǎng)景 實(shí)體只有加入場(chǎng)景后才會(huì)被繪制和更新狀態(tài)

// ***矩形

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

getVertexBufferObjectManager());//繪制矩形,位置x400,位置y220,寬100,高100

rectangle3.setColor(1, 1, 0);//設(shè)置為紅色 紅Red:1,綠色 綠Green:1 相加后為***

this.attachChild(rectangle3);//加入本場(chǎng)景 實(shí)體只有加入場(chǎng)景后才會(huì)被繪制和更新狀態(tài)

}

(3).畫圖片精靈

圖片精靈AnimatedSprite(float pX, float pY, String pTextureRegionName, VertexBufferObjectManager pVertexBufferObjectManager)

pX,  pY,精靈位置

pTextureRegionName 圖片名稱

/**

 * 畫圖片精靈

 */

private void drawingPic() {

// 畫一個(gè)精靈

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

getVertexBufferObjectManager());//繪制一個(gè)圖片精靈 位置x 600 ,位置y 30, 圖片名稱引用Regions.PEA

this.attachChild(pea);//加入本場(chǎng)景 實(shí)體只有加入場(chǎng)景后才會(huì)被繪制和更新狀態(tài)

 

}

 

(4).畫動(dòng)畫精靈

動(dòng)畫畫精靈AnimatedSprite(float pX, float pY, String pTextureRegionName, VertexBufferObjectManager pVertexBufferObjectManager)

pX,  pY,精靈位置

pTextureRegionName 圖片名稱

animate(long pFrameDurationEach)動(dòng)畫精靈的幀速

 

/**

 * 畫飛機(jī)精靈

 */

private void drawingPlane() {

// 畫一個(gè)動(dòng)畫精靈 

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

getVertexBufferObjectManager());//繪制動(dòng)畫精靈, 位置x 610 ,位置y 140, 圖片名稱引用Regions.PLANE

this.attachChild(plane);//加入本場(chǎng)景 實(shí)體只有加入場(chǎng)景后才會(huì)被繪制和更新狀態(tài)

// 播放幀速 , 每幀的持續(xù)時(shí)間 , 以毫秒為單位計(jì)算

plane.animate(180);

plane.setIgnoreTouch(false);//設(shè)置阻止觸摸為false

}

(6). 刪除精靈

EntityattachChildIEntity pEntity);attachChild加入一個(gè)實(shí)體

detachChildIEntity pEntity);detachChild刪除一個(gè)實(shí)體

 

/**

 * 精靈刪除

 */

private void removingSprite() {

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

getVertexBufferObjectManager());//繪制一個(gè)按鈕精靈 位置x 610 ,位置y 200, 圖片名稱引用Regions.BACK_BTN

this.attachChild(btnSprite);//加入本場(chǎng)景 實(shí)體只有加入場(chǎng)景后才會(huì)被繪制和更新狀態(tài)

btnSprite.setOnClickListener(new OnClickListener() {//注冊(cè)按鍵監(jiān)聽

@Override

public void onClick(ButtonSprite pButtonSprite,//響應(yīng)點(diǎn)擊

float pTouchAreaLocalX, float pTouchAreaLocalY) {

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

DrawingSprite.this.detachChild(pButtonSprite);//刪除實(shí)體 實(shí)體刪除后不在繪制和更新狀態(tài)

}

});

 

}

 

}

 

OGE_Example項(xiàng)目源碼

 

 

 


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI