swingでpaintメソッド使ってゲームを作成しているのですが
ダブルバッファリングの仕方がわかりません
どのようにしたらいいか調べてみたのですが
Appletの仕方しかなかったので(自分が調べた限り)
もし仕方や仕方が書いてあるサイト等があるのでしたら
教えてください
ご回答お願い致します
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
ソースコードがないため、状況を把握しにくいのですが、とりあえず次の点に注意してソースを見なおしてみて下さい。
-
通常の場合、KSwordOfHasteさんがおっしゃっている通り、swingにはダブルバッファリングの機能がありますので、特に意識する必要はないはずです。
-
ただし、JFarmeには、多分ダブルバッファリングの機能はありませんので、JFrame#paintをオーバーライドして、描画している場合はこの限りではありません。
-
そういうこともあり、普通はJFrameのpaintメソッドをオーバーライドして描画することはせずに、描画はJPanelなどで行い、そのJPanelのインスタンスをJFrameに追加するという方法をとります。
-
JPanelで描画する場合、paintメソッドをオーバーライドするのは反則行為です。paintメソッドではなく、paintComponentメソッドをオーバーライドしなくてはなりません。もし、paintをオーバーライドした場合、それは反則行為ですのでswingの様々な機能は保証されません。
ソースコードの提示がないので、
JPanelの引数をtrueにしてみても無理でした
とか言われても、それを正しく行っているのか判断がつきませんので、的確なアドバイスは行えません。
とりあえず、前述の注意点が正しく行われているか確認をしてみてください。
投稿2018/02/28 01:49
編集2018/02/28 05:54総合スコア287
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/28 05:14
2018/02/28 05:52
2018/02/28 06:45 編集
0
やることにもよるかも知れませんが・・・
(現在の最新バージョンのswingは)勝手にダブルバッファリングしてくれる気がします。ゆえにダブルバッファリングを意識しなくても多くの場合ちらつきがない結果が得られるのではないかと思います。
AppletViewerでアプレットを動かすとダブルバッファリングの配慮をするかしないかで今でもちらつきの有無が出るような印象ですがAppletってもはや使う機会がないので原因がなぜか調べたことがないです。
そこで・・・
(1) まずは「特に意識せずにやってみる」
(2) どうもちらつくなぁと思ったら、そのコードとともに改めて質問してみる
ということをお奨めします。
https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JComponent.html#isDoubleBuffered--
このメソッドでJComponentがダブルバッファリング有効状態かどうかを調べることができますが、例えばWindowsではデフォルトでtrueになっているような気がします。
投稿2018/02/27 13:28
総合スコア18394
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/27 14:02
2018/02/27 14:17
2018/02/27 14:37 編集
2018/02/27 14:37
2018/02/27 21:50
2018/02/28 03:56 編集
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。