我在这里不知所措。我有一个简单的地形生成算法,我通过扩展ViewPlatformAWTBehavior并处理我自己的事件来实现一些简单的键盘导航。这一切都很好,我可以跟随地形。万岁!
我想做的是让一些简单的“鼠标外观”工作。 MouseRotate很接近,但我正在寻找更像FPS的东西......在你不打算相机的情况下,你被限制在90度垂直(向上或向下),并且鼠标光标被捕获JFrame(有逃脱)。
我似乎无法让它发挥作用。我可以很好地捕获鼠标事件,并且mouseMoved可以工作。我可能只是使用一个不可见的光标,这会让我在那里(可能)的很大一部分,但是当我试图将鼠标放在屏幕上时我会被卡住......一旦你出去了对于框架,鼠标将可见并停止旋转视图。
我一直在想我一定是在犯这个错误,因为这必须是一个相当普遍的实现,但我找不到任何东西。
有没有人有一些指针或参考?
答案 0 :(得分:0)
如果你想要这个是制作全屏窗口的代码,它可以帮助你解决鼠标问题
package fullscreen;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class FullScreen extends JFrame{
private JPanel contentPane = new JPanel();
private JButton fullscreenButton = new JButton("Fullscreen Mode");
private boolean Am_I_In_FullScreen = false;
private int PrevX,PrevY,PrevWidth,PrevHeight;
public static void main(String[] args) {
FullScreen frame = new FullScreen();
frame.setSize(600,500);
frame.setVisible(true);
}
public FullScreen(){
super("My FullscreenJFrame");
setContentPane(contentPane);
//From Here starts the trick
FullScreenEffect effect = new FullScreenEffect();
fullscreenButton.addActionListener(effect);
contentPane.add(fullscreenButton);
fullscreenButton.setVisible(true);
}
private class FullScreenEffect implements ActionListener{
@Override
public void actionPerformed(ActionEvent arg0) {
if(Am_I_In_FullScreen == false){
PrevX = getX();
PrevY = getY();
PrevWidth = getWidth();
PrevHeight = getHeight();
dispose(); //Destroys the whole JFrame but keeps organized every Component
//Needed if you want to use Undecorated JFrame
//dispose() is the reason that this trick doesn't work with videos
setUndecorated(true);
setBounds(-10,-100,getToolkit().getScreenSize().width+30,getToolkit()
.getScreenSize().height+110);
setVisible(true);
Am_I_In_FullScreen = true;
}
else{
setVisible(true);
setBounds(PrevX, PrevY, PrevWidth, PrevHeight);
dispose();
setUndecorated(false);
setVisible(true);
Am_I_In_FullScreen = false;
}
}
}
}