gpt4 book ai didi

java - public classname() 永远不会在类 classname 中调用 - Java

转载 作者:行者123 更新时间:2023-12-02 03:38:09 26 4
gpt4 key购买 nike

下面的方法

公共(public) JSound() {

}

从来没有人要求提供此代码?有什么原因吗?

如果我不能让它以这种方式工作,还有第二种方法可以使用鼠标监听器吗?它需要一个非静态方法,所以我不确定如何实现这一点。

我添加了

 new JSound();

 JSound JS = new JSound();

但两者都不起作用?

 package Sound;

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;

public class JSound extends JFrame implements MouseListener {

//IDK what its for but its important for jframe
private static final long serialVersionUID = 3314065768834871224L;

//Gets General volume
public static double volume = Audio.getMasterOutputVolume()*3*100;

//Universal variables are static, and i usually put them here
public static boolean running = true;
public static String title = "Advanced Java Sound";
public static int width = 410;
public static int height = 600;

public static int ticks = 1;

//class setups
public JSound sound;

public JSound() {
//This never gets called for some reason

//initialises mouse input
System.out.println("apples");
setTitle("Simple Frame");
addMouseListener(this);
}

public static void main(String args[]) {
//Creates the display basicly just the empty window you will see all the stuff drawn to
Display.Window();
//Calls the main loop method
mainloop();
//SoundLoad();
//addMouseListener(sound);
}

public static void mainloop() {
render.quickrender();

try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); }

while(running) {
long lastTime = System.nanoTime();
double amountOfTicks = 60.0;
double ns = 1000000000 / amountOfTicks;
double delta = 0;
long timer = System.currentTimeMillis();
int frames = 0;
while (running) {
long now = System.nanoTime();
delta += (now - lastTime) / ns;
lastTime = now;
while (delta >= 1) {
ticks++;
delta--;
}
if (running)
tick();
render.renderer();
frames++;

if(System.currentTimeMillis() - timer > 1000) {
timer += 1000;
System.out.println("FPS: " + frames + " Ticks: " + ticks);
frames = 0;
}
}
}
}

public static void tick() {
//Put any tick method stuff here, it will be executed in priority to render, and will occur more then 60 times per second

//Audio.setMasterOutputVolume(0.5f);
volume = Audio.getMasterOutputVolume()*4.8*100;
//System.out.println(Audio.getMasterOutputVolume());
//System.out.println((int)volume);
}

public void mouseClicked(MouseEvent e) {
System.out.println(e.getX());
System.out.println(e.getY());
}

public void mouseEntered(MouseEvent e) {

}

public void mouseExited(MouseEvent e) {

}

@Override
public void mousePressed(MouseEvent e) {
System.out.println(e.getX());
System.out.println(e.getY());
}

public void mouseReleased(MouseEvent e) {

}

}

最佳答案

import javax.swing.JFrame;

class JSound extends JFrame {
//Universal variables are static, and i usually put them here
public static boolean running = true;
public static String title = "Advanced Java Sound";
public static int width = 410;
public static int height = 600;

public static int ticks = 1;

//class setups
public JSound sound;

public JSound() {
//This never gets called for some reason

//initialises mouse input
System.out.println("apples");
setTitle("Simple Frame");
}

public static void main(String args[]) {
System.out.println("I'm before main loop");
new JSound();
mainloop();
System.out.println("I'm after main loop");
new JSound();
}

public static void mainloop() {

try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}

while (running) {
long lastTime = System.nanoTime();
double amountOfTicks = 60.0;
double ns = 1000000000 / amountOfTicks;
double delta = 0;
long timer = System.currentTimeMillis();
int frames = 0;
while (running) {
long now = System.nanoTime();
delta += (now - lastTime) / ns;
lastTime = now;
while (delta >= 1) {
ticks++;
delta--;
}
if (running) {
tick();
}
frames++;

if (System.currentTimeMillis() - timer > 1000) {
timer += 1000;
System.out.println("FPS: " + frames + " Ticks: " + ticks);
frames = 0;
}
}
}
}

public static void tick() {

}
}

首先,您之前的代码永远不会调用 JSound,其次,任何在 mainLoop 之后调用的代码都不会执行,直到 runningfalse,所以我只能假设 JSound 在调用 mainLoop

之后一段时间被调用

关于java - public classname() 永远不会在类 classname 中调用 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37180654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com