[Next] [Back] [Home]

■ UpperHand Gameを作る


とりあえずAppletを動かしてみる

まずは、何はともあれAppletを動かしてみましょう。

Appletを定義する

JavaのAppletは、java.appletパッケージの Appletクラスのサブクラスとして定義する必要があります。 Appletを実行するWebブラウザやAppletViewerは、 Appletのインスタンスを生成し、 Appletクラスに定義されたメソッドを呼び出します。
Webブラウザ(およびApplet Viewer)から呼び出されるメソッドと、 呼び出されるタイミングは以下のとおりです。

メソッド名
呼ばれる契機
init()
Appletのダウンロードが完了したとき。
start()
Appletの実行を(再)開始するとき。
(Appletのダウンロード完了後、init()を呼んだ後に まず呼び出される。
その後はAppletのページに戻ったときに呼び出される。)
stop()
Appletの実行を一時停止するとき。
(Appletのページを離れるときに呼び出される。)
destroy()
Appletを破棄するとき。
(Webブラウザを終了するとき、 Appletを「Reload」するときに呼び出される。)

Appletを作る場合は、Appletクラスのサブクラスで、上記のメソッドを 必要に応じて「再定義」してあげればよいわけです。

[注釈] スーパークラスのメソッドを再定義することをJavaの用語では オーバーライドと呼びます。 init()start()stop()destroy()をオーバーライドしないと Appletクラスで定義されているメソッドが呼び出されます。 Appletクラスでは、これらのメソッドは「何もしない」という 処理が定義されています。

では、さっそくApplet UpperHandの最初のバージョンを定義しましょう。

//=============================================================================
//  UpperHand.java
//      Copyright(c) 1998 Satoshi Kobayashi, All rights reserved.
//=============================================================================

import java.applet.*;


//=============================================================================
//  class UpperHand
//      Applet UpperHand を定義するクラス。
//=============================================================================
public class UpperHand    extends Applet
{
//-----------------------------------------------------------------------------
//  クラス変数定義
//-----------------------------------------------------------------------------

//  バージョン表示用文字列
private final static String version     = "UpperHand Game 1.1a1";

//  著作権表示文字列
private final static String copyright   =   
                "Copyright(c) 1998 Satoshi Kobayashi, All rights reserved.";

//-----------------------------------------------------------------------------
//  メソッド定義
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
//  public void init()
//      Appletの初期化処理を行う。
//-----------------------------------------------------------------------------
public void init()
{
    System.err.println("UpperHand.init() called.");
}

//-----------------------------------------------------------------------------
//  public void start()
//      Appletのページに移動したときの処理を行う。
//-----------------------------------------------------------------------------
public void start()
{
    System.err.println("UpperHand.start() called.");
}

//-----------------------------------------------------------------------------
//  public void stop()
//      Appletのページから離れるときの処理を行う。
//-----------------------------------------------------------------------------
public void stop()
{
    System.err.println("UpperHand.stop() called.");
}

//-----------------------------------------------------------------------------
//  public void destroy()
//      Appletを破棄するときの処理を行う。
//-----------------------------------------------------------------------------
public void destroy()
{
    System.err.println("UpperHand.destroy() called.");
}

//-----------------------------------------------------------------------------
//  public String getAppletInfo()
//      Appletのバージョン、著作件表示を返す。
//-----------------------------------------------------------------------------
public String getAppletInfo()
{
    return version + " " + copyright;
}

}

コメントがjavadocの形式になっていませんが、ご勘弁を... (だってMRJ1.5にはjavadocがないんだもん。)

init()start()stop()destroy()は、 System.err.println()を使ってメッセージを出力しているだけです。 出力内容は、 Netscapeの場合「Java Console」、 Applet Viewerの場合「stderr」で確認できます。 メソッドの呼ばれるタイミングを実感してください。

getAppletInfo()Appletクラスで定義されているメソッドのオーバーライドです。 Appletに関する情報を文字列で返すように定義しましょう。 getAppletInfo()の返り値は、Applet Viewerでは 「Applet」メニューの「Info」で確認できます。

Appletをページに埋め込む

Appletをページに埋め込むときには、 HTMLの<APPLET>タグを使用します。
<APPLET>タグの基本的な使い方は以下のとおりです。

<APPLET
    CODEBASE = "Appletの「ベース」URL"
    CODE     = "Appletのファイル名"
    NAME     = "Appletの名前"
    WIDTH    = "Appletの幅"
    HEIGHT   = "Appletの高さ"
>

CODEBASE属性には、 AppletがあるディレクトリのURLを指定します。
<A>タグのHREF属性と同じように Appletを埋め込んだHTMLファイルからの相対パス指定も可能です。 したがって、 Appletを埋め込んだHTMLファイルとAppletのファイルが同じディレクトリにある場合は 記述する必要はありません。(だって書くべき情報がないでしょ)

CODE属性には、 Appletの(コンパイル済みの)ファイル名を指定します。

NAME属性には、 Appletのインスタンスの名前を指定します。
同じページ内のApplet同士が通信する場合、この名前を使用します。 Applet同士が通信しない場合は記述する必要はありません。

WIDTH属性、HEIGHT属性には、 Appletの幅、高さを指定します。
Appletにはデフォルトの大きさがないので、この属性は省略できません。

このほかにもいくつか使用できる属性がありますが省略します (<IMG>タグの属性によく似ています)。
また、<APPLET>タグの間には、 Appletへのパラメータを指定する<PARAM>タグ、 Appletが実行できないブラウザが代わりに表示するHTMLが記述できます。


ここまでにできあがったもの

あなたのブラウザはJavaに対応していません。

Javaソースコード (Ver. 1.1a1)



[Next] [Back] [Home]
Satoshi Kobayashi (koba@yk.rim.or.jp)