学生向けにプログラミングを解説。次>>基本的には複数のイメージを生成して、順次表示させることでアニメーションとなります。アニメーションを行う場合、「repaint()」で画面描画を制御する必要があります。以下のサンプルプログラムを作成してください。{//キャラクター、障害物の消去(全画面消去)//オフスクリーン・バッファへの描き込み。10;}x+=moveCount;//オフスクリーン・バッファへの描き込み。実際にはまだ見えない。Thread(canvas).start();}}このプログラムを実行するには画像ファイルが必要です。char0.gif〜char6.gifをプログラムを保存するのと同じフォルダ(ディレクトリ)に保存してください。[char0.gif][char1.gif][char2.gif][char3.gif][char4.gif][char5.gif][char6.gif]アニメーションさせる場合、「止まって見える時間」を作る必要があります。今回は、「スレッド」と呼ばれる機能を利用します。スレッドはjava.lang.Threadクラスで定義されており、ひとつのプログラムの中で並列した処理を行える機能のことを言います。スレッドにはいろいろな機能がありますので、全部一気に覚えようとはせず、出てきた機能を順番に一つずつ覚えていってください。スレッドを行うには二通りの方法があります。Runnableインターフェイスを実装する方法を示します。Runnableインターフェイスを実装すると、run()メソッドを実装しますので、runメソッドの処理を記述します。下の例では、実行を一時停止するThreadクラスのsleep()メソッドを呼び出しています。スレッドは「Thread(test).start()」のように、スレッドを実装したクラスを引数としてオブジェクトを生成し、start()メソッドで、run()メソッドの処理を実行します。}インターフェイスは、コンストラクタを持たず、フィールドとメソッドを持っています。インターフェイスに記述されているフィールドやメソッドを利用するには、インターフェイスを実装しなければなりません。実装するには、implementsの後に利用するインターフェイス名を記述します。このように、インターフェイスを実装したクラスのオブジェクトを作成するには、インターフェイスのメソッドをすべて定義するという作業が必要になります。上のプログラムのように、Runnableインターフェイスを実装したら、Runnableインターフェイスが持つ、run()メソッドは必ず記述しなければなりません。記述しなければコンパイル時にエラーとなります。ここで、少しextends(継承)とimplements(実装)の違いについて説明しておきます。クラスの継承とは、スーパークラスの機能を引き継ぎ、それに機能を追加して拡張することであり、インターフェイスの実装とは、インターフェイスで定義されたメソッドの処理内容を記述することです。インターフェイスにだけ許されていることもあります。それは、1つのクラスが複数のインターフェイスを継承して実装する多重継承が許可されているということです。クラスの多重継承が煩雑になるという理由から、C++で許可されていたクラスの多重継承が、Javaでは禁止されています。定数とメソッドのプロトタイプの定義だけなら同時に複数継承しても煩雑にはならないだろうという理由から、Javaではインターフェイスの多重継承が許可されています。多重継承ではなく、多重実装と呼ぶべきかもしれません。インタフェースを実装する必要があります。定義しなければなりません。このインタフェースは、アクティブな間にコードを実行したいオブジェクトが使う、共通のプロトコルを提供するために設計されています。クラスによって実装されます。アクティブであるということは、スレッドが開始されて、まだ終了していない状態を意味します。サブクラス化せずにクラスをアクティブにする手段を提供します。サブクラス化をしなくても実行できます。インタフェースを使用します。これは、クラスの基本的な動作を修正または拡張するのでない限り、そのクラスをサブクラス化することは好ましくないため、重要です。次にThreadクラスの子クラスとしてスレッドを利用する場合の例を挙げておきます。スレッドは「test.start()」のように、生成したThreadクラスのstart()メソッドで利用します。先の例と同様に処理はrun()メソッドで行います。}}キャンバスに多数の図形やイメージを描画すると書き替えの際の「ちらつき」が気になる場合が多いです。それを避けるためには、「ダブルバッファリング」という手法を使います。ダブルバッファリングは、「オフスクリーン」と呼ばれる仮想的な画面に描画して、すべてを描画してから、表示可能なキャンバスに描画を行うというものです。オフスクリーンでの描画が間に合わないと「コマ落ち」のような表示になる場合もあります。//全画面消去//オフスクリーン・バッファへの書き込み。thisというものを使っています。これは、このクラスのコンストラクタの情報を与えているものです。難しいのですが、今はこのようにして使うものだと思って使用してください。Canvasで、Canvasクラスのフィールド、メソッドをすべて継承しています。これにより、コンストラクタ内ですべてを記述することなく、Canvasの機能を使うことが出来ます。必要な部分のみ記述することで、その部分のみを書き換えることが出来ます。Runnableインターフェイスを実装して、Threadを使用しています。継承は一つのクラスに一つしか許されていませんが、実装は何個でもすることが出来ます。今回は一つずつしかしていませんが。プログラムを実行してみましょう。大きさ(500,400)のフレームが表示され、中にキャンバスが表示されています。キャンバスにはcahr0.gif〜char6.gifの画像が指定された位置にアニメーション表示されています。一定の時間でキャラクターが左右に行ったり来たりします。その下に指定したフォントで「サンプル画像の表示」と表示されます。フレームの終了ボタンは使えませんので、Ctrlキー+Cキーで強制終了してください。ここからは、Swingについて取り上げていきます。まとめはてなブログをはじめよう!MrRadiologyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。