【v2.x OGE-example 第一節】 繪製實體

v2.x OGE-example 第一節 繪製實體

前言:

    OGE即 OGEngine是由橙子游戲開發的基於Java支持跨平臺的開源遊戲引,從124項目成立至今已經有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項目現支持兩個平臺運行(androidios),這些案例會用到一些圖片和字

體,需要把這些資源加載到對應的啓動器裏邊(androidios啓動器);

放在Android啓動器下:

wKiom1RQVbnTcFtFAAG_vB0iHOM017.jpg wKioL1RQViDTdMS0AAG_vB0iHOM044.jpg

放在IOS啓動器下:

wKioL1RQVk-itIf1AAFlIWi_pv4055.jpg 

 

OGE-example 項目結構:

wKiom1RQVgfBn54TAAI9zC8LqbE818.jpg 

第一章

第一節:實體的繪製

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

wKiom1RQVhTynTOxAAHL4UtayBA211.jpg 

 

(1)繪製線條:

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

pX1pY1線條起點位置

pX2pY1線條終點位置

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 矩形位置

  pWidthpHeight 矩形寬高

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). 刪除精靈

EntityattachChildIEntity pEntity);attachChild加入一個實體

detachChildIEntity 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項目源碼

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章