日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【v2.x OGE-example 第一节】 绘制实体

發布時間:2025/4/5 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【v2.x OGE-example 第一节】 绘制实体 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

?

前言:

????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啟動器下:

?

放在IOS啟動器下:

?

?

OGE-example?項目結構:

?

第一章

第一節:實體的繪制

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

?

?

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

?

?

?

轉載于:https://my.oschina.net/orangegame/blog/338405

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的【v2.x OGE-example 第一节】 绘制实体的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。