java中使用kotlin_在Kotlin中使用libGDX
java中使用kotlin
最近,我一直在閱讀有關(guān)不同語(yǔ)言的信息,以及它們可以為已經(jīng)擁擠的軟件開(kāi)發(fā)人員帶來(lái)什么,并且一種語(yǔ)言對(duì)我來(lái)說(shuō)很突出:Kotlin。 ( https://kotlinlang.org/ )
這是一種相對(duì)較新的語(yǔ)言(成立于2011年),而這些正是我選擇其他眾多成熟語(yǔ)言所用的幾個(gè)原因:
- 在JVM上運(yùn)行并具有完全的Java互操作性
- 它既不是純OO也不是功能語(yǔ)言,它自然地適應(yīng)了兩種樣式
- 它使用功能支持程序編程
- 它具有類型推斷功能,并且支持可空和不可空數(shù)據(jù)類型
- 它的語(yǔ)法很漂亮,尤其是Pascal樣式的變量聲明(數(shù)據(jù)類型在變量之后)
- 非常簡(jiǎn)潔,我發(fā)現(xiàn)用Kotlin編寫(xiě)的代碼可讀性強(qiáng)
設(shè)置項(xiàng)目
我將按照Wiki( https://github.com/libgdx/libgdx/wiki/Project-Setup-Gradle )中的建議和描述使用標(biāo)準(zhǔn)libGdx設(shè)置,其中Gradle作為構(gòu)建工具,而IntelliJ作為IDE。
我將我的項(xiàng)目稱為Nemo ,因?yàn)樗鼪](méi)有名稱,這就是拉丁語(yǔ)中的“ nemo” (沒(méi)有,沒(méi)有人,沒(méi)有人,沒(méi)有名字)。 我們將看到與它一起去的地方。
創(chuàng)建項(xiàng)目后,將其導(dǎo)入到IDE中。 通常從根項(xiàng)目根目錄導(dǎo)入/打開(kāi)build.gradle文件。
導(dǎo)入項(xiàng)目后,升級(jí)libGdx。 最新的安裝工具包含最新版本,但要手動(dòng)執(zhí)行,請(qǐng)打開(kāi)定義所有依賴項(xiàng)的root build.gradle文件,并使用最新版本的libGdx。 最新版本可以在這里找到:https://libgdx.badlogicgames.com/versions.html
將gdxVersion更改為最新版本,當(dāng)前為1.8.0。
還要確保您的IDE已準(zhǔn)備好用于Kotlin。
要設(shè)置IntelliJ,請(qǐng)按照此處的說(shuō)明進(jìn)行操作: https : //kotlinlang.org/docs/tutorials/getting-started.html
注意:要將插件升級(jí)到Kotlin的最新版本,我設(shè)法做到的唯一方法是卸載插件并重新添加。
對(duì)于eclipse用戶,說(shuō)明在這里: https : //kotlinlang.org/docs/tutorials/getting-started-eclipse.html
因?yàn)槲覀儗radle用作構(gòu)建工具,所以我們需要對(duì)其進(jìn)行配置以使用kotlin插件來(lái)構(gòu)建項(xiàng)目。 要做到這一點(diǎn), kotlin-gradle插件的依賴需要被添加到buildscript主找到方法build.gralde文件。
添加行
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.0-beta-4584'到主build.gradle文件中的buildscript依賴build.gradle 。
根build.gradle文件應(yīng)包含以下內(nèi)容
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的存儲(chǔ)庫(kù)中獲取版本號(hào)。 http://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-gradle-plugin
有關(guān)如何將Kotlin與Gradle結(jié)合使用的更多信息,請(qǐng)參見(jiàn): https : //kotlinlang.org/docs/reference/using-gradle.html
為了定位JVM,需要應(yīng)用Kotlin插件。
加
apply plugin: "kotlin"到“ 核心 ”項(xiàng)目,因?yàn)槲覀儗H在“ 核心 ”中使用Kotlin。 還需要將Kotlin標(biāo)準(zhǔn)庫(kù)添加到核心依賴項(xiàng)中。
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"注意: kotlinVersion在allProjects.ext的項(xiàng)目級(jí)別定義。
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/" }} }有關(guān)最新版本,請(qǐng)?jiān)L問(wèn)Kotlin網(wǎng)站。
核心項(xiàng)目設(shè)置應(yīng)如下所示:
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混合使用,并且由于計(jì)劃僅使用Kotlin,因此我們不會(huì)將Kotlin源提取到不同的目錄中,而是將逐漸將當(dāng)前的Java源代碼轉(zhuǎn)換為Kotlin。 幸運(yùn)的是,我們只有一個(gè)班級(jí)可以轉(zhuǎn)換。 我們可以通過(guò)幾種方式做到這一點(diǎn)。 如果使用的是IntelliJ,最簡(jiǎn)單的方法是從“ 工具”菜單中選擇類,然后選擇“ 將Java文件轉(zhuǎn)換為Kotlin文件” 。
還有其他方法,例如,創(chuàng)建擴(kuò)展名為.kt的空文件,復(fù)制Java文件的內(nèi)容并將其粘貼到新的.kt文件中。 IntelliJ將提示您進(jìn)行轉(zhuǎn)換。
當(dāng)然,只有安裝并啟用了Kotlin插件,所有這一切才有可能。
讓我們檢查由gdx設(shè)置應(yīng)用程序生成的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()} }自動(dòng)轉(zhuǎn)換不是完美的,如果我們編譯該類,則會(huì)遇到兩個(gè)錯(cuò)誤:
Error:(9, 4) Gradle: Property must be initialized or be abstract
Error:(10, 4) Gradle: Property must be initialized or be abstract
錯(cuò)誤指的是突出顯示的行(10和11)中的2個(gè)未初始化的類屬性。
internal var batch: SpriteBatch internal var img: Texture在Kotlin中,必須在構(gòu)造函數(shù)或類的init方法中初始化聲明的non null屬性。 但是這樣做,我們將不會(huì)使用libGdx生命周期方法,因此我們可以應(yīng)用Kotlin的一項(xiàng)功能: Late Initialized Properties 。 這是通過(guò)使用lateinit修飾符實(shí)現(xiàn)的。
internal lateinit var batch: SpriteBatch internal lateinit var img: Texture這將標(biāo)記屬性以進(jìn)行后期初始化,并且在初始化之前對(duì)屬性的任何訪問(wèn)將通過(guò)特殊異常來(lái)發(fā)出信號(hào)。
就是這樣,我們有了Kotlin libGdx項(xiàng)目。 我們可以構(gòu)建它并以常規(guī)方式運(yùn)行它。
最簡(jiǎn)單的方法是使用Gradle包裝器從命令行運(yùn)行它。 在項(xiàng)目的根目錄中,執(zhí)行以下命令(Linux,OSX):./gradlew desktop:run或在Windows gradlew.bat desktop:run上
或按照Wiki中的說(shuō)明進(jìn)行操作: https : //github.com/libgdx/libgdx/wiki/Project-Setup-Gradle
應(yīng)該會(huì)出現(xiàn)非常熟悉的引導(dǎo)屏幕。
接下來(lái),我們將探索游戲開(kāi)發(fā)中的一些常見(jiàn)任務(wù),以及如何使用Kotlin來(lái)實(shí)現(xiàn)這些任務(wù)。
- 不斷發(fā)展的項(xiàng)目可以在這里找到: https : //github.com/obviam/kotlin-gdx-nemo
翻譯自: https://www.javacodegeeks.com/2016/01/using-libgdx-kotlin.html
java中使用kotlin
總結(jié)
以上是生活随笔為你收集整理的java中使用kotlin_在Kotlin中使用libGDX的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 我的世界紫颂果怎么种 我的世界紫颂果如何
- 下一篇: 工厂模式理解_工厂模式