我确信这个问题已被问过一百万次,但无论我做了多少谷歌搜索,我都无法解决这个问题.我基本上试图让一个包含多个包的项目嵌入到网页中.我制作了一个测试程序,它只是让一些球在屏幕上反弹并且能够运行.我将主类放在一个包中,将球类放在另一个包中,只是为了测试它,它似乎运行良好.但是我在网页中实际需要的程序(简称为FinalProject)拒绝这样做.
我能做到的最好的事情就是给我一个空白的屏幕,不给出错误但只是白色.如果我尝试点击应该没有任何反应的地方,我认为因为小程序在那里,但只是显示白色,所以我看不到它.我确实使用了applet标签,我的理解现在已经折旧,但我需要在网页上打开这个项目,这样教师才能看到它.我们已经测试了其他人的项目(使用applet标签)工作,所以我现在试图坚持使用它,并担心之后让它在每个浏览器上工作.虽然这很可能是问题所在.也许它可以在他的浏览器上工作,但不是我的.我尝试在Google Chrome,Mozilla Firefox和Internet Explorer上运行我的程序,但没有运气.
这是HTML代码:
<html>
<head>
</head>
<body>
<applet code = "main.FinalProject.class" width = "700px" height = "500px"></applet>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是写入的HTML文件[Eclipse Workspace]/FinalProject/bin/test.htm.HTML中引用的FinalProject.class文件存在于[Eclipse Workspace]/FinalProject/bin/ main/FinalProject.class.FinalProject.class文件充当主类,所以我很确定这是我需要运行的那个.它是具有init(),actionPerformed(),paint()方法和所有好东西的那个.
目前我正试图在我的计算机上脱机运行,所以我不会想到任何网址.我使用Eclipse编写Java代码,dunno,如果这有任何区别.不幸的是,Java代码相当大,在这里重现太多,如果有一些特定的东西,你认为是我可以查看的问题并发布那个小部分.
我的一些朋友设法让他们的工作,但他们说他们必须删除所有他们的.png文件(烦人,但我的项目可行).他们还说要删除所有鼠标移动代码.我的程序有点依赖于它,我需要它才能使它工作.我知道必须有一种在线使用所有MouseListener和MouseMoveListener代码的方法,也许它有点不同.我不知道如果这与此有关,但我想我会指出它只是为了安全.
这里的任何帮助将不胜感激.
我可以从谷歌搜索中看到这个问题被问到很多,但我找到的解决方案都没有为我做.你知道,我用Java制作一个带有图像的游戏,因为游戏通常都有这些东西.但整个表格不断闪烁,我无法阻止它.是的,我已经双重缓冲它并覆盖了update()方法,虽然这肯定有帮助,但闪烁仍然存在.我不知道我在做双重缓冲是否有问题,或者我是否需要完全不同的东西.
起初我觉得它可能与clearRect()行有关,但在删除它之后,游戏仍然闪烁,但当然每次都没有清除.所以这根本没有帮助.在减慢定时器时,闪烁几乎完全消失,但我需要将其减慢到100ms,即便如此,我仍然会有一些闪烁.此外,这对游戏来说太慢了.我试过让一个计时器在一个10ms的计时器上完成所有工作,一个单独的计时器在100ms进行绘画,但它看起来只是看起来很蠢.虽然闪烁仍然是一个问题,但我可以将绘画计时器减慢到大约30毫秒并保持平滑.
必须有一种方法每10-30ms这样做而不会闪烁.是否有其他方法类似于双缓冲但在这种情况下更好,或者我可以使用的东西?在此先感谢您的帮助.
public class main extends JApplet implements ActionListener {
//This Declares The Variables
Graphics2D buffer;
Image offscreen;
Timer timGame = new Timer(10, this);
//other variables
public void init(){
//This Creates The Offscreen Buffer Zone
offscreen = createImage(getSize().width, getSize().height);
buffer = (Graphics2D)offscreen.getGraphics();
//other initialization stuff irrelevant to drawing
}
public void actionPerformed(ActionEvent evt){
if (evt.getSource() == timGame)
runGame();
}
private void runGame(){
//Do stuff, move objects
repaint();
}
public void paint(Graphics g){
super.paint(g);
buffer.clearRect(0, 0, getSize().width, getSize().height);
//draw stuff …Run Code Online (Sandbox Code Playgroud) 我有一个我正在研究的程序,它可以有效地将二进制,十进制或十六进制数转换为其他格式(不要问为什么我这样做,老实说我不知道).到目前为止,我只进行了二进制 - 十进制转换,但它工作正常,但无论何时输入的二进制数是8位数或更多,它都会崩溃.
据我输入数字10011001而言,它被转换为科学记数法并变为1.0011001E7这不会是一个问题,除了我转换数字的方式涉及创建一个具有相同值的字符串.编号并将其分解为单个字符.不幸的是,这意味着我有一个字符串值"1.0011001E7"而不是"10011001",所以当我剪切字符时,我点击"." 当我尝试用它进行计算时,程序不知道该怎么做.所以基本上我的问题归结为这个,我如何强制它使用非科学的符号版本进行这些计算?
感谢您的所有帮助,如果它有帮助,这里是代码:
//This Splits A Single String Of Digits Into An Array Of Individual Digits
public float[] splitDigits(float fltInput){
//This Declares The Variables
String strInput = "" + fltInput;
float[] digit = new float[strInput.length() - 2];
int m = 0;
//This Declares The Array To Hold The Answer
for (m = 0; m < (strInput.length() - 2); m++){
digit[m] = Float.parseFloat(strInput.substring(m, m + 1)); //Breaks here
}
//This Returns The Answer
return digit;
}
Run Code Online (Sandbox Code Playgroud)