Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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
什么时候是;更新;在Java中运行的类中的方法?_Java_Class_Syntax - Fatal编程技术网

什么时候是;更新;在Java中运行的类中的方法?

什么时候是;更新;在Java中运行的类中的方法?,java,class,syntax,Java,Class,Syntax,我想这是一个基本的Java问题。我正在学习一个教程,其中有一个自定义类“LoadingScreen”(扩展了另一个自定义类“Screen”) 一旦调用“LoadingScreen”类,“update()”方法就会运行 问题是update()方法是从哪里调用的?在Java中,构造函数调用update()方法是默认的吗 public class LoadingScreen extends Screen { public LoadingScreen(Game game) { //constructo

我想这是一个基本的Java问题。我正在学习一个教程,其中有一个自定义类“LoadingScreen”(扩展了另一个自定义类“Screen”)

一旦调用“LoadingScreen”类,“update()”方法就会运行

问题是update()方法是从哪里调用的?在Java中,构造函数调用update()方法是默认的吗

public class LoadingScreen extends Screen {

public LoadingScreen(Game game) { //constructor for this class
    super(game);
}

@Override
public void update(float deltaTime) {
    Graphics g = game.getGraphics();
    Assets.background = g.newPixmap("background.png", Graphics.PixmapFormat.RGB565);
    Assets.logo = g.newPixmap("logo.png", Graphics.PixmapFormat.ARGB4444);
    Assets.mainMenu = g.newPixmap("mainmenu.png", Graphics.PixmapFormat.ARGB4444);
    Assets.buttons = g.newPixmap("buttons.png", Graphics.PixmapFormat.ARGB4444);
    Assets.help1 = g.newPixmap("help1.png", Graphics.PixmapFormat.ARGB4444);
    Assets.help2 = g.newPixmap("help2.png", Graphics.PixmapFormat.ARGB4444);
    Assets.help3 = g.newPixmap("help3.png", Graphics.PixmapFormat.ARGB4444);
    Assets.numbers = g.newPixmap("numbers.png", Graphics.PixmapFormat.ARGB4444);
    Assets.ready = g.newPixmap("ready.png", Graphics.PixmapFormat.ARGB4444);
    Assets.pause = g.newPixmap("pausemenu.png", Graphics.PixmapFormat.ARGB4444);
    Assets.gameOver = g.newPixmap("gameover.png", Graphics.PixmapFormat.ARGB4444);
    Assets.headUp = g.newPixmap("headup.png", Graphics.PixmapFormat.ARGB4444);
    Assets.headLeft = g.newPixmap("headleft.png", Graphics.PixmapFormat.ARGB4444);
    Assets.headDown = g.newPixmap("headdown.png", Graphics.PixmapFormat.ARGB4444);
    Assets.headRight = g.newPixmap("headright.png", Graphics.PixmapFormat.ARGB4444);
    Assets.tail = g.newPixmap("tail.png", Graphics.PixmapFormat.ARGB4444);
    Assets.stain1 = g.newPixmap("stain1.png", Graphics.PixmapFormat.ARGB4444);
    Assets.stain2 = g.newPixmap("stain2.png", Graphics.PixmapFormat.ARGB4444);
    Assets.stain3 = g.newPixmap("stain3.png", Graphics.PixmapFormat.ARGB4444);

    Assets.click = game.getAudio().newSound("click.ogg");
    Assets.eat = game.getAudio().newSound("eat.ogg");
    Assets.bitten = game.getAudio().newSound("bitten.ogg");

    Settings.load(game.getFileIO());
    game.setScreen(new MainMenuScreen(game));
}

@Override
public void present(float deltaTime) {

}

@Override
public void pause() {

}

@Override
public void resume() {

}

@Override
public void dispose() {

}
}
更新1:添加“屏幕”类

更新2:添加“游戏”界面

包com.neil.gamesbook.framework

public interface Game {
public Input getInput();

public FileIO getFileIO();

public Graphics getGraphics();

public Audio getAudio();

public void setScreen(Screen screen);

public Screen getCurrentScreen();

public Screen getStartScreen();
}

不,默认情况下构造函数不调用任何方法

当您说“只要调用了“LoadingScreen”类,“update()”方法就会运行”是什么意思?您的意思是创建LoadingScreen类的实例吗

这是Java中调用update()方法的默认值吗 建造师

public class LoadingScreen extends Screen {

public LoadingScreen(Game game) { //constructor for this class
    super(game);
}

@Override
public void update(float deltaTime) {
    Graphics g = game.getGraphics();
    Assets.background = g.newPixmap("background.png", Graphics.PixmapFormat.RGB565);
    Assets.logo = g.newPixmap("logo.png", Graphics.PixmapFormat.ARGB4444);
    Assets.mainMenu = g.newPixmap("mainmenu.png", Graphics.PixmapFormat.ARGB4444);
    Assets.buttons = g.newPixmap("buttons.png", Graphics.PixmapFormat.ARGB4444);
    Assets.help1 = g.newPixmap("help1.png", Graphics.PixmapFormat.ARGB4444);
    Assets.help2 = g.newPixmap("help2.png", Graphics.PixmapFormat.ARGB4444);
    Assets.help3 = g.newPixmap("help3.png", Graphics.PixmapFormat.ARGB4444);
    Assets.numbers = g.newPixmap("numbers.png", Graphics.PixmapFormat.ARGB4444);
    Assets.ready = g.newPixmap("ready.png", Graphics.PixmapFormat.ARGB4444);
    Assets.pause = g.newPixmap("pausemenu.png", Graphics.PixmapFormat.ARGB4444);
    Assets.gameOver = g.newPixmap("gameover.png", Graphics.PixmapFormat.ARGB4444);
    Assets.headUp = g.newPixmap("headup.png", Graphics.PixmapFormat.ARGB4444);
    Assets.headLeft = g.newPixmap("headleft.png", Graphics.PixmapFormat.ARGB4444);
    Assets.headDown = g.newPixmap("headdown.png", Graphics.PixmapFormat.ARGB4444);
    Assets.headRight = g.newPixmap("headright.png", Graphics.PixmapFormat.ARGB4444);
    Assets.tail = g.newPixmap("tail.png", Graphics.PixmapFormat.ARGB4444);
    Assets.stain1 = g.newPixmap("stain1.png", Graphics.PixmapFormat.ARGB4444);
    Assets.stain2 = g.newPixmap("stain2.png", Graphics.PixmapFormat.ARGB4444);
    Assets.stain3 = g.newPixmap("stain3.png", Graphics.PixmapFormat.ARGB4444);

    Assets.click = game.getAudio().newSound("click.ogg");
    Assets.eat = game.getAudio().newSound("eat.ogg");
    Assets.bitten = game.getAudio().newSound("bitten.ogg");

    Settings.load(game.getFileIO());
    game.setScreen(new MainMenuScreen(game));
}

@Override
public void present(float deltaTime) {

}

@Override
public void pause() {

}

@Override
public void resume() {

}

@Override
public void dispose() {

}
}
不,默认情况下构造函数不调用任何东西

问题是update()方法是从哪里调用的

这里的构造函数调用超类的构造函数。因此可能从那里调用了
update()
。您应该查看
Screen
类的构造函数

编辑

书中的那句话不正确。AndroidGame构造函数似乎间接调用了update()。请参见:

屏幕扩展了什么?使用屏幕类更新了问题。它没有扩展任何东西,它只是一个抽象类。是的,我的意思是当创建LoadingScreen的实例时,会调用“update()”方法。这是预期的吗?是否调用了所有函数[pause()、resume()、…])?然后,正如@Caner在下面建议的那样,您应该查看
屏幕
类构造函数。
Screen
类可能还扩展了一些其他类,因此可以从类层次结构中的任何构造函数调用
Update()
方法。我用Screen类更新了这个问题,但我仍然不知道“Update()”方法(在类加载屏幕中)从何处调用。只看了您的编辑。我怀疑在实例化
LoadingScreen
类-new LoadingScreen()时是否调用了
Update()
方法。我猜这是从外部调用的。您是否将实例化对象传递给任何函数?你用你的实例调用setScreen(screen)方法吗?我用screen类更新了这个问题,但我仍然不知道从哪里调用“update()”方法。书中的那句话不正确。似乎
AndroidGame
构造函数间接调用
update()
。看这个:你是对的。谢谢你的回答,好的。将你的回答标记为答案。