我正在尝试通过将其x和y值转换为负值(我的屏幕是500 x 500并且无法调整大小)来测试从屏幕中删除图像,然后在下一张幻灯片中将其返回到屏幕通过将x和y值转换回正值,然后我可以将它们转换回负值以再次删除它们。
在一个类(在屏幕上显示一个红色指针,我可以移动到其他项目的边界)我有这个:
import java.awt.Rectangle;
public void checkBoundariesTouching() {
NextSlide next = MainFrame.getSlide();
for (int i = 0; i < 1; i++) {
if (getBounds().intersects(next.getBounds())) {
MainFrame.slide += 1;
在我的MainFrame中,此幻灯片增加会更改背景以使我的幻灯片变得有趣并更改显示的文字。
我有另一个产生黑色矩形的类,我逐个删除它以揭示写作的一个要点然后我解释。我删除这样的矩形:
import java.awt.Rectangle;
public class BlackRectangle extends Entity {
public BlackRectangle(int x, int y) {
super(x, y);
}
public void update() {
int slide = MainFrame.getSlide();
checkBoundariesTouching();
if (slide >= 2) {
if (x < 0) {
x = -x;
}
if (y < 0) {
y = -y;
}
checkBoundariesTouching();
}
}
public void checkBoundariesTouching() {
Pointer pointer = MainFrame.getPointer();
NextSlide next = MainFrame.getSlide();
if (getBounds().intersects(pointer.getBounds())) {
x = -x;
y = -y;
}
当幻灯片等于1时,我可以毫无问题地删除黑色方块。但是,当我已经增加到下一张幻灯片时(从幻灯片2开始),当指针触摸黑色矩形时,它会被屏幕移开,但是一旦我将指针移离它,黑色矩形将返回并覆盖信息。有没有办法可以修复此代码,因为它只是更改更新方法?
答案 0 :(得分:2)
我承认我根本不太了解Java,并且两天前就开始了,但我正在尝试使用Java代码进行演示,以证明我可以在很短的时间内掌握程序的基本概念并在此基础上构建随着我的进展(我需要证明这一点,以便进入与计算机科学无关的大学课程。)
我会非常劝告你不要这样做。
如果课程的先决条件是您对编程有基本的掌握......并且您没有基本的掌握......那么您将在轨道上遇到真正的问题。特别是,如果这不是一门CS课程,如果你因为编程技巧不好而遇到问题,他们就不能帮助你。
OTOH,如果问题在于你是否胜任(比方说)C#而不是Java,那么正确的解决方案是为开发人员许可付出代价。 “因为你需要它才能将开发工作作为课程的一部分......或将来。(但你肯定能找到一种获得Visual Studio许可证的更便宜的方式。我可以从MS Store购买“带有MSDN的Visual Studio Professional 2012”,价格低于$ 1.2k澳元......没有学生折扣。)< / p>
我承认你的观点是他们没有专门测试你的Java能力。然而,他们正在测试您作为程序员的一般能力。当然,这包括你为工作选择合适的工具的能力......其中包括不尝试在你不熟悉的编程语言的紧迫期限内进行编程!!
答案 1 :(得分:1)
如果在slide = 1时代码工作正常,我建议删除它:
if (slide >= 2) {
if (x < 0) {
x = -x;
}
if (y < 0) {
y = -y;
}
checkBoundariesTouching();
}
如果您需要该代码在屏幕上移回框,您可以将if语句放在单独的方法中,并在更改幻灯片时调用该方法。
答案 2 :(得分:0)
检查更新方法中的其他条件。该方法必须如下所示: -
public void update() {
int slide = MainFrame.getSlide();
checkBoundariesTouching();
if (slide >= 2) {
if (x < 0) {
x = x*-1;
}
if (y < 0) {
y = y*-1;
}
}
}
public void checkBoundariesTouching() {
Pointer pointer = MainFrame.getPointer();
NextSlide next = MainFrame.getSlide();
if (getBounds().intersects(pointer.getBounds())) {
if(x>0){
x = -x;
}
if(y>0){
y = -y;
}
}