Javaのアプレットについて
Javaのアプレットでゲームを作ろうとしているのですが、フリー音楽制作ソフトの「Domino」を起動したままアプレットを使うと処理速度が速くなってしまうことがわかりました。
一応自分なりに原因を考えたのですが確証がないので、原因をご存知の方がいらっしゃれば教えていただきたいです。また、そうでなくても、何か参考になることや、皆さんなりの考え、どのようなパソコン・ソフトで同じ症状が出るのか、など、些細なことでもいいので教えていただきたいです。
わからないなりに僕が考えたのは、Dominoが使っているシステム時間とアプレットのシステム時間にはつながりがあって、Domino側がそこをいじってしまうせいでアプレットがおかしくなっているのではないか、というものです。そもそもアプレットの書き方がおかしいのかもしれませんが・・・(「考えた」ってほどよく考えてない・・・)
一応確認している範囲では、「Domino」、「Music Studio Producer」、「RPGツクールXP」などのDirectX使用ソフト、「YouTube」などの動画サイト、などなどを同時に起動していると処理が速くなることを確認しています。
問題が解決できないものであったとしても、説明書に対処法を書きたいので、よろしくお願いします。
一応、適当に作った実験用のプログラムを書いておきます。
----------------------------------------------------
import java.applet.Applet;
import java.awt.*;
public class Test extends Applet implements Runnable{
Thread thread;
Image bufferImage;
Graphics bufG;
int to_x,to_y,to_x2,to_y2,count,time;
long preTime, nowTime;
final int fps = 60;
final double frameTime = 1000 / fps;
public void init(){
to_x=to_y=to_x2=to_y2=0;
count=0;
time=0;
preTime = 0;
nowTime = 0;
requestFocus();
thread = new Thread(this);
thread.start();
}
public void run(){
while(true){
count++;
if(count>=60)
{
count=0;
time++;
if(time>=60)
{
time=0;
}
}
to_x = (int)(200 * Math.cos(Math.PI*(time-15)/60*2)) + 400;
to_y = (int)(200 * Math.sin(Math.PI*(time-15)/60*2)) + 240;
to_x2 = (int)(100 * Math.cos(Math.PI*(count-15)/60*2)) + 130;
to_y2 = (int)(100 * Math.sin(Math.PI*(count-15)/60*2)) + 350;
while(nowTime-preTime < frameTime){
nowTime = System.currentTimeMillis();
}
preTime = nowTime;
repaint();
}
}
public void paint(Graphics g){
bufferImage = createImage(640,480);
bufG = bufferImage.getGraphics();
bufG.setColor(Color.black);
bufG.fillRect(0, 0, 640, 480);
bufG.setColor(Color.white);
bufG.drawLine(400,240,to_x,to_y);
bufG.drawLine(130,350,to_x2,to_y2);
bufG.setFont(new Font("Serif",Font.BOLD + Font.ITALIC,14));
bufG.drawString("time = " + time,20,30);
bufG.drawString("milli_second = " + 1000*count/60,20,60);
g.drawImage(bufferImage, 0, 0, this);
}
public void update(Graphics g){
paint(g);
}
}
お礼
大変参考になります。 回答有難うございました。