分12静的なメソッドを定義するそれでは,クラスMyTimerにtranslateToTimeObject()をメソッドとして定義しよう。問題はその定義の仕方だ。通常は,getElapsedTime()メソッドのように,インスタンスを参照して呼出すメソッドとして定義する(※1⁠)⁠。ところが,translateToTimeObject()は,インスタンスを参照する必要性がない。引数として渡された数値に算術演算を施して返すだけで,インスタンスのプロパティなどの情報がまったく要らないからだ。このような場合,クラスの「静的(static)なメソッド」として定義することが考えられる。静的なメソッドは,Math.sin()やMath.cos()メソッドなどのように,インスタンスを作成することなくクラスを直接参照して呼出す(※3⁠)⁠。インスタンスでなく,クラス自身に定義されたメソッドである。今回,translateToTimeObject()は,クラスMyTimerの静的メソッドとして定義しよう。静的なメソッドは,その定義に属性としてstaticを指定する(スクリプト2⁠)⁠。静的なメソッドはそれが汎用的であれば,他のクラスやフレームアクションから利用する場合も少なくない。そこで,translateToTimeObject()メソッドも,アクセス制御の属性にはpublicを指定した。以上ふたつの属性の指定を除けば,メソッドの定義は前述フレームアクションの関数(スクリプト1)と変わるところはない。}}静的メソッドは,クラスを参照して呼出す。クラス自身の内部からアクセスする場合には,前記スクリプト2のようにクラスの参照は省略できる。translateToTimeObject()メソッドにはpublic属性を指定したので,Flashムービー(FLA)ファイルから呼出せる。つぎのようなフレームアクションでテストしてみるとよいだろう。クリックしたときの経過時間の時分秒ミリ秒が[出力]※3)同じように,クラスを直接参照してアクセスする「静的なプロパティ」もある。Math.PIがその例だ(厳密には,静的な定数とされる⁠)⁠。静的なプロパティやメソッドは「クラスプロパティ」および「クラスメソッド」とも呼ばれ,前出注[*1]の「インスタンスプロパティ」や「インスタンスメソッド」と対比される。今回解説した次のサンプルファイルがダウンロードできます。