在Kotlin中使用libGDX
最近,我一直在閱讀有關不同語言的信息,以及它們可以為已經擁擠的軟件開發人員帶來什么,而一種語言對我來說很突出:Kotlin。 ( https://kotlinlang.org/ )
這是一種相對較新的語言(成立于2011年),而這些正是我選擇其他眾多成熟語言所使用的幾個原因:
- 在JVM上運行并具有完全的Java互操作性
- 它既不是純粹的OO也不是功能語言,它自然地適應了兩種樣式
- 它使用功能支持程序編程
- 它具有類型推斷功能,并且支持可空和不可空數據類型
- 它的語法很漂亮,尤其是Pascal樣式的變量聲明(數據類型在變量之后)
- 非常簡潔,我發現用Kotlin編寫的代碼可讀性強
設置項目
我將按照Wiki( https://github.com/libgdx/libgdx/wiki/Project-Setup-Gradle )中的建議和描述使用標準libGdx設置,其中Gradle作為構建工具,而IntelliJ作為IDE。
我將我的項目稱為Nemo ,因為它沒有名稱,這就是拉丁語中的“ nemo” (沒有,沒有人,沒有人,沒有名字)。 我們將看到它的去向。
創建項目后,將其導入到IDE中。 通常從根項目根目錄導入/打開build.gradle文件。
導入項目后,升級libGdx。 最新的安裝工具包含最新版本,但要手動執行,請打開定義所有依賴項的build.gradle根目錄,并使用libGdx的最新版本。 最新版本可以在這里找到:https://libgdx.badlogicgames.com/versions.html
將gdxVersion更改為最新版本,當前為1.8.0。
還要確保您的IDE已準備好用于Kotlin。
要設置IntelliJ,請按照此處的說明進行操作: https : //kotlinlang.org/docs/tutorials/getting-started.html
注意:要將插件升級到Kotlin的最新版本,我設法做到的唯一方法是卸載插件并重新添加。
對于eclipse用戶,說明在這里: https : //kotlinlang.org/docs/tutorials/getting-started-eclipse.html
因為我們將Gradle用作構建工具,所以我們需要對其進行配置以使用kotlin插件來構建項目。 要做到這一點, kotlin-gradle插件的依賴需要被添加到buildscript主找到方法build.gralde文件。
添加行
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.0-beta-4584'到主build.gradle文件中的buildscript依賴build.gradle 。
根build.gradle文件應包含以下內容
buildscript {repositories {mavenCentral()maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }}dependencies {classpath 'com.android.tools.build:gradle:1.2.3'classpath 'org.robovm:robovm-gradle-plugin:1.12.0'classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.0-beta-4584'} }可以從位于Maven Central的Kotlin的存儲庫中獲取版本號。 http://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-gradle-plugin
可以在此處找到有關如何將Kotlin與Gradle結合使用的更多信息: https : //kotlinlang.org/docs/reference/using-gradle.html
為了定位JVM,需要應用Kotlin插件。
加
apply plugin: "kotlin"到“ 核心 ”項目,因為我們將僅在“ 核心 ”中使用Kotlin。 還需要將Kotlin標準庫添加到核心依賴項中。
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"注意: kotlinVersion是在allProjects.ext中的項目級別定義的。
allprojects {apply plugin: "eclipse"apply plugin: "idea"version = '1.0'ext {appName = "nemo"gdxVersion = '1.8.0'roboVMVersion = '1.12.0'box2DLightsVersion = '1.4'ashleyVersion = '1.7.0'aiVersion = '1.7.0'kotlinVersion = '1.0.0-beta-4584'}repositories {mavenCentral()maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }maven { url "https://oss.sonatype.org/content/repositories/releases/" }} }有關最新版本,請訪問Kotlin網站。
核心項目設置應如下所示:
project(":core") {apply plugin: "java"apply plugin: "kotlin"dependencies {compile "com.badlogicgames.gdx:gdx:$gdxVersion"compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"} }注意:突出顯示的行包含更改。
Kotlin可以與Java混合使用,并且由于計劃僅使用Kotlin,因此我們不會將Kotlin源提取到不同的目錄中,而是將當前的Java逐步轉換為Kotlin。 幸運的是,我們只有一個類可以轉換。 我們可以通過幾種方式做到這一點。 如果使用的是IntelliJ,最簡單的方法是從“ 工具”菜單中選擇類,然后選擇“ 將Java文件轉換為Kotlin文件” 。
還有其他方法,例如,創建擴展名為.kt的空文件,復制Java文件的內容并將其粘貼到新的.kt文件中。 IntelliJ將提示您進行轉換。
當然,只有安裝并啟用了Kotlin插件,所有這一切才有可能。
讓我們檢查一下由gdx設置應用程序生成的Nemo類文件:
package net.obviam.nemo;import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch;public class Nemo extends ApplicationAdapter {SpriteBatch batch;Texture img;@Overridepublic void create () {batch = new SpriteBatch();img = new Texture("badlogic.jpg");}@Overridepublic void render () {Gdx.gl.glClearColor(1, 0, 0, 1);Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);batch.begin();batch.draw(img, 0, 0);batch.end();} }以及生成的Kotlin文件:
package net.obviam.nemoimport com.badlogic.gdx.ApplicationAdapter import com.badlogic.gdx.Gdx import com.badlogic.gdx.graphics.GL20 import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.SpriteBatchclass Nemo : ApplicationAdapter() {internal var batch: SpriteBatchinternal var img: Textureoverride fun create() {batch = SpriteBatch()img = Texture("badlogic.jpg")}override fun render() {Gdx.gl.glClearColor(1f, 0f, 0f, 1f)Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)batch.begin()batch.draw(img, 0f, 0f)batch.end()} }自動轉換不是完美的,如果我們編譯該類,則會得到兩個錯誤:
Error:(9, 4) Gradle: Property must be initialized or be abstract
Error:(10, 4) Gradle: Property must be initialized or be abstract
錯誤指的是突出顯示的行(10和11)中的2個未初始化的類屬性。
internal var batch: SpriteBatch internal var img: Texture在Kotlin中,必須在構造函數或類的init方法中初始化聲明的non null屬性。 但是這樣做,我們將不會使用libGdx生命周期方法,因此我們可以應用Kotlin的一項功能: Late Initialized Properties 。 這是通過使用lateinit修飾符實現的。
internal lateinit var batch: SpriteBatch internal lateinit var img: Texture這將標記屬性以進行后期初始化,并且在初始化之前對屬性的任何訪問都將通過特殊異常來發出信號。
就是這樣,我們有了Kotlin libGdx項目。 我們可以構建它并以通常的方式運行它。
最簡單的方法是使用Gradle包裝器從命令行運行它。 在項目的根目錄中,執行以下命令(Linux,OSX):./gradlew desktop:run或在Windows gradlew.bat desktop:run上
或按照Wiki中的說明進行操作: https : //github.com/libgdx/libgdx/wiki/Project-Setup-Gradle
應該會出現非常熟悉的引導程序屏幕。
接下來,我們將探討游戲開發中的一些常見任務,以及如何使用Kotlin實現這些任務。
- 不斷發展的項目可以在這里找到: https : //github.com/obviam/kotlin-gdx-nemo
翻譯自: https://www.javacodegeeks.com/2016/01/using-libgdx-kotlin.html
總結
以上是生活随笔為你收集整理的在Kotlin中使用libGDX的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 叉出去什么梗 网络语叉出去什么意思
- 下一篇: 阜宁怎么读 阜宁的读音