(57)【要約】インタプリタ部１１は、所定のスクリプト変数を用いて定義されたアニメーション描画指示を解釈したとき、描画依頼を前記アニメーション制御部に出力する。アニメーション制御部１２は、ネイティブ言語で記述されたプログラムモジュールを実行することで、ＧＵＩをアニメーション表示する。そして、アニメーション制御部１２は、描画依頼を受け付けたとき、スクリプト変数をネイティブ言語の形式のネイティブ変数に変換し、ネイティブ変数を逐次更新しながらＧＵＩをアニメーション表示する。
2012011228.tif 000002
【特許請求の範囲】
【請求項１】
インタプリタ型のスクリプト言語で記述されたスクリプトデータを実行することでＧＵＩ（グラフィカルユーザインターフェイス）をアニメーション表示するアニメーション描画装置であって、
前記スクリプトデータをインタプリタ方式で逐次解釈するインタプリタ部と、
ネイティブ言語で記述されたプログラムモジュールを実行することで、前記ＧＵＩをアニメーション表示するアニメーション制御部とを備え、
前記インタプリタ部は、所定のスクリプト変数を用いて定義されたアニメーション描画指示を解釈したとき、描画依頼を前記アニメーション制御部に出力し、
前記アニメーション制御部は、前記描画依頼を受け付けたとき、前記スクリプト変数を前記ネイティブ言語の形式のネイティブ変数に変換し、前記ネイティブ変数を逐次更新しながら前記ＧＵＩをアニメーション表示するアニメーション描画装置。
【請求項２】
前記アニメーション制御部は、前記スクリプト変数に基づいて、アニメーションを開始してから完了するまでの１又は複数の描画時点における前記ＧＵＩの状態を示す変更予定情報を生成し、前記変更予定情報が示す描画時点に到達したとき、その描画時点における前記ネイティブ変数を前記インタプリタ部に出力すると共に、アニメーションが完了したとき完了通知を前記インタプリタ部に出力する請求項１記載のアニメーション描画装置。
【請求項３】
前記アニメーション制御部は、前記変更予定情報を前記インタプリタ部に出力する請求項２記載のアニメーション描画装置。
【請求項４】
前記インタプリタ部は、アニメーションが開始されたとき、前記スクリプト変数が前記ネイティブ変数と同期していないことを示す非同期フラグを立て、前記アニメーション制御部から前記完了通知を受けたとき、前記非同期フラグを倒し、前記非同期フラグを立てている間に、ユーザが入力装置を操作することで所定の入力イベントが発生した場合、前記アニメーション制御部に前記ネイティブ変数を出力させる同期処理を実行する請求項２又は３記載のアニメーション描画装置。
【請求項５】
前記インタプリタ部は、前記スクリプト変数に基づいて、アニメーションを開始してから完了するまでの１又は複数の描画時点における前記ＧＵＩの状態を示す変更予定情報を生成し、前記変更予定情報を前記アニメーション制御部に出力し、
前記アニメーション制御部は、前記変更予定情報が示す描画時点に到達したとき、その描画時点における前記ネイティブ変数を、前記インタプリタ部に出力すると共に、アニメーションが完了したとき完了通知を前記インタプリタ部に出力する請求項１記載のアニメーション描画装置。
【請求項６】
前記インタプリタ部は、前記変更予定情報を前記アニメーション制御部に出力する請求項５記載のアニメーション描画装置。
【請求項７】
前記インタプリタ部は、アニメーションが開始されたとき、前記スクリプト変数が前記ネイティブ変数と同期していないことを示す非同期フラグを立て、前記アニメーション制御部から前記完了通知を受けたとき、前記非同期フラグを倒し、前記非同期フラグを立てている間に、ユーザが入力装置を操作することで所定の入力イベントが発生した場合、前記アニメーション制御部に前記ネイティブ変数を出力させる同期処理を実行する請求項５又は６記載のアニメーション描画装置。
【請求項８】
前記変更予定情報は、アニメーションが開始されてから何番目のフレームであるかを示すタイムスタンプを用いて前記描画時点を示す請求項２〜７のいずれかに記載のアニメーション描画装置。
【請求項９】
前記変更予定情報は、前記描画時点におけるＧＵＩオブジェクトの属性情報を含む請求項２〜８のいずれかに記載のアニメーション描画装置。
【請求項１０】
前記インタプリタ部は、前記アニメーション描画指示を解釈したとき、画面上に表示されたポインタの位置を前記アニメーション制御部に出力し、
前記アニメーション制御部は、前記インタプリタ部から出力されたポインタの位置を記憶装置に記憶させ、アニメーションの実行中に前記記憶装置に記憶させたポインタの位置と前記ネイティブ変数とを比較することで、前記ＧＵＩを構成するＧＵＩオブジェクトとの前記ポインタとの重なり状態が変化したことを検出したとき、そのときの前記ネイティブ変数を前記インタプリタ部に出力する請求項１記載のアニメーション描画装置。
【請求項１１】
グラフィクスプロセッサ部を制御するグラフィクス描画制御部を更に備え、
前記アニメーション制御部は、１フレームの描画時点に到達する毎に、前記ネイティブ変数を更新し、１フレームを描画するための描画指示を前記グラフィクス描画制御部に出力し、
前記グラフィクス描画制御部は、前記アニメーション制御部から描画指示を受け付けると、受け付けた描画指示を、前記グラフィクスプロセッサ部が実行可能な低レベルの描画コマンドに分解し、描画コマンドを前記グラフィクスプロセッサ部に出力する請求項１〜１０のいずれかに記載のアニメーション描画装置。
【請求項１２】
前記インタプリタ部は、ハッシュ検索を用いて前記スクリプト変数にアクセスする請求１〜１１のいずれかに記載のアニメーション描画装置。
【請求項１３】
インタプリタ型のスクリプト言語で記述されたスクリプトデータを実行することでＧＵＩ（グラフィカルユーザインターフェイス）をアニメーション表示するアニメーション描画装置としてコンピュータを機能させるアニメーション描画プログラムであって、
前記スクリプトデータをインタプリタ方式で逐次解釈するインタプリタ部と、
ネイティブ言語で記述されたプログラムモジュールを実行することで、前記ＧＵＩをアニメーション表示するアニメーション制御部としてコンピュータを機能させ、
前記インタプリタ部は、所定のスクリプト変数を用いて定義されたアニメーション描画指示を解釈したとき、描画依頼を前記アニメーション制御部に出力し、
前記アニメーション制御部は、前記描画依頼を受け付けたとき、前記スクリプト変数を前記ネイティブ言語の形式のネイティブ変数に変換し、前記ネイティブ変数を逐次更新しながら前記ＧＵＩをアニメーション表示するアニメーション描画プログラム。
【請求項１４】
インタプリタ型のスクリプト言語で記述されたスクリプトデータを実行することでＧＵＩ（グラフィカルユーザインターフェイス）をアニメーション表示するアニメーション描画方法であって、
インタプリタ部が、前記スクリプトデータをインタプリタ方式で逐次解釈するインタプリタステップと、
アニメーション制御部が、ネイティブ言語で記述されたプログラムモジュールを実行することで、前記ＧＵＩをアニメーション表示するアニメーション制御ステップとを備え、
前記インタプリタステップは、所定のスクリプト変数を用いて定義されたアニメーション描画指示を解釈したとき、描画依頼を前記アニメーション制御部に出力し、
前記アニメーション制御ステップは、前記描画依頼を受け付けたとき、前記スクリプト変数を前記ネイティブ言語の形式のネイティブ変数に変換し、前記ネイティブ変数を逐次更新しながら前記ＧＵＩをアニメーション表示するアニメーション描画方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インタプリタ型のスクリプト言語で記述されたスクリプトデータを実行することでＧＵＩ（グラフィカルユーザインターフェイス）をアニメーション表示する技術に関するものである。
【背景技術】
【０００２】
近年、ＧＵＩは、コンピュータの処理性能向上とスクリプト言語を用いるＷｅｂブラウザの機能向上とに呼応してアニメーション表示が可能となっている。そのため、近年のＷｅｂブラウザは、ＧＵＩをアニメーション表示するためのアニメーション描画機能を内包しているのが一般的である。【０００３】
このようなＷＥＢブラウザは、インタプリタ型のスクリプト言語で記述されたスクリプトデータを逐次実行し、ＧＵＩをアニメーション表示する。このようなスクリプトデータを実行して、ＧＵＩをアニメーション表示する技術として、例えば、特許文献１が知られている。図１５は、特許文献１に示されるような、スクリプトデータを実行することでＧＵＩをアニメーション表示する従来のアニメーション描画装置７０の一般的な構成を示したブロック図である。【０００４】
図１５に示すアニメーション描画装置７０は、スクリプトデータ記憶部７０１、インタプリタ部７０２、グラフィクス描画制御部７０３、及びグラフィクスプロセッサ部７０４を備えている。表示装置７１は、アニメーション描画装置７０により描画されるアニメーションを表示する装置である。スクリプトデータ記憶部７０１は、ＧＵＩをアニメーション表示するためのスクリプトデータを記憶している。ここで、スクリプトデータは、インタプリタ型のスクリプト言語で記述されたデータであり、例えば、ＪａｖａＳｃｒｉｐｔ（登録商標）等で記述されている。【０００５】
このスクリプトデータは、アニメーション対象となるＧＵＩを構成するＧＵＩオブジェクトの属性情報を定義するためのデータや、ＧＵＩをアニメーション表示するためのアニメーション描画指示が記述されている。【０００６】
属性情報とは、表示されるＧＵＩオブジェクトの座標、サイズ、拡大縮小率、回転率（ロール角、ピッチ角、ヨー角）、色、透過度、画像等を定義するデータである。例えば、ＧＵＩオブジェクトを表示装置７１の画面上で直線的に移動させるアニメーションを実現する場合、始点の座標及び終点の座標を変数とし、この変数を少しずつ変化させてＧＵＩオブジェクトを少しずつ移動させるといったループ処理が、スクリプトデータに記述される。【０００７】
インタプリタ部７０２は、スクリプトデータを逐次解釈し、解釈する毎にグラフィクス描画指示をグラフィクス描画制御部７０３に出力する。【０００８】
グラフィクス描画制御部７０３は、インタプリタ部７０２から指示されたグラフィクス描画指示をグラフィクスプロセッサ部７０４が実行可能な低レベルの描画コマンドに分解し、描画コマンドをグラフィクスプロセッサ部７０４に出力する。グラフィクス描画制御部７０３は、ソフトウェアで構成され、一般的には、グラフィクス・ライブラリ又はデバイス・ドライバ等と呼ばれている。【０００９】
グラフィクスプロセッサ部７０４は、グラフィクス描画制御部７０３から出力された描画コマンドを実行し、内蔵するフレームバッファにフレームを描画することによりグラフィクスを生成する。グラフィクスプロセッサ部７０４は、グラフィクス・プロセッシング・ユニット（略称ＧＰＵ）等のハードウェアで構成されている。【００１０】
図１６は、従来のアニメーション描画装置７０を用いた場合に記述されるスクリプトデータ７０１ａの構造を概念的に示した図である。図１６に示すように、スクリプトデータ７０１ａは、ＧＵＩをアニメーション表示するために記述されたアニメーション制御プログラム７０１１を含んでいることが分かる。【００１１】
しかしながら、アニメーション制御プログラム７０１１は、インタプリタ型のスクリプト言語で記述されているため、インタプリタ部７０２は、検索処理を頻繁に実行する必要がある。この検索処理により、アニメーション描画装置７０は、ＧＵＩをアニメーション表示する際の実行速度を上げることができないという課題があった。【００１２】
一方、ＧＵＩをアニメーション表示する際の実行速度を上げる手法としてスクリプト言語で記述されたアニメーション処理をネイティブ言語で記述されたネイティブのプログラムに置き換える手法が知られている。この場合、スクリプトデータ７０１ａはインタプリタ部７０２を介してネイティブのプログラムのＡＰＩを呼び出し、このＡＰＩにアニメーションの処理を実行させていた。周知のように、ネイティブ言語のプログラムは、スクリプト言語のプログラムに比較して処理時間が短いため、この置き換える手法によれば、アニメーションの実行速度を上げることができる。【００１３】
しかしながら、この従来の手法では、ネイティブ言語のプログラムはインタプリタ部７０２から変数を取り込んでアニメーション処理を行う必要があったため、取り込み時にインタプリタ部７０２に変数の検索処理が発生する結果、ＧＵＩの実行速度が低下するという問題があった。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００１−６００１号公報
【発明の概要】
【００１５】
本発明の目的は、ＧＵＩのアニメーションの実行速度を上げることができる技術を提供することである。
【００１６】
本発明の一局面によるアニメーション描画装置は、インタプリタ型のスクリプト言語で記述されたスクリプトデータを実行することでＧＵＩ（グラフィカルユーザインターフェイス）をアニメーション表示するアニメーション描画装置であって、前記スクリプトデータをインタプリタ方式で逐次解釈するインタプリタ部と、ネイティブ言語で記述されたプログラムモジュールを実行することで、前記ＧＵＩをアニメーション表示するアニメーション制御部とを備え、前記インタプリタ部は、所定のスクリプト変数を用いて定義されたアニメーション描画指示を解釈したとき、描画依頼を前記アニメーション制御部に出力し、前記アニメーション制御部は、前記描画依頼を受け付けたとき、前記スクリプト変数を前記ネイティブ言語の形式のネイティブ変数に変換し、前記ネイティブ変数を逐次更新しながら前記ＧＵＩをアニメーション表示する。
【００１７】
本発明の別の一局面によるアニメーション描画プログラムは、インタプリタ型のスクリプト言語で記述されたスクリプトデータを実行することでＧＵＩ（グラフィカルユーザインターフェイス）をアニメーション表示するアニメーション描画装置としてコンピュータを機能させるアニメーション描画プログラムであって、前記スクリプトデータをインタプリタ方式で逐次解釈するインタプリタ部と、ネイティブ言語で記述されたプログラムモジュールを実行することで、前記ＧＵＩをアニメーション表示するアニメーション制御部としてコンピュータを機能させ、前記インタプリタ部は、所定のスクリプト変数を用いて定義されたアニメーション描画指示を解釈したとき、描画依頼を前記アニメーション制御部に出力し、前記アニメーション制御部は、前記描画依頼を受け付けたとき、前記スクリプト変数を前記ネイティブ言語の形式のネイティブ変数に変換し、前記ネイティブ変数を逐次更新しながら前記ＧＵＩをアニメーション表示する。
【００１８】
本発明の更に別の一局面によるアニメーション描画方法は、インタプリタ型のスクリプト言語で記述されたスクリプトデータを実行することでＧＵＩ（グラフィカルユーザインターフェイス）をアニメーション表示するアニメーション描画方法であって、インタプリタ部が、前記スクリプトデータをインタプリタ方式で逐次解釈するインタプリタステップと、アニメーション制御部が、ネイティブ言語で記述されたプログラムモジュールを実行することで、前記ＧＵＩをアニメーション表示するアニメーション制御ステップとを備え、前記インタプリタステップは、所定のスクリプト変数を用いて定義されたアニメーション描画指示を解釈したとき、描画依頼を前記アニメーション制御部に出力し、前記アニメーション制御ステップは、前記描画依頼を受け付けたとき、前記スクリプト変数を前記ネイティブ言語の形式のネイティブ変数に変換し、前記ネイティブ変数を逐次更新しながら前記ＧＵＩをアニメーション表示する。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態１におけるアニメーション描画装置の構成図である。
【図２】本発明の実施の形態１におけるアニメーション描画装置の構成要素間におけるデータの授受を示したタイミングチャートである。
【図３】本発明の実施の形態１におけるアニメーション描画装置の処理を示すフローチャートである。
【図４】本発明の実施の形態１の変形例におけるアニメーション描画装置の構成要素間のデータの授受を示したタイミングチャートである。
【図５】本発明の実施の形態１の変形例におけるアニメーション描画装置の処理を示すフローチャートである。
【図６】本発明の実施の形態におけるスクリプトデータに記述された属性情報をテーブル形式で示した属性情報テーブルを示した図である。
【図７】アニメーション開始時にインタプリタ部がアニメーション制御部に描画依頼として出力するスクリプト変数の一例を示した図である。
【図８】本発明の実施の形態１における変更予定情報の一例を示した図である。
【図９】本発明の実施の形態におけるスクリプトデータにしたがって、表示装置の画面にアニメーション表示されるＧＵＩを示した画面図である。
【図１０】本発明の実施の形態２によるアニメーション描画装置の構成図を示している。
【図１１】本発明の実施の形態２におけるアニメーション描画装置の構成要素間のデータの授受を示すタイミングチャートである。
【図１２】本発明の実施の形態２におけるアニメーション描画装置の処理を示すフローチャートである。
【図１３】本発明の実施の形態１及び２のアニメーション描画装置において用いられるスクリプトデータの一例を示した図である。
【図１４】従来のＧＵＩアニメーション描画装置において用いられていたスクリプトデータの一例を示した図である。
【図１５】特許文献１に示されるような、スクリプトデータを実行することでＧＵＩをアニメーション表示する従来のアニメーション描画装置の一般的な構成を示したブロック図である。
【図１６】従来のアニメーション描画装置を用いた場合に記述されるスクリプトデータの構造を概念的に示した図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００２１】
（実施の形態１）
図１は、本発明の実施の形態１におけるアニメーション描画装置１０の構成図である。図１に示すアニメーション描画装置１０は、インタプリタ部１１、アニメーション制御部１２、グラフィクス描画制御部１３、グラフィクスプロセッサ部１４、スクリプトデータ記憶部２１、変更予定情報記憶部２２，２３、非同期フラグ記憶部２４、スクリプト変数記憶部２５、及びネイティブ変数記憶部２６を備えている。
【００２２】
インタプリタ部１１は、スクリプトデータ記憶部２１に記憶されたＧＵＩをアニメーション表示するスクリプトデータをインタプリタ方式で逐次解釈する。本実施の形態では、インタプリタ部１１は、所定のスクリプト変数を用いて定義されたアニメーション描画指示を解釈したとき、描画依頼をアニメーション制御部１２に出力する。
【００２３】
アニメーション制御部１２は、ネイティブ言語で記述されたプログラムモジュールを実行することで、ＧＵＩをアニメーション表示する。本実施の形態では、アニメーション制御部１２は、インタプリタ部１１からの描画依頼を受け付けたとき、スクリプト変数をネイティブ言語の形式のネイティブ変数に変換し、ネイティブ変数を逐次更新しながらＧＵＩをアニメーション表示する。
【００２４】
このように、アニメーション制御部１２は、スクリプト変数とは独立したネイティブ変数を逐次更新しながらＧＵＩをアニメーション表示することができる。そのため、アニメーション制御部１２は、アニメーションの途中でインタプリタ部１１から変数を取り込む必要がなくなり、アニメーション制御部１２が変数を取り込む際にインタプリタ部１１で発生する検索処理が無くなる結果、アニメーションの実行速度を高めることができる。
【００２５】
つまり、ネイティブ言語で記述されたプログラムモジュールが実行される際、スクリプト変数のコピーであるネイティブ変数がプログラムモジュールに代入される。ここで、ＧＵＩアニメーションにおいては、スクリプト変数として、ＧＵＩオブジェクトの属性情報が採用される。
【００２６】
ネイティブ言語で記述されたプログラムモジュールはアニメーションの実行過程においてＧＵＩオブジェクトの属性情報に頻繁にアクセスするが、アクセス先はネイティブ変数の属性情報であるため、アクセスに要する時間は、スクリプト言語の属性情報をアクセスする場合に比べて大幅に小さい。そのため、アニメーションの実行速度を高めることができる。なお、ネイティブ言語としては、機械語が採用される。また、インタプリタ部１１が行う検索処理としては、処理負担が高い例えばハッシュ検索が採用される。
【００２７】
また、アニメーション制御部１２は、スクリプト変数に基づいて、アニメーションを開始してから完了するまでの１又は複数の描画時点におけるＧＵＩの状態を示す変更予定情報を生成する。そして、アニメーション制御部１２は、変更予定情報が示す描画時点に到達したとき、その描画時点におけるネイティブ変数をインタプリタ部１１に出力する。
【００２８】
ネイティブ変数が更新されてもスクリプト変数にはその更新が全く反映されないとすると、インタプリタ部１１は、アニメーションの実行途中におけるネイティブ変数を把握できず、ＧＵＩオブジェクトの属性情報が把握できなくなってしまう。
【００２９】
一方、アニメーション制御部１２がネイティブ変数を更新する毎に、ネイティブ変数をインタプリタ部１１に通知すれば、インタプリタ部１１は、スクリプト変数がネイティブ変数と同期するため、現在のアニメーションの状態を把握することができる。しかしながら、これでは、アニメーション制御部１２とインタプリタ部１１との間でデータの授受が頻繁に行われ、アニメーション制御部１２の処理負担が増大し、却って、アニメーションの実行速度を低下させる虞がある。
【００３０】
そこで、アニメーション制御部１２は、変更予定情報が示す描画時点に到達したときにだけ、ネイティブ変数をインタプリタ部１１に出力している。これにより、アニメーション制御部１２とインタプリタ部１１との間でのデータの授受の回数が大幅に減少する結果、アニメーションの実行速度の低下を防止することができる。
【００３１】
また、アニメーション制御部１２は、アニメーションが完了したとき完了通知をインタプリタ部１１に出力する。これにより、インタプリタ部１１は、アニメーションが完了したことを認識することができる。
【００３２】
また、アニメーション制御部１２は、変更予定情報を変更予定情報記憶部２３に記憶させると共に、変更予定情報をインタプリタ部１１に出力する。このとき、インタプリタ部１１は、出力された変更予定情報を変更予定情報記憶部２２に記憶させる。
【００３３】
このように、変更予定情報記憶部２２，２３の両方に変更予定情報を記憶させることで、インタプリタ部１１及びアニメーション制御部１２間で授受されるデータ量を減少させることができ、アニメーション制御部１２及びインタプリタ部１１の処理負担の軽減を図ることができる。
【００３４】
ここで、変更予定情報記憶部２２は、インタプリタ部１１がアクセス可能な記憶領域又は記憶装置により構成され、変更予定情報記憶部２３は、アニメーション制御部１２がアクセス可能な記憶領域又は記憶装置により構成されている。
【００３５】
また、アニメーション制御部１２は、例えば１フレームの描画時点に到達する毎に、ネイティブ変数を更新し、更新したネイティブ変数にしたがって次の１フレームを描画させるための描画指示をグラフィクス描画制御部１３に出力し、グラフィクス描画制御部１３に１フレームのＧＵＩの描画処理を行わせる。また、アニメーション制御部１２は、１フレームの描画処理が完了する毎にグラフィクス描画制御部１３から完了通知を受ける。
【００３６】
グラフィクス描画制御部１３は、アニメーション制御部１２から描画指示が通知されると、その描画指示を、グラフィクスプロセッサ部１４が実行可能な低レベルの描画コマンドに分解し、描画コマンドをグラフィクスプロセッサ部１４に出力する。ここで、グラフィクス描画制御部１３は、一般的には、グラフィクス・ライブラリ又はデバイス・ドライバ等と呼ばれている。
【００３７】
グラフィクスプロセッサ部１４は、グラフィクス描画制御部１３から出力された描画コマンドを実行し、内蔵するフレームバッファにフレームを描画することによりグラフィクスを生成する。
【００３８】
上記のインタプリタ部１１は、アニメーションが開始されたとき、スクリプト変数がネイティブ変数と同期していないことを示す非同期フラグを立て、アニメーション制御部１２から完了通知を受けたとき、非同期フラグを倒す。そして、インタプリタ部１１は、非同期フラグを立てている間に、ユーザが入力装置４０を操作することで所定の入力イベントが発生した場合、アニメーション制御部１２にネイティブ変数を出力させる同期処理を実行する。
【００３９】
例えば、ＧＵＩオブジェクトが移動するアニメーションの実行途中で、ユーザがマウスをクリックする入力イベントが発生した場合を考える。アニメーションの実行途中では、スクリプト変数とネイティブ変数とが同期していないため、インタプリタ部１１は現在のＧＵＩオブジェクトの位置を知ることができず、クリック時においてマウスポインタがＧＵＩオブジェクトと重なっていたのか否かを判定することができなくなる。
【００４０】
そこで、入力イベントが発生した場合、インタプリタ部１１は、アニメーション制御部１２に現在のネイティブ変数を強制的に出力させ、スクリプト変数とネイティブ変数とを同期させている。これにより、インタプリタ部１１は、現在のＧＵＩオブジェクトの位置を認識することができ、入力イベントが発生したときにマウスポインタとＧＵＩオブジェクトとが重なっていたか否かを判定することができる。そして、マウスポインタとＧＵＩオブジェクトとが重なっていると判定した場合、インタプリタ部１１は、スクリプトデータに従って、そのＧＵＩオブジェクトがクリックされたときに発生する処理を実行すればよい。
【００４１】
なお、インタプリタ部１１は、アニメーション制御部１２から出力されたネイティブ変数をスクリプト変数に変換し、現在、スクリプト変数記憶部２５で記憶されているスクリプト変数を変換したスクリプト変数で更新すればよい。また、インタプリタ部１１は、非同期フラグを立てるときは、非同期フラグ記憶部２４に例えば「１」のデータを格納し、非同期フラグを倒すときは、非同期フラグ記憶部２４に例えば「０」のデータを格納すればよい。
【００４２】
スクリプトデータ記憶部２１は、ＧＵＩをアニメーション表示するためのスクリプトデータを記憶している。ここで、スクリプトデータは、インタプリタ型のスクリプト言語で記述されたデータであり、例えば、ＪａｖａＳｃｒｉｐｔ（登録商標）等で記述されている。このスクリプトデータには、アニメーション対象となるＧＵＩを構成するＧＵＩオブジェクトの属性情報を定義するためのデータや、ＧＵＩをアニメーション表示するためのアニメーション描画指示等が記述されている。
【００４３】
変更予定情報記憶部２２は、アニメーション制御部１２から出力され、インタプリタ部１１により受け付けられた変更予定情報を記憶している。ここで、変更予定情報記憶部２２が記憶する変更予定情報は、例えばインタプリタ部１１によりスクリプト変数に変換された変更予定情報である。
【００４４】
変更予定情報記憶部２３は、アニメーション制御部１２により生成された変更予定情報を記憶している。ここで、変更予定情報記憶部２３に記憶された変更予定情報は、ネイティブ変数の変更予定情報である。
【００４５】
図６は、本発明の実施１の形態におけるスクリプトデータに記述された属性情報をテーブル形式で示した属性情報テーブルＴＢ１を示した図である。図６に示すように、属性情報テーブルＴＢ１は、ＧＵＩオブジェクト識別子、Ｘ座標、Ｙ座標、幅、及び高さの欄を備え、各ＧＵＩの属性情報は、これらのデータが含まれていることが分かる。なお、図６に示す属性情報を構成するデータは、座標が変化するアニメーションを実現する際に必要となるデータを例示的に示したにすぎず、図６に示すデータに限定されない。例えば、色や透明度が変化するアニメーションを採用する場合は、色及び透明度を属性情報に含ませればよい。
【００４６】
ＧＵＩオブジェクト識別子は、各ＧＵＩオブジェクトを識別するために各ＧＵＩオブジェクトに一意的に割り付けられた文字列により構成されている。Ｘ座標及びＹ座標は、ＧＵＩオブジェクトの表示位置を示す。図６の例では、表示装置３０の画面の例えば左上の頂点が原点とされ、垂直方向の下方に向けてＹ座標が定義され、水平方向の右側に向けてＸ座標が定義されている。よって、Ｘ座標及びＹ座標は、ＧＵＩオブジェクトの画面上での各画素の位置を示す。
【００４７】
幅はＧＵＩオブジェクトの水平方向の大きさを示している。高さはＧＵＩオブジェクトの垂直方向の大きさを示している。なお、以降の説明においては、１行目の欄Ｒ１に記述されたＧＵＩオブジェクト識別子が「ＩＤ１」のＧＵＩオブジェクトを、移動表示させるアニメーションを例に挙げて説明する。
【００４８】
図９は、本発明の実施の形態におけるスクリプトデータにしたがって、表示装置３０の画面３０１にアニメーション表示されるＧＵＩを示した画面図である。このＧＵＩは、ＧＵＩオブジェクトＯＢ１を右斜め下側に向けて移動させるものである。ＧＵＩオブジェクトＯＢ１は、図６に示すＧＵＩオブジェクト識別子がＩＤ１のＧＵＩオブジェクトである。
【００４９】
アニメーション開始時において、ＧＵＩオブジェクトＯＢ１は位置ＰＳ０に位置している。以後、フレームが更新される毎にＧＵＩオブジェクトＯＢ１は、位置ＰＳ１，ＰＳ２，ＰＳ３，ＰＳ４，ＰＳ５というように、右斜め下に向けて移動していき、最終的に位置ＰＳ６まで移動する。マウスポインタＰＴは、ユーザにより入力装置４０が操作されると、それに応じて画面３０１上を移動する。
【００５０】
なお、図９において、ＧＵＩオブジェクトＯＢ１が位置ＰＳ３に位置する３フレーム目は、図８に示す変更予定情報のタイムスタンプで示された描画時点であり、アニメーション制御部１２はインタプリタ部１１にオブジェクトＯＢ１の座標を含むネイティブ変数を出力する。ここで、ＧＵＩオブジェクトＯＢ１の座標としては、例えば、ＧＵＩオブジェクトＯＢ１の左上の頂点の座標が採用されている。但し、これは一例であり、右上、右下、左下、中心等の座標を採用してもよい。
【００５１】
図７は、アニメーション開始時にインタプリタ部１１がアニメーション制御部１２に描画依頼として出力するスクリプト変数を構成する属性情報Ｚ１の一例を示した図である。この属性情報Ｚ１には、ＧＵＩオブジェクト識別子、開始点、完了点、及び変化量を格納する欄が含まれている。オブジェクト識別子は、アニメーション対象となるＧＵＩオブジェクトの識別子である。図７の例では、ＧＵＩオブジェクト識別子の欄にＩＤ１が格納されており、この属性情報Ｚ１には図９に示すＧＵＩオブジェクトＯＢ１の属性情報が含まれていることが分かる。なお、アニメーション対象となるＧＵＩオブジェクトが複数存在する場合、属性情報Ｚ１には複数のＧＵＩオブジェクトに関する属性情報が含まれることになる。なお、属性情報Ｚ１はスクリプトデータに予め記述されている。
【００５２】
開始点は、アニメーションの開始時におけるＧＵＩオブジェクトの位置を示している。図７の例では、開始点としてＸ座標＝１００、Ｙ座標＝１００と定義されているため、図９に示すように、ＧＵＩオブジェクトＯＢ１は、アニメーションの開始時に、Ｘ座標＝１００、Ｙ座標＝１００の位置ＰＳ０に表示される。
【００５３】
完了点は、アニメーションの完了時におけるＧＵＩオブジェクトの位置を示している。図７の例では、Ｘ座標＝１３０、Ｙ座標＝１６０と定義されているため、ＧＵＩオブジェクトＯＢ１はアニメーションの終了時にＸ座標＝１３０、Ｙ座標＝１６０の位置ＰＳ６に表示される。
【００５４】
変化量は、アニメーションの処理が１フレーム進行する毎にＧＵＩオブジェクトの位置をどれだけ変化させるかを示す値である。図７の例では、変化量として、Ｘ成分＝５、Ｙ成分＝１０が定義されているため、ＧＵＩオブジェクトＯＢ１は１フレーム進行する毎にＸ座標が５、Ｙ座標が１０ずつ増加される。なお、変化量の単位はピクセルである。
【００５５】
図８は、本発明の実施の形態１における変更予定情報ＩＦ１の一例を示した図である。変更予定情報ＩＦ１は、タイムスタンプ、Ｘ座標、及びＹ座標を格納する欄を備えている。図８に示す変更予定情報ＩＦ１の例では、３個の描画時点におけるＧＵＩオブジェクトＯＢ１の位置が含まれている。
【００５６】
タイムスタンプは、アニメーション制御部１２がインタプリタ部１１にネイティブ変数を通知する描画時点を示しており、本実施の形態では、アニメーション開始時に表示されるフレームを０フレーム目としたとき、何枚目のフレームであるかを示す値が採用されている。図８の例では、タイムスタンプとして０、３、６が定義されているため、アニメーション制御部１２は、アニメーション開始時から０フレーム目、３フレーム目、６フレーム目におけるＧＵＩオブジェクトＯＢ１の位置をインタプリタ部１１に出力する。なお、０フレーム目はアニメーション開始時点を示し、６フレーム目はアニメーションの完了時点を示しているため、アニメーション制御部１２は、ＧＵＩオブジェクトＯＢ１の位置を出力しなくともよい。
【００５７】
ここで、変更予定情報ＩＦ１は、アニメーション制御部１２により下記のようにして生成される。まず、アニメーションの開始時点において、アニメーション制御部１２は、インタプリタ部１１から、図６に示す欄Ｒ１の属性情報及び図７に示す属性情報Ｚ１が含まれるスクリプト変数を受け付ける。
【００５８】
次に、アニメーション制御部１２は、予め定められたタイムスタンプにおけるＧＵＩオブジェクトＯＢ１の位置を、図７に示す属性情報Ｚ１を参照して生成する。図８の例では、０、３、６が予め定められたタイムスタンプとして定義されているため、アニメーション制御部１２は、図７に示す開始点及び変化量から３フレーム目及び６フレーム目のＧＵＩオブジェクトＯＢ１の位置を求めることで、図８に示す変更予定情報ＩＦ１を生成する。そして、アニメーション制御部１２は、生成した変更予定情報ＩＦ１をインタプリタ部１１に通知すると共に、変更予定情報記憶部２３に記憶させる。また、インタプリタ部１１は、通知された変更予定情報ＩＦ１を変更予定情報記憶部２２に記憶させる。
【００５９】
なお、図８では、タイムスタンプが３個の場合を例に挙げて説明したが、これに限定されず、２個又は４個以上の所定の値を予め定められたタイムスタンプとして採用してもよい。この場合、アニメーション制御部１２は、図７に示す開始点及び変化量を用いて各タイムスタンプにおけるＧＵＩオブジェクトＯＢ１の位置を求めればよい。
【００６０】
図１に戻り、非同期フラグ記憶部２４は、インタプリタ部１１により設定される非同期フラグを記憶する。スクリプト変数記憶部２５は、インタプリタ部１１が管理するスクリプト変数であって、変更予定情報以外のスクリプト変数を記憶する。ネイティブ変数記憶部２６は、アニメーション制御部１２により逐次更新されるネイティブ変数であって、変更予定情報以外のネイティブ変数を記憶する。表示装置３０は、プラズマディスプレイや液晶ディスプレイにより構成され、アニメーション描画装置１０により描画されるアニメーションを表示する。
【００６１】
図２は、本発明の実施の形態１におけるアニメーション描画装置１０の構成要素間におけるデータの授受を示したタイミングチャートである。
【００６２】
まず、インタプリタ部１１は、ＧＵＩをアニメーション表示するための入力イベントが発生すると、図６の欄Ｒ１に記載された属性情報及び図７に示す属性情報Ｚ１をスクリプト変数に含ませ、このスクリプト変数を描画依頼としてアニメーション制御部１２に出力する（タイミングＴＭ１）。
【００６３】
次に、アニメーション制御部１２は、描画依頼を受け付けると、変更予定情報ＩＦ１を生成し、インタプリタ部１１に出力する（タイミングＴＭ２）。次に、アニメーション制御部１２は、１フレームの描画タイミングが到達する毎に描画指示をグラフィクス描画制御部１３に出力する（タイミングＴＭ３〜ＴＭ５）。
【００６４】
なお、グラフィクス描画制御部１３は、描画指示を受け付ける毎にグラフィクスプロセッサ部１４が実行可能な低レベルの描画コマンドを生成し、グラフィクスプロセッサ部１４に１フレームのＧＵＩを描画させる。そして、グラフィクス描画制御部１３は、１フレームの描画が完了すると、完了通知をアニメーション制御部１２に出力する。
【００６５】
タイミングＴＭ５は、変更予定情報ＩＦ１のタイムスタンプが示す描画時点に該当する。そのため、アニメーション制御部１２は、現在のネイティブ変数を変更通知としてインタプリタ部１１に出力する。
【００６６】
上記の処理が繰り返され、ＧＵＩがアニメーション表示される。そして、最終のフレームの描画指示に対する完了通知がグラフィクス描画制御部１３から出力されると、アニメーション制御部１２は、アニメーションが完了したことを示す完了通知をインタプリタ部１１に出力する（タイミングＴＭ６）。
【００６７】
図３は、本発明の実施の形態１におけるアニメーション描画装置１０の処理を示すフローチャートである。ステップＳ１において、インタプリタ部１１は、スクリプトデータを逐次解釈していき、アニメーション描画指示を解釈すると、描画依頼をアニメーション制御部１２に出力する。ここで、インタプリタ部１１は、図６の欄Ｒ１に示す属性情報及び図７に示す属性情報Ｚ１を含むスクリプト変数を描画依頼として出力する。また、インタプリタ部１１は、アニメーション制御部１２に出力したスクリプト変数をスクリプト変数記憶部２５に記憶させる。
【００６８】
次に、アニメーション制御部１２は、スクリプト変数から図８に示す変更予定情報ＩＦ１を生成し（ステップＳ２）、変更予定情報記憶部２３に記憶させると共に、インタプリタ部１１に出力する。
【００６９】
次に、インタプリタ部１１は、アニメーション制御部１２から出力された変更予定情報ＩＦ１をスクリプト変数に変換して、変更予定情報記憶部２２に記憶させ、非同期フラグを立てる（ステップＳ３）。
【００７０】
次に、アニメーション制御部１２は、インタプリタ部１１から描画依頼として出力されたスクリプト変数をネイティブ変数に変換することで、ネイティブ変数を初期化する（ステップＳ４）。なお、ネイティブ変数は、概念的には図６の欄Ｒ１に示す属性情報及び図７に示す属性情報Ｚ１と同一内容である。
【００７１】
次に、アニメーション制御部１２は、０フレーム目のＧＵＩを描画するための描画指示をグラフィクス描画制御部１３に出力する（ステップＳ５）。これにより、グラフィクス描画制御部１３は、グラフィクスプロセッサ部１４に描画コマンドを出力し、表示装置３０には０フレーム目のＧＵＩが表示される。
【００７２】
つまり、アニメーション制御部１２は、図７に示す属性情報Ｚ１の開始点がＸ座標＝１００、Ｙ座標＝１００であるため、図９に示すように、位置ＰＳ０にＧＵＩオブジェクトＯＢ１が描画されるようにグラフィクス描画制御部１３に描画指示を出力する。
【００７３】
次に、アニメーション制御部１２は、１フレームの描画時点に到達すると、次の１フレームを描画するためにネイティブ変数を更新し、更新したネイティブ変数が反映された描画指示をグラフィクス描画制御部１３に出力し、所定時間スリープする（ステップＳ６）。ここで、所定時間としては、例えば、アニメーション制御部１２が描画指示を出力してからグラフィクス描画制御部１３が１フレームの描画の完了を告げる完了通知を出力するまでの期間を採用することができる。つまり、アニメーション制御部１２は、グラフィクス描画制御部１３から出力される完了通知によってスリープが解除される。
【００７４】
また、アニメーション制御部１２は、ステップＳ４でネイティブ変数に変換したネイティブ変数の開始点のＸ座標＝１００、Ｙ座標＝１００に変化量のＸ成分＝５、Ｙ成分＝１０をそれぞれ加算して、１フレーム目のＧＵＩオブジェクトＯＢ１の位置（Ｘ座標＝１０５、Ｙ座標＝１１０）を算出し、算出した位置をネイティブ変数に含ませ、ネイティブ変数を更新する。この場合、アニメーション制御部１２は、例えば、図７に示す属性情報Ｚ１において、ＧＵＩオブジェクトＯＢ１の現在位置を格納する欄を追加したものをネイティブ変数とすればよい。
【００７５】
そして、アニメーション制御部１２は、２フレーム目以降において、１フレームが進行する毎に、ＧＵＩオブジェクトＯＢ１の現在の位置のＸ座標及びＹ座標に、変化量のＸ成分＝５及びＹ成分＝１０をそれぞれ加算して、ネイティブ変数を更新する。
【００７６】
次に、アニメーション制御部１２は、アニメーションが完了したか否かを判定する（ステップＳ７）。ここで、アニメーション制御部１２は、ネイティブ変数の現在位置が図７に示す完了点に一致したときアニメーションが完了したと判定すればよい。
【００７７】
次に、アニメーション制御部１２は、アニメーションが完了していないと判定した場合（ステップＳ７でＮＯ）、現フレームが変更予定情報ＩＦ１のタイムスタンプが示すフレームに該当するか否かを判定する（ステップＳ８）。つまり、アニメーション制御部１２は、現フレームが３フレーム目である場合、ステップＳ８でＹＥＳと判定し、現在のネイティブ変数を変更通知としてインタプリタ部１１に出力し（ステップＳ９）、処理をステップＳ６に戻す。これにより、スクリプト変数とネイティブ変数との同期が図られ、インタプリタ部１１は、ＧＵＩオブジェクトＯＢ１の現在位置を認識することが可能となる。
【００７８】
なお、変更通知を受け付けたインタプリタ部１１は、ネイティブ変数をスクリプト変数に変換し、図７に示す属性情報Ｚ１に現在位置の欄を追加し、この欄にＧＵＩオブジェクトＯＢ１の現在位置を書き込み、スクリプト変数を更新する。
【００７９】
一方、アニメーション制御部１２は、現フレームが変更予定情報ＩＦ１のタイムスタンプが示すフレームに該当していない場合、つまり、現フレームが３フレーム目に該当しない場合、ステップＳ８でＮＯと判定し、処理をステップＳ６に戻す。
【００８０】
ステップＳ７において、アニメーション制御部１２はアニメーションが完了したと判定した場合（ステップＳ７でＹＥＳ）、完了通知をインタプリタ部１１に出力する（ステップＳ１０）。次に、インタプリタ部１１は、非同期フラグを倒し（ステップＳ１１）、処理を終了する。
【００８１】
以上の処理により、アニメーション制御部１２は、１フレーム毎にネイティブ変数をインタプリタ部１１に出力するのではなく、タイムスタンプが示すフレームにおいてネイティブ変数をインタプリタ部１１に出力するため、処理負担が軽減し、ＧＵＩのアニメーションの実行速度の低下を防止することができる。
【００８２】
図４は、本発明の実施の形態１の変形例におけるアニメーション描画装置１０の構成要素間のデータの授受を示したタイミングチャートである。図２においては、アニメーション制御部１２は、タイムスタンプに示す描画時点において、ネイティブ変数を変更通知としてインタプリタ部１１に出力していた。
【００８３】
一方、図４に示す変形例では、アニメーション制御部１２は、インタプリタ部１１から同期指示を受け付けたとき、ネイティブ変数をインタプリタ部１１に出力している。
【００８４】
図４に示すタイミングＴＭ１〜ＴＭ４、ＴＭ６は図２と同一であるため、説明を省く。タイミングＴＭ５において、インタプリタ部１１は、アニメーション制御部１２に同期指示を出力している。これは、ＧＵＩオブジェクトＯＢ１がアニメーション表示されている途中で、ユーザがマウスをクリックする入力イベントが発生したためである。
【００８５】
同期指示を受けたアニメーション制御部１２は、ＧＵＩオブジェクトＯＢ１の現在位置を含むネイティブ変数を現在情報としてインタプリタ部１１に出力する。
【００８６】
インタプリタ部１１は、現在情報を受け付けると、ネイティブ変数をスクリプト変数に変換し、スクリプト変数を更新する。これにより、スクリプト変数とネイティブ変数とが同じ値となり、両変数が同期する。
【００８７】
図５は、本発明の実施の形態１の変形例におけるアニメーション描画装置１０の処理を示すフローチャートである。図５のフローチャートは図４のタイミングＴＭ５において同期指示が出力されたときに、アニメーション描画装置１０により実行されるフローチャートである。
【００８８】
まず、インタプリタ部１１は、ユーザによりマウスがクリックされ、入力イベントが発生すると（ステップＳ２１でＹＥＳ）、非同期フラグが立っているか否かを判定する（ステップＳ２２）。一方、入力イベントが発生していない場合（ステップＳ２１でＮＯ）、処理がステップＳ２１に戻される。
【００８９】
インタプリタ部１１は、非同期フラグが立っている場合（ステップＳ２２でＹＥＳ）、アニメーション制御部１２に同期指示を出力する（ステップＳ２３）。ここで、非同期フラグが立っている場合、アニメーションが実行途中であり、スクリプト変数とネイティブ変数とが同期していない。そのため、現在のスクリプト変数は、ＧＵＩオブジェクトＯＢ１の現在位置を示していない。そこで、インタプリタ部１１は、スクリプト変数とネイティブ変数とを同期させるために同期指示をアニメーション制御部１２に出力する。
【００９０】
次に、アニメーション制御部１２は、現在のネイティブ変数を現在情報としてインタプリタ部１１に出力する（ステップＳ２４）。次に、インタプリタ部１１は、ネイティブ変数をスクリプト変数に変換し、スクリプト変数を更新し、スクリプト変数とネイティブ変数とを同期させる（ステップＳ２５）。
【００９１】
これにより、インタプリタ部１１は、ＧＵＩオブジェクトＯＢ１の現在位置を認識することができ、マウスポインタＰＴとユーザがＧＵＩオブジェクトＯＢ１とが重なっているか否かを判定することができる。
【００９２】
ここで、インタプリタ部１１は、ＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとが重なっていると判定した場合、ユーザがＧＵＩオブジェクトＯＢ１をクリックしたと判定し、ＧＵＩオブジェクトＯＢ１がクリックされた際に実行することが予め定められていた処理プログラムを実行すればよい。一方、ＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとが重なっていないと判定した場合、ＧＵＩオブジェクトＯＢ１のクリック時に実行させる処理プログラムを実行しなければよい。
【００９３】
なお、インタプリタ部１１は、ＧＵＩオブジェクトＯＢ１の現在の位置から、図６に示すＧＵＩオブジェクトＯＢ１の幅及び高さを特定し、特定した幅及び高さからＧＵＩオブジェクトＯＢ１が描画された領域を設定する。そして、この領域内にマウスポインタＰＴが位置すれば、インタプリタ部１１は、マウスポインタＰＴとＧＵＩオブジェクトＯＢ１とが重なっていると判定すればよい。
【００９４】
一方、ステップＳ２２において、非同期フラグが立っていない場合（ステップＳ２２でＮＯ）、スクリプト変数とネイティブ変数とは同期しているため、インタプリタ部１１は、スクリプト変数を参照し（ステップＳ２６）、現在のＧＵＩオブジェクトＯＢ１の位置を認識する。
【００９５】
上記説明では、変更予定情報ＩＦ１として、図８に示すように、タイムスタンプを採用したが、これに代えてアニメーションが開始されてからの時刻を採用してもよい。また、変更予定情報ＩＦ１としてＧＵＩオブジェクトＯＢ１の位置を属性情報として採用したが、これに限定されず、ＧＵＩオブジェクトＯＢ１の位置に加えて、又はＧＵＩオブジェクトＯＢ１の位置に代えて、ＧＵＩオブジェクトＯＢ１のサイズ、拡大縮小率、回転率（ロール角、ピッチ角、ヨー角）、色、透過度、及び画像の少なくともいずれか１つを含めても良い。
【００９６】
この場合、図８に示す変更予定情報ＩＦ１において、サイズ、拡大縮小率、回転率（ロール角、ピッチ角、ヨー角）、色、透過度、及び画像の欄を設け、タイムスタンプ毎にこれらの情報を規定すればよい。
【００９７】
また、上記説明では、アニメーション制御部１２が変更予定情報ＩＦ１を生成したが、インタプリタ部１１が変更予定情報ＩＦ１を生成してもよい。この場合、インタプリタ部１１は、アニメーション制御部１２と同様、アニメーションを開始するときに、図６の欄Ｒ１に示す属性情報及び図７に示す属性情報Ｚ１等から図８に示す変更予定情報ＩＦ１を生成すればよい。
【００９８】
そして、インタプリタ部１１は、生成した変更予定情報ＩＦ１を変更予定情報記憶部２２に記憶させると共に、アニメーション制御部１２に出力すればよい。なお、インタプリタ部１１から変更予定情報ＩＦ１を受け付けたアニメーション制御部１２は、変更予定情報ＩＦ１をネイティブ変数に変換して、変更予定情報記憶部２３に記憶させればよい。
【００９９】
これにより、インタプリタ部１１及びアニメーション制御部１２の双方が変更予定情報ＩＦ１を参照することが可能となり、インタプリタ部１１及びアニメーション制御部１２間で送受されるデータ量を少なくすることができる。
【０１００】
なお、ＧＵＩオブジェクトの属性情報としてフォーカスの属性が知られている。このフォーカスの属性は、ＧＵＩオブジェクトが現在、操作対象となっているか否かを示す属性情報である。フォーカスの属性としては、「当っている」又は「外れている」の２通りの状態が存在する。例えば、ＧＵＩオブジェクトとマウスポインタとが重なっている場合、フォーカスの属性は「当っている」となる。あるＧＵＩオブジェクトのフォーカスの属性が「当っている」の状態を示す場合において、アニメーションが開始されて非同期フラグが立てられた場合、そのＧＵＩオブジェクトのフォーカスの属性を「外れている」に変更しても良い。この構成は、例えば、アニメーションが開始されてＧＵＩオブジェクトが移動を開始し、マウスポインタとＧＵＩオブジェクトとが重なっている状態から重なっていない状態になることが想定されるＧＵＩのアニメーションに対して有効となる。
【０１０１】
また、アニメーションが完了して非同期フラグが倒された場合、インタプリタ部１１は、ＧＵＩオブジェクトの完了点の座標と、現在のマウスポインタの位置とからＧＵＩオブジェクトとマウスポインタとが重なっているか否かを判定し、その判定結果でフォーカスの属性を更新し、フォーカスの属性を最新状態に更新しても良い。
【０１０２】
以上説明した変形例によれば、インタプリタ部１１は、アニメーションの実行途中で適宜、スクリプト変数をネイティブ変数に同期させることが可能であるため、アニメーションの実行途中であっても、マウスポインタＰＴとＧＵＩオブジェクトＯＢ１とが重なっているか否かを判定することができる。一方、インタプリタ部１１は、スクリプト変数をネイティブ変数に同期させる必要がない場合は同期処理を行わず、アニメーション制御部１２は、逐次ネイティブ変数を更新してアニメーションの描画処理を実行する。そのため、アニメーション制御部１２は、インタプリタ部１１からスクリプト変数を取り込むことなくアニメーションの描画処理を実行することができる。その結果、アニメーションの実行速度の低下を防止することができる。
【０１０３】
なお、実施の形態１によるアニメーション描画装置１０と変形例によるアニメーション描画装置１０とを組み合わせても良い。つまり、アニメーション制御部１２がタイムスタンプにしたがってネイティブ変数を出力し、かつ、インタプリタ部１１が必要に応じてスクリプト変数をネイティブ変数に同期させてもよい。
【０１０４】
（実施の形態２）
実施の形態２によるアニメーション描画装置１０は、アニメーションの実行中にマウスポインタＰＴとＧＵＩオブジェクトとの重なり状態が変化した場合、アニメーション制御部１２がインタプリタ部１１にネイティブ変数を出力することを特徴としている。図１０は、本発明の実施の形態２によるアニメーション描画装置１０の構成図を示している。なお、本実施の形態において実施の形態１と同一のものは同一の符号を用いて説明を省略する。また、図６、図７、図９は本実施の形態の説明においても参照する。
【０１０５】
本実施の形態において、インタプリタ部１１は、アニメーション描画指示を解釈したとき、画面３０１上に表示されたマウスポインタＰＴの位置をアニメーション制御部１２に出力する。
【０１０６】
アニメーション制御部１２は、インタプリタ部１１から出力されたマウスポインタＰＴの位置をネイティブ変数に変換し、ポインタ情報記憶部２８に記憶させる。
【０１０７】
そして、アニメーション制御部１２は、アニメーションの実行中にマウスポインタＰＴとＧＵＩを構成するＧＵＩオブジェクトＯＢ１との重なり状態が変化したとき、そのときのネイティブ変数をインタプリタ部１１に出力する。
【０１０８】
ここで、アニメーション制御部１２は、ネイティブ変数を更新する毎に、ポインタ情報記憶部２８に記憶されたマウスポインタＰＴの位置を参照し、両者を比較することで、ＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとの重なり状態が変化したか否かを判定すればよい。
【０１０９】
具体的には、アニメーション制御部１２は、前回の判定時にＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとが重なっていた場合において、ＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとが重ならなくなった場合、ＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとの重なり状態が変化したと判定すればよい。
【０１１０】
一方、アニメーション制御部１２は、前回の判定時にＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとが重なっていなかった場合において、ＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとが重なった場合、ＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとの重なり状態が変化したと判定すればよい。
【０１１１】
より具体的には、アニメーション制御部１２は、現在のネイティブ変数からＧＵＩオブジェクトＯＢ１の位置を特定する。そして、アニメーション制御部１２は、特定した位置をＧＵＩオブジェクトＯＢ１の左上の頂点とし、図６に示す欄Ｒ１に格納されたＧＵＩオブジェクトＯＢ１の幅及び高さによって規定される矩形領域を設定する。そして、アニメーション制御部１２は、ポインタ情報記憶部２８に記憶されたマウスポインタＰＴの位置がこの矩形領域の領域内に位置する場合、ＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとの重なっていると判定し、この矩形領域内にマウスポインタＰＴが位置していない場合、マウスポインタＰＴとＧＵＩオブジェクトＯＢ１とは重なっていないと判定すればよい。
【０１１２】
そして、アニメーション制御部１２は、１フレーム前における重なり状態の判定結果と、現フレームにおける重なり状態の判定結果とが相違した場合、ＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとの重なり状態が変化したと判定すればよい。
【０１１３】
ポインタ情報記憶部２７は、インタプリタ部１１が管理するマウスポインタＰＴの位置を記憶する。ポインタ情報記憶部２８は、アニメーション制御部１２が管理するマウスポインタＰＴの位置を記憶し、このマウスポインタＰＴの位置は、インタプリタ部１１が管理するマウスポインタＰＴの位置のコピーである。
【０１１４】
図９に示すように、マウスポインタＰＴは、ユーザが入力装置４０を用いた操作を行うことによって移動される。ここで、インタプリタ部１１は、入力装置４０から出力される信号に基づいてマウスポインタＰＴの画面３０１上での位置を検出すればよい。
【０１１５】
図９の例では、入力イベントの発生時におけるマウスポインタＰＴは、左上の座標が（１０７，１１３）に位置している。そのため、インタプリタ部１１は、（１０７，１１３）をマウスポインタＰＴの位置として検出する。以下、マウスポインタＰＴの左上の座標をマウスポインタＰＴの位置として説明する。
【０１１６】
図１１は、本発明の実施の形態２におけるアニメーション描画装置１０の構成要素間のデータの授受を示すタイミングチャートである。
【０１１７】
まず、タイミングＴＭ１において、インタプリタ部１１は、スクリプトデータに記述されたアニメーション描画指示を解釈すると、このときのマウスポインタＰＴの位置を登録するためのポインタ情報登録指示をアニメーション制御部１２に出力する。これにより、アニメーション制御部１２は、入力イベントが発生したときのマウスポインタＰＴの位置をポインタ情報記憶部２８に記憶させる。
【０１１８】
次に、インタプリタ部１１は、図２と同様、描画依頼をアニメーション制御部１２に出力する（タイミングＴＭ２）。つまり、図６の欄Ｒ１に示す属性情報及び図７に示す属性情報Ｚ１を含むスクリプト変数が描画依頼として出力される。このとき、アニメーション制御部１２は、ＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとが重なっているか否かを判定する。
【０１１９】
次に、図２と同様、アニメーション制御部１２はグラフィクス描画制御部１３との間で描画指示及び完了通知の送受を繰り返し、ネイティブ変数を逐次更新しながらＧＵＩをアニメーション表示する（タイミングＴＭ３，ＴＭ４）。ここで、アニメーション制御部１２は、ネイティブ変数を更新する毎に、ポインタ情報記憶部２８に記憶されたマウスポインタＰＴの位置とネイティブ変数が示すＧＵＩオブジェクトＯＢ１の位置とを比較し、マウスポインタＰＴとＧＵＩオブジェクトＯＢ１との重なり状態が変化したか否かを監視する。
【０１２０】
次に、タイミングＴＭ５において、アニメーション制御部１２は、ＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとの重なり状態が変化したと判定した場合、変更通知をインタプリタ部１１に出力する。
【０１２１】
ここで、アニメーション制御部１２は、図２と同様、ネイティブ変数を変更通知としてインタプリタ部１１に出力する。これにより、インタプリタ部１１は、ＧＵＩオブジェクトＯＢ１の現在の位置を認識することができる。
【０１２２】
次に、アニメーション制御部１２は、図２と同様、アニメーションが完了すると、完了通知をインタプリタ部１１に出力する（タイミングＴＭ６）。
【０１２３】
図１２は、本発明の実施の形態２におけるアニメーション描画装置１０の処理を示すフローチャートである。インタプリタ部１１は、スクリプトデータを逐次解釈していき、アニメーション描画指示を解釈すると、現在のマウスポインタＰＴの位置を登録するためのポインタ情報登録指示及び描画依頼をアニメーション制御部１２に出力する（ステップＳ３１）。これにより、アニメーション制御部１２は、アニメーション開始時のマウスポインタＰＴの位置を認識することができる。なお、マウスポインタＰＴの位置としては、マウスポインタＰＴの座標を採用するが、これに限定されず、マウスポインタＰＴの領域を採用しても良い。マウスポインタＰＴの領域としては、図９に示すマウスポインタＰＴの輪郭を特定することができる情報を採用すればよい。
【０１２４】
次に、アニメーション制御部１２は、インタプリタ部１１から出力されたポインタ登録情報が示すマウスポインタＰＴの位置をポインタ情報記憶部２８に記憶させる（ステップＳ３２）。
【０１２５】
ステップＳ３３〜Ｓ３６，Ｓ３９は図３に示すステップＳ４〜Ｓ７，Ｓ１０と同一であるため、説明を省略する。
【０１２６】
ステップＳ３７において、アニメーション制御部１２は、ネイティブ変数と、ポインタ情報記憶部２８に記憶されたマウスポインタＰＴの位置とを比較して、ＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとの重なり状態が変化したか判定する。そして、アニメーション制御部１２は、マウスポインタＰＴとＧＵＩオブジェクトＯＢ１との重なり状態が変化したと判定した場合（ステップＳ３７でＹＥＳ）、ステップＳ３８に処理を進め、重なり状態が変化していない場合（ステップＳ３７でＮＯ）、処理をステップＳ３５に戻す。
【０１２７】
図９の例では、マウスポインタＰＴの位置が変化していないとすると、アニメーションが開始されてから、２フレーム目の描画時点でＧＵＩオブジェクトＯＢ１は位置ＰＳ２に位置しており、重なり状態が「重なっている」から「重なっていない」に変化する。
【０１２８】
具体的には、図９において、ＧＵＩオブジェクトＯＢ１が位置ＰＳ２に位置するとき、ＧＵＩオブジェクトＯＢ１の左上の頂点の座標は（１１０，１２０）であり、マウスポインタＰＴの位置は（１０７，１１３）であるため、ＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとは重なっていない。したがって、アニメーション制御部１２は、ＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとの重なり状態が変化したと判定し、位置ＰＳ２を含むネイティブ変数を変更通知としてインタプリタ部１１に出力する（ステップＳ３８）。
【０１２９】
これにより、インタプリタ部１１は、アニメーションの実行途中において、入力イベントが発生して、ＧＵＩオブジェクトＯＢ１の現在の位置を認識する必要が生じた場合、アニメーション制御部１２からネイティブ変数を取り込むことで、ＧＵＩオブジェクトＯＢ１の現在の位置を認識することができる。そして、インタプリタ部１１は、現在のマウスポインタＰＴの位置と、認識した現在のＧＵＩオブジェクトＯＢ１の位置とから両者の重なり状態の変化を検出することができる。
【０１３０】
そして、重なり状態の変化を検出した場合は、例えば、その変化に応じて予め定められたプログラムを実行する。これにより、インタプリタ部１１は、アニメーションの実行中であってもユーザからの操作に対応することが可能となる。
【０１３１】
一方、アニメーションの表示が開始されると、アニメーション制御部１２がネイティブ変数を逐次更新させてアニメーションの描画処理が実行されるため、アニメーションの実行速度を上げることができる。
【０１３２】
なお、上記説明では、ポインタ情報登録指示は１回だけ出力される場合を例に挙げて説明したが、アニメーションの実行途中において、ポインタ情報登録指示は何回出力されても良い。この場合、インタプリタ部１１は、例えば、マウスボタンがクリックされる等の入力イベントが発生したときに、ポインタ情報登録指示を出力すればよい。そして、インタプリタ部１１は、ポインタ情報登録指示に入力イベントが発生したときのマウスポインタＰＴの位置を含ませ、この位置をポインタ情報記憶部２７に記憶させればよい。
【０１３３】
ポインタ情報登録指示を受け付けたアニメーション制御部１２は、このポインタ情報登録指示に含まれているマウスポインタＰＴの位置をポインタ情報記憶部２８に記憶させ、ネイティブ変数を更新する毎に、このマウスポインタＰＴの位置とネイティブ変数とを比較してＧＵＩオブジェクトＯＢ１とマウスポインタＰＴとの重なり状態の変化を検出すればよい。
【０１３４】
なお、図１及び図１０に示す各ブロックは、典型的には集積回路であるＬＳＩにより実現される。ＬＳＩにより実現する場合、各ブロックは個別に１チップ化されても良いし、一部又は全てが含まれるように１チップ化されても良い。
【０１３５】
ここで、ＬＳＩには、集積度の違いにより、ＩＣ、ＬＳＩ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩ等が含まれる。
【０１３６】
また、集積回路化の手法としては、ＬＳＩに限られず、専用回路又は汎用プロセッサで実現してもよい。また、ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【０１３７】
更には、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて各ブロックの集積化を行ってもよい。ＬＳＩに置き換わる集積回路の技術として、例えばバイオ技術によるものが可能性としてあり得る。
【０１３８】
また、図１及び図１０に示す各ブロックをソフトウェアにより構成してもよい。この場合、コンピュータをアニメーション描画装置１０として機能させるためのアニメーション描画プログラムをコンピュータにインストールすることで、図１及び図１０に示す各ブロックを実現すればよい。このアニメーション描画プログラムは、ＤＶＤ−ＲＯＭやＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体に格納してユーザに提供されてもよい。また、アニメーション描画プログラムをＷＥＢサーバ上に格納し、インターネットを介してダウンロードさせることでユーザに提供してもよい。
【０１３９】
この場合、図１に示すインタプリタ部１１〜グラフィクス描画制御部１３は例えばＣＰＵにより構成され、グラフィクスプロセッサ部１４は例えばＧＰＵにより構成され、スクリプトデータ記憶部２１〜ネイティブ変数記憶部２６は例えばＲＡＭ、ＲＯＭ、フラッシュメモリ等の書き換え可能な記憶装置により構成されることになる。
【０１４０】
また、図１０では、インタプリタ部１１〜グラフィクス描画制御部１３がＣＰＵにより構成され、グラフィクスプロセッサ部１４がＧＰＵにより構成され、ポインタ情報記憶部２７，２８、スクリプト変数記憶部２５、及びネイティブ変数記憶部２６が記憶装置により構成されることになる。
【０１４１】
次に、本発明の具体例について説明する。図１３は、本発明の実施の形態１及び２のアニメーション描画装置１０において用いられるスクリプトデータの一例を示した図である。図１４は、従来のＧＵＩアニメーション描画装置において用いられていたスクリプトデータの一例を示した図である。以下、図１３と図１４とのスクリプトデータを対比説明する。まず、図１４の従来のスクリプトデータから説明する。
【０１４２】
１行目〜３行目：ＨＴＭＬ文書の開始宣言である。３行目において、このスクリプトデータのタイトルがサンプルスクリプトであることが宣言されている。
【０１４３】
４行目〜５行目：ＪａｖａＳｃｒｉｐｔ（登録商標）がＨＴＭＬに埋め込まれていることを宣言している。
【０１４４】
６行目：アニメーションの１フレームの間隔を決定するタイマーの値が規定されている。
【０１４５】
８行目〜１２行目：２次元の座標を格納するためのクラスの宣言である。
【０１４６】
１４行目：ＧＵＩオブジェクトの完了点を格納する変数のデータ構造の宣言である。
【０１４７】
１５行目：ＧＵＩオブジェクトの変化量を格納する変数のデータ構造の宣言である。
【０１４８】
１７行目〜２６行目：サンプルスクリプトのメインルーチンである。
【０１４９】
１９行目〜２０行目においてＧＵＩオブジェクトの開始点の変数が宣言され、開始点の値がその変数に格納されている。２１行目〜２２行目において完了点の変数が宣言され、その変数に完了点の値が格納されている。２３行目〜２４行目において変化量の変数が宣言され、その変数に変化量の値が格納されている。２５行目において、アニメーション開始の関数（ａｎｉｍｅ）が呼び出されている。この２５行目の関数がアニメーション描画指示に該当する。
【０１５０】
２８行目〜３１行目：アニメーションの終了時に呼び出される関数（ｄｏｎｅ）の宣言である。
【０１５１】
３３行目〜４０行目：１フレームの描画を開始する関数（ａｎｉｍｅ）の宣言である。３５行目〜３８行目で完了点と変化量とがＸ成分及びＹ成分に分解され、一時的に変数に格納され、３９行目で１フレームを描画する関数（ｍｏｖｅＯｂｊ）が呼び出される。
【０１５２】
４２行目〜５６行目：１フレームを描画する関数（ｍｏｖｅＯｂｊ）の宣言である。４４行目においてアニメーション対象のＧＵＩオブジェクトのＩＤが取得されている。４５行目においてＧＵＩオブジェクトのＸ成分が２３行目で宣言されたＸ成分の変化量だけ加算されている。４６行目において、ＧＵＩオブジェクトのＹ成分が２４行目で宣言されたＹ成分の変化量だけ加算されている。４７行目においてアニメーションが完了したか否かが判定され、完了していない場合、４９行目〜５０行目が実行され、完了した場合、５４行目が実行される。
【０１５３】
４９行目〜５０行目において、ｗａｉｔＴｉｍｅが経過する毎に関数（ｍｏｖｅＯｂｊ）が実行され１フレームが描画される。５４行目において、アニメーション終了時に呼び出される関数（ｄｆ＝ｄｏｎｅ）が呼び出される。
【０１５４】
５７行目〜５８行目：ＨＴＭＬ文書に埋め込まれたＪａｖａＳｃｒｉｐｔ（登録商標）の終了宣言である。
【０１５５】
５９行目：ＨＴＭＬ文書のＨＥＡＤ部の終了宣言である。
【０１５６】
６０行目：ＨＴＭＬ文書のロード時にサンプルスクリプトのメインルーチンを呼び出すための宣言である。
【０１５７】
６１行目：アニメーション対象のＧＵＩオブジェクトを示す文字列の宣言であり、ＧＵＩオブジェクトを指定するための“ｉｄ”として“ｏｂｊ”が指定されている。
【０１５８】
６２行目〜６３行目：ＨＴＭＬ文書の終了宣言である。
【０１５９】
このように、従来のスクリプトデータでは、例えば、４４行目に示すように１フレームを描画する毎に、ｉｄを取得するための検索処理が実行され、アニメーションの実行速度を上げることは困難であった。
【０１６０】
次に、図１３について説明する。図１３において、図１４と同じスクリプトは説明を省略する。
【０１６１】
３３行目〜３６行目：従来のスクリプトデータと異なる箇所である。３５行目の“ｎａｔｉｖｅＡｎｉｍｅ”により、アニメーション制御部１２に制御が移される。つまり、インタプリタ部１１は、１７〜２６行目のメインルーチンのスクリプトを逐次解釈していき、アニメーション描画指示である２５行目の“ａｎｉｍｅ”を解釈すると、３５行目の“ｎａｔｉｖｅＡｎｉｍｅ”にしたがって、”ＯｂｊＮａｍｅ”、“ｅｐ”、“ｄ”、“ｄｆ”等のスクリプト変数を描画依頼として、アニメーション制御部１２に出力し、アニメーション制御部１２に制御を移す。
【０１６２】
これにより、アニメーション制御部１２は、“ｎａｔｉｖｅＡｎｉｍｅ”に対応するネイティブ言語のプログラムモジュールを実行することで、アニメーションを描画する。
【０１６３】
そして、アニメーション制御部１２は、アニメーションが完了すると完了通知をインタプリタ部１１に出力する。アニメーション制御部１２は、ネイティブ言語で記述されたプログラムモジュールを実行してアニメーションを描画するため、１フレームを描画する毎に図１４の４４行目に示すような検索処理を実行する必要がない。よって、アニメーション描画装置１０によれば、アニメーションの実行速度を高めることができる。
【０１６４】
なお、図１３及び図１４で示したスクリプトデータは、従来のＧＵＩアニメーション描画装置とのスクリプトの差異を示すための典型例であり、その趣旨を示す以外の内容は省略している。また、その趣旨にしたがい種々の変形が可能である。
【０１６５】
上記のアニメーション描画装置の技術的特徴は下記のようにまとめることができる。
【０１６６】
（１）上記アニメーション描画装置は、インタプリタ型のスクリプト言語で記述されたスクリプトデータを実行することでＧＵＩ（グラフィカルユーザインターフェイス）をアニメーション表示するアニメーション描画装置であって、前記スクリプトデータをインタプリタ方式で逐次解釈するインタプリタ部と、ネイティブ言語で記述されたプログラムモジュールを実行することで、前記ＧＵＩをアニメーション表示するアニメーション制御部とを備え、前記インタプリタ部は、所定のスクリプト変数を用いて定義されたアニメーション描画指示を解釈したとき、描画依頼を前記アニメーション制御部に出力し、前記アニメーション制御部は、前記描画依頼を受け付けたとき、前記スクリプト変数を前記ネイティブ言語の形式のネイティブ変数に変換し、前記ネイティブ変数を逐次更新しながら前記ＧＵＩをアニメーション表示する。
【０１６７】
この構成によれば、アニメーション制御部は、インタプリタ部とは独立したネイティブ変数を逐次更新しながらＧＵＩをアニメーション表示することができる。そのため、アニメーション制御部は、アニメーションの途中でインタプリタ部にアクセスする必要がなくなり、インタプリタ部にアクセスした際にインタプリタ部で発生していた検索処理が無くなる結果、アニメーションの実行速度を高めることができる。
【０１６８】
（２）前記アニメーション制御部は、前記スクリプト変数に基づいて、アニメーションを開始してから完了するまでの１又は複数の描画時点における前記ＧＵＩの状態を示す変更予定情報を生成し、前記変更予定情報が示す描画時点に到達したとき、その描画時点における前記ネイティブ変数を前記インタプリタ部に出力すると共に、アニメーションが完了したとき完了通知を前記インタプリタ部に出力することが好ましい。
【０１６９】
この構成によれば、アニメーション制御部は、変更予定情報が示す描画時点に到達したときにだけ、ネイティブ変数をインタプリタ部に出力している。これにより、アニメーション制御部とインタプリタ部との間でのデータの授受の回数が大幅に減少する結果、アニメーションの実行速度の低下を防止することができる。
【０１７０】
（３）前記アニメーション制御部は、前記変更予定情報を前記インタプリタ部に出力することが好ましい。
【０１７１】
この構成によれば、インタプリタ部も変更予定情報を保持しているため、インタプリタ部及びアニメーション制御部間で授受されるデータ量を減少させることができ、アニメーション制御部及びインタプリタ部の処理負担の軽減を図ることができる。
【０１７２】
（４）前記インタプリタ部は、アニメーションが開始されたとき、前記スクリプト変数が前記ネイティブ変数と同期していないことを示す非同期フラグを立て、前記アニメーション制御部から前記完了通知を受けたとき、前記非同期フラグを倒し、前記非同期フラグを立てている間に、ユーザが入力装置を操作することで所定の入力イベントが発生した場合、前記アニメーション制御部に前記ネイティブ変数を出力させる同期処理を実行することが好ましい。
【０１７３】
この構成によれば、入力イベントが発生した場合、インタプリタ部は、アニメーション制御部に現在のネイティブ変数を強制的に出力させ、スクリプト変数とネイティブ変数とを同期させている。これにより、インタプリタ部は、現在のＧＵＩオブジェクトの状態を認識することができ、入力イベントが発生したときにマウスポインタとＧＵＩオブジェクトとが重なっていたか否かを判定する処理等を行うことができる。
【０１７４】
（５）前記インタプリタ部は、前記スクリプト変数に基づいて、アニメーションを開始してから完了するまでの１又は複数の描画時点における前記ＧＵＩの状態を示す変更予定情報を生成し、前記変更予定情報を前記アニメーション制御部に出力し、前記アニメーション制御部は、前記変更予定情報が示す描画時点に到達したとき、その描画時点における前記ネイティブ変数を、前記インタプリタ部に出力すると共に、アニメーションが完了したとき完了通知を前記インタプリタ部に出力することが好ましい。
【０１７５】
この構成によれば、（２）と同様、アニメーションの実行速度の低下を防止することができる。また、変更予定情報がインタプリタ部により生成されているため、アニメーション制御部の処理負担を軽減させることができる。
【０１７６】
（６）前記インタプリタ部は、前記変更予定情報を前記アニメーション制御部に出力することが好ましい。
【０１７７】
この構成によれば、アニメーション制御部も変更予定情報を保持しているため、インタプリタ部及びアニメーション制御部間で授受されるデータ量を減少させることができ、アニメーション制御部及びインタプリタ部の処理負担を軽減することができる。
【０１７８】
（７）前記インタプリタ部は、前記変更予定情報を前記アニメーション制御部に出力したとき、前記アニメーション描画指示が実行中であることを示すフラグを立て、前記完了通知を受けたとき、前記フラグを倒し、前記フラグを立てている間に、所定の入力イベントが発生した場合、前記アニメーション制御部に前記ネイティブ変数を出力させる同期処理を実行することが好ましい。
【０１７９】
この構成によれば、（４）と同じ効果を得ることができる。
【０１８０】
（８）前記変更予定情報は、アニメーションが開始されてから何番目のフレームであるかを示すタイムスタンプを用いて前記描画時点を示すことが好ましい。
【０１８１】
この構成によれば、タイムスタンプにより描画時点が指定されているため、アニメーション制御部は、アニメーションが開始されてから、更新されるフレーム数をカウントするだけで、ネイティブ変数の出力タイミングを検出することができる。
【０１８２】
（９）前記変更予定情報は、前記描画時点におけるＧＵＩオブジェクトの属性情報を含むことが好ましい。
【０１８３】
この構成によれば、スクリプトデータで定義されている属性情報を用いて変更予定情報を生成することができるため、簡便な処理により変更予定情報を生成することができる。
【０１８４】
（１０）前記インタプリタ部は、前記アニメーション描画指示を解釈したとき、画面上に表示されたポインタの位置を前記アニメーション制御部に出力し、前記アニメーション制御部は、前記インタプリタ部から出力されたポインタの位置を記憶装置に記憶させ、アニメーションの実行中に前記記憶装置に記憶させたポインタの位置と前記ネイティブ変数とを比較することで、前記ＧＵＩを構成するＧＵＩオブジェクトとの前記ポインタとの重なり状態が変化したことを検出したとき、そのときの前記ネイティブ変数を前記インタプリタ部に出力することが好ましい。
【０１８５】
この構成によれば、インタプリタ部は、アニメーションの実行途中において、入力イベントが発生して、ＧＵＩオブジェクトの現在の状態を認識する必要が生じた場合、アニメーション制御部１２からネイティブ変数を取り込むことで、ＧＵＩオブジェクトの現在の状態を認識することができる。
【０１８６】
（１１）グラフィクスプロセッサ部を制御するグラフィクス描画制御部を更に備え、前記アニメーション制御部は、１フレームの描画時点に到達する毎に、前記ネイティブ変数を更新し、１フレームを描画するための描画指示を前記グラフィクス描画制御部に出力し、前記グラフィクス描画制御部は、前記アニメーション制御部から描画指示を受け付けると、受け付けた描画指示を、前記グラフィクスプロセッサ部が実行可能な低レベルの描画コマンドに分解し、描画コマンドを前記グラフィクスプロセッサ部に出力することが好ましい。
【０１８７】
この構成によれば、アニメーション制御部は、低レベルの描画処理をグラフィクス描画処理部に実行させるため、アニメーション制御部の処理負担を軽減することができる。
【０１８８】
（１２）前記インタプリタ部は、ハッシュ検索を用いて前記スクリプト変数にアクセスすることが好ましい。
【０１８９】
この構成は、処理負担の大きなハッシュ検索を用いてスクリプト変数がアクセスされるが、（１）等の構成を採用することで、このアクセスの回数が減り、アニメーションの実行速度を上げることができる。
【産業上の利用可能性】
【０１９０】
本発明にかかるＧＵＩアニメーション描画装置は、インタプリタ型のスクリプト言語で記述されたＧＵＩアニメーションを高速に描画することができるため、Ｗｅｂブラウザを搭載する機器において有用である。
【図１】
2012011228.tif 000003
【図２】
2012011228.tif 000004
【図３】
2012011228.tif 000005
【図４】
2012011228.tif 000006
【図５】
2012011228.tif 000007
【図６】
2012011228.tif 000008
【図７】
2012011228.tif 000009
【図８】
2012011228.tif 000010
【図９】
2012011228.tif 000011
【図１０】
2012011228.tif 000012
【図１１】
2012011228.tif 000013
【図１２】
2012011228.tif 000014
【図１３】
2012011228.tif 000015
【図１４】
2012011228.tif 000016
【図１５】
2012011228.tif 000017
【図１６】
2012011228.tif 000018
【国際調査報告】
2012011228.tif 000019
2012011228.tif 000020
2012011228.tif 000021
2012011228.tif 000022