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

时间:2020-08-04 20:14:57

标签: kotlin libgdx

我正在分析一个游戏项目。该项目的主类有一个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)
    }
}  

2 个答案:

答案 0 :(得分:2)

我还不能发表评论,所以请考虑在@Bruno的答案上进行扩展。

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

class Parallax extends BaseActor {
    Parallax(float x, float y, Stage s, String texture, float speed){
        super(x, y, s);
    }
}

因此,当在initialize的{​​{1}}中两次调用Parallax时,实际上是两次调用了构造函数(因此产生了2个新对象)。

在此处详细了解Kotlin中的构造函数:https://kotlinlang.org/docs/reference/classes.html#constructors

答案 1 :(得分:1)

该项目未将类用作函数。实际上,它实例化两个对象而不将它们保存在任何地方。对于每个对象,将执行init {}块的代码