![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Javaアプレットで題名の通り再描画をするときにちらつきます。
ソースコードは大まかに表すとこのような感じです。
/*test.java*/
import java.applet.*
import java.awt.Image;
public class test extends Applet implements Runnable{
int a = b = c = d = e = f = g = h = 0;
Thread th;
Image im;
AudioClip au;
public void init(){
im = getImage(getDocumentBase('image.gif'););
au = getAudioClip(getDocumentBase('test.wav'););
a = c = e = g = 0;
th = new Thread();
th.start();
au.loop();
}
public void run(){
try{
while(true){
repaint();
}
}catch(){例外処理}
}
public void stop(){
au.stop();
}
public void paint(Graphics g){
g.drawImage(im,a,b,c,d,e,f,g,h);
}
}
※
test.gif = 6KB
test.wav = 400KB
ついでに書いておきます。
OS:Me
CPU:AMD アスロン 800MHz
メモリ:256MB
起動時のリソース残量:77%
上のソースコードはうろ覚えなので、
間違えている箇所があるかもしれませんが、
コンパイルは正常に終了し、起動時エラーもありません。
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
こんばんは。
コードが不完全なので、何がしたいのかよくわからないのですが、たぶん、絵が移動するアニメーションか何かをしたいのだと思います。
ここでちらついてしまうのはコンポーネントの再描画方法に原因があります。
Appletのrepaintメソッドを呼んでいますが、ここから何がおきるかというと、
repaintメソッド
↓
updateメソッド
コンポーネントの背景色で塗りつぶしが行われ、paintメソッドを呼ぶ。
↓
paintメソッド
絵を描く。
つまり、repaintが何度も呼ばれることによって、
塗りつぶし→絵を描く→塗りつぶし→絵を描く
が、何度も繰り返され、ちらつきになってしまうのです。
これを回避するためにダブルバッファリングという方法があります。
参考URLを載せておきますので、勉強してみてください。
参考URL:http://hp.vector.co.jp/authors/VA012735/java/dbu …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java java final 1 2022/06/10 22:49
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- Java javaのクラスの分け方について質問です。 APIの内部用と外部用でクラスを分けたいのですがインター 2 2022/04/26 16:06
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#で、あるクラスのメンバーす...
-
C#でのWNetAddConnection3の使...
-
unityでのC++エラーの原因がわ...
-
C#で別のFormへ複数の値を返そ...
-
大量のデータを読み込んで表示...
-
ピクチャボックスのクリックイ...
-
メンバ変数の隠蔽
-
Javaでデリゲート
-
長方形をドラッグするJavaアッ...
-
JavaFXでの表内のチェックボッ...
-
Junitテストでvoid戻り値メッソ...
-
Thread.sleepのInterruptedExce...
-
[C#.net]スレッド化された別フ...
-
クラス配列で例外ヌルリファレ...
-
アプレットでマウスイベントが...
-
文字列の置換
-
キーリピート?(Javaプログラミ...
-
ボタンの複数割り当てについて
-
vc++ 2005 Pictureboxの透過処理
-
C#でレート別に管理するクラス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
C#で、あるクラスのメンバーす...
-
Junitテストでvoid戻り値メッソ...
-
C#でのWNetAddConnection3の使...
-
Processingでマウスクリックで...
-
ボタンの複数割り当てについて
-
エンターキーを押すとOKボタン...
-
C# 矢印キーの取得
-
C# visibleプロパティをfalseに...
-
Thread.sleepのInterruptedExce...
-
C# DataGridView列カスタマイズ
-
C#でキーイベントが発生しない...
-
LVM_SETITEMSTATEでListViewの...
-
[C#.net]スレッド化された別フ...
-
GetDIBits関数の使い方について
-
C# 半角カナの文字化けについて
-
C# 親フォームで指定した値を...
-
javaアプレット repaintのタイ...
-
デスクトップマスコットのドラ...
-
C#で別のFormへ複数の値を返そ...
おすすめ情報