您好,登錄后才能下訂單哦!
libgdx是一個跨平臺的2D/3D的游戲開發框架,它由Java/C/C++語言編寫而成。它基于Apache License, Version 2.0協議,對商業使用和非商業使用均免費。
libgdx兼容Windows、Linux、Max OS X、Java Applet、Javascript/WebGL與Android[4](1.5版本+)平臺。對于Android平臺的支持在Android陣營和相關市場日益擴大的情況下libgdx的使用者越來越多。另外,基于MonoTouch,可以實現IOS兼容。
官方網站:http://libgdx.badlogicgames.com/
操作系統:Opensuse12.2
開始前請確保配置好android開發環境。jdk最好用1.6的,官網說1.7會有bug。
1)下載libgdx-http://libgdx.badlogicgames.com/download.html
選擇Release Builds。
下載好之后解壓文件,就像這樣:
2)自動生產開發工程
包中自帶的gdx-setup-ui可以用來自動生成項目工程,免去了繁瑣的初始化配置過程。
終端進入到解壓后的文件夾,運行
java -jar gdx-setup-ui.jar
注意左下角要選定Generate the desktop project,方便開發調試。
中間的libGDX要是綠色的才能生成項目,紅色的話點擊文件夾小圖標定位到之前下載好的zip文件。
最后點擊偶下角的Open the generation screen->launch
在當前文件夾下面會生產三個對應的目錄,如圖:
3)導入工程
在eclipse中首先導入游戲工程和desktop工程。
File->import
選中剛才創建好的test-gdx-game文件夾->finish。
同樣的方法導入test-gdx-game-desktop。
接下來導入android工程。
eclipse下面Ctrl+n - >Android project from exiting project->選中test-gdx-game-android->finish.
三個工程導入完成后,還需要修改一些地方。
由于我們創建項目的時候是同時創建了android版本和desktop版本,gamecode 其實都在test-gdx-game中,而資源文件其實都放在了android項目中asset文件夾中。
直接運行desktop項目會報錯,提示找不到資源文件。這里需要在desktop項目中添加一個鏈接。
右擊test-gdx-game-desktop->project -> Properties -> Java Build Path -> Source tab -> Link Source… -> Browse… -> 定位到 test-gdx-game-android project 的assert文件夾,點 Finish。
工程就算建立完成了。
desktop和android都可以直接運行,調用的是test-gdx-game中的代碼。
各自的運行結果如下:
為了初始化Application必須實現ApplicationListener這個接口, 它用來更新游戲狀態(即邏輯),渲染出項,暫停游戲,保存狀態,釋放資源等。
它也有一個處理Application 聲明周期事件的地方。每個應用,不管后臺平臺版本都必須實現ApplicationListener 接口。所有平臺都會存在并要實現這個接口。
看一下項目代碼:
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() { } }
幾個重要的方法:
create() : 當應用程序創建時,此方法被調用一次。
resize(int width,int,height): 每次游戲屏幕重置并且不是暫停狀態的時候調用此方法。在create()后調用一次。參數是屏幕被重置后的新狂讀和高度。
render(): 每次渲染發生時游戲循環調用此方法。游戲更新發生在繪制之前。意思就是說先處理邏輯再處理繪制。
pause(): 在應用destroyed()前調用此方法。在android中Home鍵按下或者重新進入程序時調用。這是一個保存游戲狀態的好地方,在android中的resume不一定會調用。
resuem(): 這個方法愛盡在android中調用,當應用獲得焦點時,桌面應用中將不會調用此方法。
dispose(): 當應用destroyed時,調用此方法,在pause()之后。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。