您好,登錄后才能下訂單哦!
OGE即 OGEngine,是由橙子游戲開發的基于Java支持跨平臺的開源游戲引,從12年4月項目成立至今已經有2年多的發展歷程。在此期間基于OGEngine開發的項目已經有很多成功投放市場。從正式開源開始,好多開發者開始加入OGEngine的行列,同時在官網、論壇、Q群、看到有好多的問題,大部分是一些新手的問題,經常會被重復的提問。有些是之前用過AndEngine的,對OGEngine的使用會有些出入,開發時不是很順手。為此今天開始寫一個OGE-Example;大家在學習OGEengine時可參考這些例子,應該會更容易上手些。
首先,先講解一下這個OGE-example的思路框架,這些案例都會放到一個項目里,用list顯示,會分兩級菜單,從最簡單開始,后續會隨著引擎的發展在加入一些例子,也都會放在這個項目里邊,方便大家學習和使用。
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啟動器);
線條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);//加入本場景 實體只有加入場景后才會被繪制和更新狀態
}
矩形: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);//加入本場景 實體只有加入場景后才會被繪制和更新狀態
}
圖片精靈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);//加入本場景 實體只有加入場景后才會被繪制和更新狀態
}
動畫畫精靈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
}
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項目源碼
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。