Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 我们可以使用类作为方法吗_Kotlin_Libgdx - Fatal编程技术网

Kotlin 我们可以使用类作为方法吗

Kotlin 我们可以使用类作为方法吗,kotlin,libgdx,Kotlin,Libgdx,我正在分析一个游戏项目。该项目的主类有一个initialize方法。 该项目使用一个具有类似构造函数的方法的类。 该方法的名称是什么?其逻辑是什么 比如说 这是主课 class LevelScreen : BaseScreen(){ override fun initialize() { Parallax(0f, 0f, mainStage, "assets/mountains0.png", 35f) Parallax(800f, 0f, ma

我正在分析一个游戏项目。该项目的主类有一个initialize方法。 该项目使用一个具有类似构造函数的方法的类。 该方法的名称是什么?其逻辑是什么

比如说

这是主课

class LevelScreen : BaseScreen(){
override fun initialize() {
        Parallax(0f, 0f, mainStage, "assets/mountains0.png", 35f)
        Parallax(800f, 0f, mainStage, "assets/mountains1.png", 45f)}
}
这称为类视差

class Parallax(x: Float, y: Float, s: Stage, texture: String, speed: Float): BaseActor(x, y, s) {


    init {
        loadTexture(texture)
        setSpeed(speed)
        setMotionAngle(180f)
    }

    override fun act(dt: Float) {
        super.act(dt)
        applyPhysics(dt)

        // if moved completely past left edge of the screen
        // shift right, past other instance
        if (x + width < 0)
            moveBy(2 * width, 0f)
    }
}  
类视差(x:Float,y:Float,s:Stage,纹理:String,速度:Float):BaseActor(x,y,s){
初始化{
加载纹理(纹理)
设定速度(速度)
设置运动角度(180f)
}
超越娱乐行为(dt:Float){
超级法案(dt)
应用物理学(dt)
//如果完全移过屏幕的左边缘
//右移,通过其他实例
如果(x+宽度<0)
移动比(2*宽,0f)
}
}  

项目没有使用类作为函数。事实上,它正在实例化两个对象,而不将它们保存在任何位置。对于每个对象,将执行init{}块的代码

项目没有使用类作为函数。事实上,它正在实例化两个对象,而不将它们保存在任何位置。对于每个对象,init {}块的代码将执行< /p> < p>我不能发表评论,所以请考虑这个扩展在@布鲁诺的回答。< /P> 听起来您对
视差
类感到困惑。在Kotlin中,主构造函数是类头的一部分。因此,Kotlin中的类视差(x:Float,y:Float,s:Stage,texture:String,speed:Float):BaseActor(x,y,s)在Java中等同于以下内容:

类视差扩展BaseActor{
视差(浮动x、浮动y、舞台s、弦纹理、浮动速度){
超级(x,y,s);
}
}
因此,当从
LevelScreen
initialize
中调用视差两次时,实际上是调用构造函数两次(从而生成两个新对象)


在这里阅读更多关于Kotlin的构造函数:

< p>我不能发表评论,所以请考虑这个关于布鲁诺的回答的扩展。

听起来您对
视差
类感到困惑。在Kotlin中,主构造函数是类头的一部分。因此,Kotlin中的类视差(x:Float,y:Float,s:Stage,texture:String,speed:Float):BaseActor(x,y,s)在Java中等同于以下内容:

类视差扩展BaseActor{
视差(浮动x、浮动y、舞台s、弦纹理、浮动速度){
超级(x,y,s);
}
}
因此,当从
LevelScreen
initialize
中调用视差两次时,实际上是调用构造函数两次(从而生成两个新对象)


阅读更多关于Kotlin中构造函数的信息:

您是否在问为什么一个类会有一个名为
initialize
的方法?您在哪里找到要分析的项目?在我看来,在LibGDX中,有各种实例化纹理的类实例是很糟糕的。必须处理纹理以避免内存泄漏,并且您不希望意外加载同一图像的多个副本。最好使用AssetManager并将纹理引用传递给其他类以供借用。此外,创建的视差实例并非到处引用,因此它们被浪费,并且纹理正在泄漏。您是否在问为什么类会有一个名为
initialize
的方法?您在哪里找到要分析的项目?在我看来,在LibGDX中,有各种实例化纹理的类实例是很糟糕的。必须处理纹理以避免内存泄漏,并且您不希望意外加载同一图像的多个副本。最好使用AssetManager并将纹理引用传递给其他类以供借用。此外,创建的视差实例不会到处引用,因此它们会被浪费,并且纹理会泄漏。