libgdx是一個(gè)跨平臺(tái)的2D/3D的游戲開(kāi)發(fā)框架,它由Java/C/C++語(yǔ)言編寫(xiě)而成。它基于A(yíng)pache License, Version 2.0協(xié)議,對(duì)商業(yè)使用和非商業(yè)使用均免費(fèi)。
libgdx兼容Windows、Linux、Max OS X、Java Applet、Javascript/WebGL與Android[4](1.5版本+)平臺(tái)。對(duì)于A(yíng)ndroid平臺(tái)的支持在A(yíng)ndroid陣營(yíng)和相關(guān)市場(chǎng)日益擴(kuò)大的情況下libgdx的使用者越來(lái)越多。另外,基于MonoTouch,可以實(shí)現(xiàn)IOS兼容。
官方網(wǎng)站:http://libgdx.badlogicgames.com/
操作系統(tǒng):Opensuse12.2
開(kāi)始前請(qǐng)確保配置好android開(kāi)發(fā)環(huán)境。jdk最好用1.6的,官網(wǎng)說(shuō)1.7會(huì)有bug。
1)下載libgdx-http://libgdx.badlogicgames.com/download.html
選擇Release Builds。
下載好之后解壓文件,就像這樣:
2)自動(dòng)生產(chǎn)開(kāi)發(fā)工程
包中自帶的gdx-setup-ui可以用來(lái)自動(dòng)生成項(xiàng)目工程,免去了繁瑣的初始化配置過(guò)程。
終端進(jìn)入到解壓后的文件夾,運(yùn)行
java -jar gdx-setup-ui.jar
注意左下角要選定Generate the desktop project,方便開(kāi)發(fā)調(diào)試。
中間的libGDX要是綠色的才能生成項(xiàng)目,紅色的話(huà)點(diǎn)擊文件夾小圖標(biāo)定位到之前下載好的zip文件。
最后點(diǎn)擊偶下角的Open the generation screen->launch
在當(dāng)前文件夾下面會(huì)生產(chǎn)三個(gè)對(duì)應(yīng)的目錄,如圖:
3)導(dǎo)入工程
在eclipse中首先導(dǎo)入游戲工程和desktop工程。
File->import
選中剛才創(chuàng)建好的test-gdx-game文件夾->finish。
同樣的方法導(dǎo)入test-gdx-game-desktop。
接下來(lái)導(dǎo)入android工程。
eclipse下面Ctrl+n - >Android project from exiting project->選中test-gdx-game-android->finish.
三個(gè)工程導(dǎo)入完成后,還需要修改一些地方。
由于我們創(chuàng)建項(xiàng)目的時(shí)候是同時(shí)創(chuàng)建了android版本和desktop版本,gamecode 其實(shí)都在test-gdx-game中,而資源文件其實(shí)都放在了android項(xiàng)目中asset文件夾中。
直接運(yùn)行desktop項(xiàng)目會(huì)報(bào)錯(cuò),提示找不到資源文件。這里需要在desktop項(xiàng)目中添加一個(gè)鏈接。
右擊test-gdx-game-desktop->project -> Properties -> Java Build Path -> Source tab -> Link Source… -> Browse… -> 定位到 test-gdx-game-android project 的assert文件夾,點(diǎn) Finish。
工程就算建立完成了。
desktop和android都可以直接運(yùn)行,調(diào)用的是test-gdx-game中的代碼。
各自的運(yùn)行結(jié)果如下:
為了初始化Application必須實(shí)現(xiàn)ApplicationListener這個(gè)接口, 它用來(lái)更新游戲狀態(tài)(即邏輯),渲染出項(xiàng),暫停游戲,保存狀態(tài),釋放資源等。
它也有一個(gè)處理Application 聲明周期事件的地方。每個(gè)應(yīng)用,不管后臺(tái)平臺(tái)版本都必須實(shí)現(xiàn)ApplicationListener 接口。所有平臺(tái)都會(huì)存在并要實(shí)現(xiàn)這個(gè)接口。
看一下項(xiàng)目代碼:
package com.me.testgdxgame; import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL10; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture.TextureFilter; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureRegion; public class TestGdxGame implements ApplicationListener { private OrthographicCamera camera; private SpriteBatch batch; private Texture texture; private Sprite sprite; @Override public void create() { float w = Gdx.graphics.getWidth(); float h = Gdx.graphics.getHeight(); camera = new OrthographicCamera(1, h/w); batch = new SpriteBatch(); texture = new Texture(Gdx.files.internal("data/libgdx.png")); texture.setFilter(TextureFilter.Linear, TextureFilter.Linear); TextureRegion region = new TextureRegion(texture, 0, 0, 512, 275); sprite = new Sprite(region); sprite.setSize(0.9f, 0.9f * sprite.getHeight() / sprite.getWidth()); sprite.setOrigin(sprite.getWidth()/2, sprite.getHeight()/2); sprite.setPosition(-sprite.getWidth()/2, -sprite.getHeight()/2); } @Override public void dispose() { batch.dispose(); texture.dispose(); } @Override public void render() { Gdx.gl.glClearColor(1, 1, 1, 1); Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); batch.setProjectionMatrix(camera.combined); batch.begin(); sprite.draw(batch); batch.end(); } @Override public void resize(int width, int height) { } @Override public void pause() { } @Override public void resume() { } }
幾個(gè)重要的方法:
create() : 當(dāng)應(yīng)用程序創(chuàng)建時(shí),此方法被調(diào)用一次。
resize(int width,int,height): 每次游戲屏幕重置并且不是暫停狀態(tài)的時(shí)候調(diào)用此方法。在create()后調(diào)用一次。參數(shù)是屏幕被重置后的新狂讀和高度。
render(): 每次渲染發(fā)生時(shí)游戲循環(huán)調(diào)用此方法。游戲更新發(fā)生在繪制之前。意思就是說(shuō)先處理邏輯再處理繪制。
pause(): 在應(yīng)用destroyed()前調(diào)用此方法。在android中Home鍵按下或者重新進(jìn)入程序時(shí)調(diào)用。這是一個(gè)保存游戲狀態(tài)的好地方,在android中的resume不一定會(huì)調(diào)用。
resuem(): 這個(gè)方法愛(ài)盡在android中調(diào)用,當(dāng)應(yīng)用獲得焦點(diǎn)時(shí),桌面應(yīng)用中將不會(huì)調(diào)用此方法。
dispose(): 當(dāng)應(yīng)用destroyed時(shí),調(diào)用此方法,在pause()之后。
創(chuàng)新互聯(lián)www.cdcxhl.cn,專(zhuān)業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買(mǎi)多久送多久。