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