作者keeperkai (keeperkai)
看板java
标题[问题] applet执行结果和在eclipse中执行不一样
时间Wed Oct 20 20:09:43 2010
想要请问一下板上的高手 小弟最近在想applet到底能不能改变萤幕解析度,然後做出像
CS那样全萤幕的游戏,如果是在eclipse执行利用GraphicsEnvironment....etc可以很容
易做到,但是如果要放入网页呢? 所以小弟写了以下:
import java.awt.Color;
import java.awt.DisplayMode;
import java.awt.Graphics;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Window;
import javax.swing.JApplet;
import javax.swing.JFrame;
public class myapp extends JApplet{
private GraphicsDevice vc;private GraphicsEnvironment env;
private DisplayMode dm;String s="";
public void init(){
dm=new DisplayMode(800,600,16,0);
env=GraphicsEnvironment.getLocalGraphicsEnvironment();
vc=env.getDefaultScreenDevice();
setFullScreen(dm);
long st=System.currentTimeMillis();
while (st+5000>System.currentTimeMillis()){
Window w=vc.getFullScreenWindow();
Graphics g=w.getGraphics();
g.setColor(Color.BLUE);
g.fillRect(0, 0, 800, 600);
g.setColor(Color.red);
g.fillOval(30, 30, 300, 300);
g.setColor(Color.black);
g.drawString(s, 500, 300);
g.dispose();
}
Window w=vc.getFullScreenWindow();
w.dispose();
vc.setFullScreenWindow(null);
}
public void setFullScreen(DisplayMode dm){
JFrame f=new JFrame();
f.setUndecorated(true);
f.setResizable(false);
f.setIgnoreRepaint(true);
vc.setFullScreenWindow(f);
if (vc.isDisplayChangeSupported()){
try{
vc.setDisplayMode(dm);
s="is ok";
}catch(Exception ex){s="not ok";}
}else{s="no support";}
}
}
来做实验,结果很奇怪,在eclipse内执行可以顺利得到全萤幕并画上该画的东西(当然
没用bufferstrategy,因为只是要做实验),并且顺利设定displaymode(drawstring显示
is ok,但当我自己真的在html中嵌入此applet时,开了该html,就不能改变displaymode
(drawstring显示是no support),而且不但解析度不变,也没进入真正的fullscreen,因
为下面"开始"那排控制列不会消失。
难道是放在网页中部份的操作就不能执行吗? 所以这麽说来不能在网页中嵌入applet制作
全萤幕的mouselook游戏?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 121.254.118.167
1F:→ ogamenewbie:为什麽client要给网页或网页应用程式这样的权限? 10/21 18:25