(57)【特許請求の範囲】
【請求項１】
複数のデータオブジェクトに関し、時間ベースのスクリプトを変更することなく前記スクリプトを巻き戻す方法であって、前記スクリプトは１つまたは２つ以上のデータオブジェクトをユーザに提示する際の状態を経時的に変更する順序付けられたコマンドのシーケンスを備え、各コマンドは対応する時間値に関連づけられており、前記方法は、
（１）開始時間値から始まる通常の速度における実時間の時間値からなるシーケンスを生成するステップと、
（２）ディジタルコンピュータを使用して、生成された時間値の各々に関連づけられた前記コマンドを実行して１つまたは２つ以上のデータオブジェクトの前記状態を変更するステップと、
（３）現在生成された時間値以前の所望の時間値をインタラクティブに指定するステップと、
（４）ディジタルコンピュータを使用して、各データオブジェクトを前記開始時間値の時点におけるその状態に復元するステップと、
（５）前記データオブジェクトの各々を前記所望の時間値の時点におけるその状態に復元するために、前記開始時間値に関連づけられた前記コマンドから開始し、前記所望の時間値に関連づけられた前記コマンドで終了する複数の変更されないコマンドを実行することにより、前記所望の時間値まで先送りするステップであって、前記ユーザが前記所望の時間値より前の時間値に関連づけられたコマンドにより変更される前記各データオブジェクトのいずれの状態も知覚しないように、関連づけられた時間値の経過を待たずに前記複数のコマンドを実行して前記所望の時間値まで先送りするステップと、
（６）現在時間を前記所望の時間値に設定し直して、それにより前記時間ベースのスクリプトを前記所望の時間値まで巻き戻すステップとを備えることを特徴とする時間ベースのスクリプト巻戻方法。
【請求項２】
上記（２）の前記状態を変更するステップにおいて、スクリプトのコマンドにより生成された各データオブジェクトにタグを付けるステップ（２ａ）を含み、上記（４）の各データオブジェクトを前記開始時間値の時点におけるその状態に復元するステップは、全てのタグ付きオブジェクトを削除するステップ（４ａ）を含むことを特徴とする請求の範囲第１項記載の方法。
【請求項３】
上記（５）の前記所望の時間値まで先送りするステップは、前記所望の時間より前の時間値に関連づけられたコマンドによって各データオブジェクトに加えられる変更を反映したキーフレームスクリプトを実行するステップ（５ａ）を含むことを特徴とする請求の範囲第１項記載の方法。
【請求項４】
前記コマンドは、１つまたは２つ以上の反復ループを含むことを特徴とする請求の範囲第１項記載の方法。
【請求項５】
前記コマンドは、１つまたは２つ以上の「ｉｆ−ｔｈｅｎ−ｅｌｓｅ」ステートメントを含むことを特徴とする請求の範囲第１項記載の方法。
【請求項６】
複数のデータオブジェクトに関し、時間ベースのスクリプトを変更することなく前記スクリプトを巻き戻すためのディジタルコンピュータベースの装置であって、前記スクリプトは１つまたは２つ以上のデータオブジェクトをユーザに提示する際の状態を経時的に変更する順序づけられたコマンドのシーケンスを備え、各コマンドは対応する時間値に関連づけられており、
（１）開始時間値から始まる通常の速度における実時間の時間値からなるシーケンスを生成する手段と、
（２）生成された時間値の各々に関連づけられた前記コマンドを実行して１つまたは２つ以上のデータオブジェクトの前記状態を変更する手段と、
（３）現在生成された時間値以前の所望の時間値をインタラクティブに指定する手段と、
（４）各オブジェクトを前記開始時間値の時点におけるその状態に復元する手段と、
（５）各データオブジェクトが前記開始時間値の状態まで復元された後、前記データオブジェクトの各々を前記所望の時間値の時点におけるその状態に復元するために、前記開始時間値に関連づけられた前記コマンドから開始し、前記所望の時間値に関連づけられた前記コマンドで終了する複数の変更されないコマンドを実行することにより、前記所望の時間値まで先送りするために動作可能な手段であって、前記ユーザが前記所望の時間値より前の時間値に関連づけられたコマンドにより変更される前記各データオブジェクトのいずれの状態も知覚しないように、関連づけられた時間値の経過を待たずに前記複数のコマンドを実行して前記所望の時間値まで先送りするために動作可能な手段と、
（６）現在時間を前記所望の時間値に設定し直して、それにより前記時間ベースのスクリプトを前記所望の時間値まで巻き戻す手段と
を備えたことを特徴とする装置。
【請求項７】
上記（２）の前記状態を変更する手段は、スクリプトのコマンドにより各データオブジェクトにタグを付ける手段（２ａ）を含み、上記（４）の各オブジェクトを前記開始時間値の時点におけるその状態に復元する手段は、全てのタグ付きデータオブジェクトを削除する手段（４ａ）を含むことを特徴とする請求の範囲第６項記載の装置。
【請求項８】
上記（５）の前記所望の時間値まで先送りする手段は、前記所望の時間値より前の時間値に関連づけられたコマンドによって各データオブジェクトに加えられる変更を反映するキーフレームスクリプトを実行する手段（５ａ）を含むことを特徴とする請求の範囲第６項記載の装置。
【請求項９】
前記コマンドは、１つまたは２つ以上の反復ループを備えたことを特徴とする請求の範囲第６項記載の装置。
【請求項１０】
前記コマンドは、１つまたは２つ以上の「ｉｆ−ｔｈｅｎ−ｅｌｓｅ」ステートメントを備えたことを特徴とする請求の範囲第６項記載の装置。
【発明の詳細な説明】
背景技術
本発明は、時間ベースのプログラミングに関し、さらに詳しくはオブジェクト指向プログラミング環境におけるインタラクティブメディアを制御する時間ベースのシーケンスのインプリメンテーションに関する。
コンピュータベースのマルチメディアプレゼンテーション（以下タイトル）の制作では、例えばテキスト、グラフィックス、サウンド、アニメーション、ビデオ、およびそのタイトルの制御のためのユーザインタフェースの要素の表示といったイベントの、時間ベースのシーケンスを作成する必要がある。これら時間ベースのシーケンスの組立には、便利なツールが用意されているため、制作者は複雑なプログラミングテクニックを学ぶ必要はない。これと同時に、有力な時間ベースのプログラミング（スクリプト）言語を使ってこれらのシーケンスの動きを正確に制御するための使いやすいスクリプトが望まれている。
時間ベースのシーケンスを取り入れたスクリプト言語の従来技術の例としては、MacroMedia社のMacroMind Directorがある。これは、ユーザインタフェース要素を使用して、テキスト、グラフィックス、サウンド、アニメーション、ビデオなどの時間ベースの表示を可能にするものである。これは時間にまたがるアニメーションの２４個のチャンネルを有する、時間ベースの「スコア」メタファーを使用する。また、プレゼンテーションの進行中に使用されるアートやサウンドを蓄えておくためのキャストウィンドウを有する。
MacroMind Directorの機能セットは有力ではあるが、時間にまたがるアニメーションにできる対象に制限がある。すなわち、スコアから制御できるオブジェクトの属性が時間にまたがって変えられるものに限られている。例えば、チャンネルの一つにビットマップオブジェクトがあるとすると、そのビットマップの、ある予め決められた側面、例えば画面上の位置、サイズ（スケール）、移動あるいは「ink」モード（matte,copy,xorなど）、色、ユーザにクリックされたときに実行するスクリプト、キャストから取り出して表示すべきビットマップなどしか変更できない。これらは有力な機能ではあるが、予め決められた機能に限定されないことが望ましい。
MacroMind Directorでは個々のフレームにおいて指定されたユーザスクリプトを実行することもできる。しかし、この機能はスコアメタファーの範囲外であり複数のフレームにまたがるイベント、ましてや任意のイベントの制御を可能にするほど使いやすくもなく、有力でもない。例えば、前のフレームのスクリプトの累積効果を維持することはできない。
時間ベースのシーケンスの生成を可能にする他の製品としては、Apple社のQuicktimeというシステムソフトウェアがあり、AdobeのPremierのようなオーサリングツールで使われている。Quicktimeにより時間ベースのビデオやサウンドを編集、再生することはできるが、他のメディアの再生や任意のコードシーケンスの実行を正確に制御するメカニズムは提供していない。
発明の概要
広くは、本発明は任意のコードシーケンスを時間に合わせて実行するシステムを対象としている。このようなシステムの少なくとも一部は、オブジェクト指向プログラミング環境におけるインタラクティブメディア制御用スクリプト言語の中でインプリメントされる。このシステムは、コンピュータのモニタ上へのフルモーションビデオやアニメーションシーケンスの表示、あるいはコンピュータに接続されたスピーカを通したオーディオシーケンスの再生といったメディアの再生手段が含まれている。このシステムは、スクリプト言語のコマンドシーケンスのようなスクリプトシーケンスを実行することができる。さらにそのスクリプトシーケンスの実行中、時間のトラックを管理するシーケンスプレイヤオブジェクトを生成する手段を有する。またこのシステムには、そのシーケンスプレイヤオブジェクトとの関連を示すタグを有するオブジェクトが少なくとも一つは含まれている。これによりこのシステムは、例えばスクリプトシーケンス中の予め指定された時間にタグ付きのオブジェクトを表示するといったことができるようになる。
本発明の一実施の形態において、このシステムはスクリプトシーケンスの実行中に、（それ以前に実行されたコマンドの累積効果を維持して）任意の指定した時間にジャンプしたり、実行を任意の時間になるまで延期することができる。本発明の他の実施の形態において、このシステムはその環境にある全てのタグ付きのオブジェクトを削除する手段を有する。全てのタグ付きオブジェクトを削除した後、このシステムはそのスクリプトシーケンスの開始点に直ちに戻り、タグ付きオブジェクトが削除されたところよりも前の時間までスキップすることができる。すなわち、その結果巻戻しが実行できる。本発明のさらに異なる実施の形態において、このシステムは、その環境の現状を復元するキーフレームスクリプトを生成する手段を有する。キーフレームスクリプトはいつでも呼び出すことができ、これによりスクリプトシーケンス中の長いコマンド列を実行することなくその環境を復元することができる。
すなわち、本発明の目的は、マルチメディア制作者に対し、簡単かつ有力なプログラミング環境を提供することにある。
本発明の他の目的はマルチメディア制作者に対し使い勝手の良い時間ベースのプログラミング言語を提供することにある。
本発明のさらに他の目的は、条件ステートメントを含む時間ベースのプログラミング言語を提供することにある。
さらに本発明の他の目的は、時間ベースのスクリプトシーケンスの任意の時間にジャンプする機能を提供することにある。
本発明の他の目的は時間ベースのスクリプトシーケンスの巻戻機能を提供することにある。
本発明のさらに他の目的は時間ベースのプログラミング環境においてキーフレームスクリプトを含むことにある。
本発明の他の目的、効果、および特徴を、以下添付の図面および明細書により、さらに説明する。
【図面の簡単な説明】
第１図は、本発明によるオブジェクト指向マルチメディア環境で用いられるコンピュータシステムを示す図、
第２図は、本発明によるスクリプトシーケンスの一例およびキーフレームスクリプトを示す図、
第３図は、本発明によるオブジェクト指向プログラミング環境を示す図、
第４図は、本発明による条件ステートメントを含むスクリプトシーケンスを示す図である。
本発明の好ましい実施形態の詳細な説明
第１図は、本発明によるオブジェクト指向マルチメディア環境で用いられるコンピュータシステム100を図式的に示す。システム100は、プロセッサユニット110、キーボード112、ポインティングデバイス（マウス114のようなもの）、およびモニター120からなる。さらに、プロセッサユニット110には、マルチメディア環境におけるオーディオ出力を生成するためのサウンドユニット116が含まれる。（図には示されていないが）ビデオシステムのような他の周辺デバイスを、都合に応じてプロセッサユニット110に結合することもできる。
モニタ120は、マルチメディア環境における各種オブジェクトを表示するために使用される。オブジェクトの例として、楕円122、正方形123およびモニタ120の表示範囲の一部をその表示範囲の残りの部分から分離するためのウィンドウ124がある。第１図においてウィンドウ124が表示しているスクリプトシーケンス126の詳細を以下に記す。また、ウィンドウ124はカーソル128も表示しているが、このカーソルはマウス114によって制御されることが望ましい。さらにモニタ120は、ユーザがよく使用する各種オブジェクトやメソッドを目に見える形で表すために、参照番号132、134および136として示されるような、一つ以上のアイコンを表示してもよい。
第２図は、疑似コード形式で書かれたスクリプトシーケンス150の一例、およびそれに係わるキーフレームスクリプト174を示す。スクリプトシーケンス150には、コマンドのリストと、それらのコマンドが実行される時間が関連づけられて含まれている。ユーザは、例えば行と列とを含む表形式のテンプレートであるイベントエディタのようなものを使用して、コンピュータシステム100にコードシーケンス150を入力してもよい。ユーザはキーボード112を使用して時間やアクティビティを入力することが望ましいが、予め書かれたスクリプトシーケンスをメモリから取り出すこともできる。以下、キーフレームスクリプト174の詳細を示す。
スクリプトシーケンス150には、再生開始点を記す欄152、、タイムシーケンス欄154、およびアクティビティ欄156が含まれている。また、スクリプトシーケンス150には複数の行が含まれている。各行のタイムシーケンス欄154には時間を示す値が含まれ、アクティビティ欄156にはその時間に開始されるべきアクティビティを示す一つ以上のコマンドが含まれる。アクティビティ欄156において使用されるアクティビティの生成、変更、削除のコマンドは、オブジェクト指向スクリプト言語のコマンドであることが望ましい。またスクリプトシーケンス150には、再生開始点を記す欄152の列168に再生開始点158が示されている。再生開始点158の作用について、以下に記す。
スクリプトシーケンス150は、本発明の説明に用いられる簡単なシーケンスである。スクリプトシーケンス150の１行目の行160は、タイムシーケンス欄154に時間「0000」が示されており、アクティビティ欄156にアクティビティ「create oval,oval color(black)」が示されている。これは、時間が０単位時間になると第１図のオブジェクト122のような楕円オブジェクトが生成され、その色が黒であることを意味する。２行目の行162は、時間が10単位時間になると楕円オブジェクト122の色が緑色に変わることを意味する。３行目の行164は、時間が30単位時間になると、楕円オブジェクト122の色が赤色に変わることを意味する。それと同時に、第１図のオブジェクト123のような正方形オブジェクトが生成される。４行目である行166は、時間が55単位時間になると「hello」というサウンドを出力する「hello」サウンドオブジェクトが生成され、同時に楕円オブジェクト122は削除されることを意味する。５行目の行168は、時間が100単位時間になると、正方形オブジェクト123の色が青色に変わることを意味する。この例では、サウンド「hello」の出力に要する時間の長さは20単位時間とする。したがってこの時点で、サウンドオブジェクトのアクションは既に完了している。最後に、６行目の行170は、時間が110単位時間になったときに、正方形オブジェクト123の色が黄色に変わることを意味する。
スクリプトシーケンス150を実行する方法の例としては、カーソル128をアイコン136のように、「再生」を示すよう予め定義されたアイコン上に移動し、マウス114をクリックする。「再生」命令により、コンピュータシステム100は「再生」メッセージをスクリプトシーケンス150に送信する。その結果、スクリプトシーケンス150は最初（すなわち、時間が「0000」のとき）から、最後（すなわち、時間が「0110」のとき）まで実行される。この際、見えたり聞こえたりするイベントは以下のようになる。：（１）直ちに黒い楕円(122)が生成される。（２）時間が10単位時間になると、楕円122の色が緑色になる。（３）時間が30単位時間になると、楕円122の色が赤色に変わる。同時に、黒い正方形(123)がモニタ120上に現れる。（４）時間が55単位時間になると、「hello」という言葉が聞こえる。同時に楕円122がモニタ120上から消える。（５）時間が100単位時間になると、正方形オブジェクト123の色が青色に変わる。（６）時間が110単位時間になると、正方形オブジェクト123の色が黄色に変わる。
スクリプトシーケンス150の動きのベースとなるオブジェクト指向環境について、以下説明する。第３図はコンピュータシステム100上にあるオブジェクト指向プログラミングシステム200を示す。プログラミングシステム200は、コンダクタオブジェクト210と、シーケンスプレイヤオブジェクト220とからなる。コンダクタオブジェクト210は、アクティブなオブジェクトのリストを持ち、それらのオブジェクトに対してメッセージを発行し、それらのオブジェクトがモニタ120、ユーザイベントおよびＣＰＵサイクルなどの共有資源を使用する際に調整を行う。コンダクタオブジェクト210は、効果的な方法で画面上のオブジェクトを合成することにより、モニタ120の画面の滑らかに更新する役割を果たす。例えば、コンダクタオブジェクト210は、画面の変更が加えられた部分のみ更新することが望ましい。
シーケンスプレイヤオブジェクト220は、playerクラスから派生しており、playerクラスは、clockクラスから派生している（図には示されていないが、出願中の国際特許公開番号WO94/23387 Synchronized Clocks and Media Players（同期クロックおよびメディアプレーヤー）という題名の特許で詳細に説明されており、ここで参照される）。したがって、シーケンスプレイヤオブジェクトは、スクリプトシーケンス150のようなスクリプトシーケンスのために、時間を管理することができる。好ましい実施形態において、シーケンスプレイヤオブジェクト220は、各種形式（例えば、絶対時間と相対時間）で、また各種の異なる時間単位（ミリ秒、1/60秒など）のトラックを管理することができる。言い換えれば、シーケンスプレイヤオブジェクト220はそれに対応するスクリプトシーケンスのクロックともなるオブジェクトといえる。
シーケンスプレイヤオブジェクト220の構造は、上記の出願中の特許に記載されている。クラス階層、playerクラスとclockクラスおよび関連するクラスとの関係、およびこれらのクラスのオブジェクトが時間のトラックを管理する方法についてもその出願中の特許に記されている。さらにそこには、スクリプトシーケンスプレイヤにより実行できるメソッド（「playing」や、ある間隔で実行されるスクリプトシーケンスなど）も示されており、これらの多くが以下の例で示される。
本発明の一実施の形態において、スクリプトシーケンスは、独立したスレッドの実行としてインプリメントされる。このインプリメンテーションにより、従来の各種プログラミング機能、例えばループのネスト、サブルーチンコールなどが活用でき、スクリプトの効果的な実行が可能になる。他の実施の形態においては、スレッドは必ずしも必要ではなく、スクリプトシーケンスをフラグメントに分解し、時間がきたらそれぞれのフラグメントを実行するようにできる。さらに他の実施の形態においては、スクリプトシーケンスは、位置や、外観の変化といったスクリプトメソッドのサブセットに置き換えられる。
スクリプトシーケンス150のようなスクリプトシーケンスの実行中、オブジェクトはシーケンスプレイヤオブジェクト220からの命令に応じて生成される。これらのオブジェクトは、シーケンスプレイヤオブジェクト220の「子」と呼ばれる。スクリプトシーケンス150では、子が３つ生成される。これらは、楕円オブジェクト122を示す子Ａ(224)、正方形オブジェクト123を示す子Ｂ(226)、および「hello」サウンドオブジェクトを示す子Ｃ(230)である。個々の子オブジェクトは、そのオブジェクトがシーケンスプレイヤオブジェクトの「子」であることを示す「タグ」を有する。したがって、子オブジェクトＡ(224)、Ｂ(226)、およびＣ(230)はそれぞれタグ225、228、および232を有する。個々のオブジェクトに固有のタグをつけることにより、あるプレイヤが、生成した個々の子オブジェクトのリストを維持管理するのと同様の効果が得られる。第３図のオブジェクトはメッセージを使用して他のオブジェクトと、図３の線241-247で示されるように通信することができる。
スクリプトシーケンス150が実行されると、シーケンスプレイヤオブジェクト220はスクリプトシーケンス150と関連づけられる。時間が「0000」、すなわち０単位時間に等しくなると、シーケンスプレイヤオブジェクト220は楕円オブジェクト122を生成する。この際、楕円オブジェクト122の色は黒である。上記のように、楕円オブジェクト122は、それがシーケンスプレイヤオブジェクトの子であることを示すタグ225を含んでいる。楕円オブジェクト122は、コンダクタオブジェクト220によって維持管理されるリストに追加される。楕円オブジェクト122はコンダクタオブジェクト210によって画面が更新されると、モニタ120の画面上に現れる。シーケンスプレイヤオブジェクト220は、時間が連続的に進む場合、スクリプトシーケンス150のクロックとして機能する。スクリプトシーケンス150の次のアクティビティは時間が10単位時間になるときに起こるため、その時間になるまではアクションは一つも起こらない。
シーケンスプレイヤオブジェクト220は、時間が10単位時間になったことを知らせると、その時間に関連づけられているスクリプトを実行し、その結果楕円オブジェクト122の色が緑色に変わる。次にコンダクトオブジェクト210が、モニタ120画面を更新し、楕円オブジェクト122を緑色に変える。コンピュータシステム100は、シーケンスプレイヤが時間のトラックを管理し続けている20単位時間の間待つ。シーケンスプレイヤオブジェクト220は、30単位時間になったことを知らせると、その時間に関連づけられているスクリプトを実行し、その結果楕円オブジェクト122の色が赤色に変わる。同時に、シーケンスプレイヤオブジェクト220は正方形オブジェクト123を生成し、それをコンダクタオブジェクト210のリストに追加する。正方形オブジェクト123は、それがシーケンスプレイヤオブジェクトの子であることを示すタグ228を含んでいる。コンダクタオブジェクト210はモニタ120の画面を更新して、変化を反映する。
コンピュータシステム100は、シーケンスプレイヤが時間のトラックを管理し続けている25単位時間の間待つ。シーケンスプレイヤオブジェクト220は、55単位時間になったことを知らせると、シーケンスプレイヤオブジェクト220はサウンドオブジェクト230を生成し、それをコンダクタオブジェクト210のリストに追加する。サウンドオブジェクト220は、それがシーケンスプレイヤオブジェクトの子であることを示すタグ232を含んでいる。同時に、シーケンスプレイヤオブジェクト220は楕円オブジェクト122をコンダクタオブジェクト210のリストから削除する。コンダクタオブジェクト210にはこの変化が通知される。その結果、「hello」という言葉がサウンドユニット116によって作成され、楕円オブジェクト122がモニタ120の画面上から消える。
コンピュータシステム100は、シーケンスプレイヤが時間のトラックを管理し続けている45単位時間の間待つ。シーケンスプレイヤオブジェクト220は、100単位時間になったことを知らせると、その時間に関連づけられているスクリプトを実行し、その結果正方形オブジェクト123の色が青色に変わる。コンダクタオブジェクト210はモニタ120の画面を更新して、変化を反映する。コンピュータシステム100は、シーケンスプレイヤが時間のトラックを管理し続けている10単位時間の間さらに待つ。シーケンスプレイヤオブジェクト220は、100単位時間になったことを知らせると、その時間に関連づけられているスクリプトを実行し、その結果正方形オブジェクト123の色が黄色に変わる。これにしたがって、コンダクタオブジェクト210はモニタ120の画面を更新して、変化を反映する。
スクリプトシーケンス150により、時間ベースのコマンドが簡単に書けるようになる。これらのコマンドはオブジェクトの生成、削除、およびそれらの各種属性の設定を、時間にまたがって行う。以下に説明するように、これらのコマンドの中には、「skip ahead」、「rewind」、および多くのプログラミング言語において使用されている「do-loop」や「for-loop」に類似する条件コマンドを含むことができる。したがって、本発明によるスクリプトシーケンスは、非常に使いやすいシステムであり、簡単ではあるが有力なオブジェクト指向言語を使ったマルチメディアタイトルの制作を可能にするものである。
次に「skip ahead」コマンドの作用について説明する。スクリプトシーケンスが通常の方法で実行されるとき、そのシステムはアクティビティが行われるまでの一定時間待つことになる。例えば、黒い楕円122が生成され（スクリプトシーケンス150が開始し）てから楕円122の色が緑色に変わるまで、そのシステムは、スクリプトシーケンス150のタイムシーケンス欄154にある値が「0010」であるために、10単位時間待つ。「skip ahead」モードでは、そのシステムはタイムシーケンス欄154により示される時間まで待たない。その代わりに、そのシステムはアクティビティ欄156に示される全てのアクティビティを、予めユーザが指定した時間になるまで順次（待たずに）実行する。
ユーザは、カーソル128をスクリプトシーケンス150のある行、例えば行168の再生開始点を記す欄152に合わせて、マウス114をクリックすることにより「先送り」（時間が「x」となる任意方向へのスキップ）を開始することができる。スクリプトシーケンス150の実行が開始すると、シーケンスプレイヤオブジェクト220の現在時間が予めユーザが定義した時間、例えば100単位時間に設定される。この時間（任意の時間）はタイトルの制作者が決めてもよいし、タイトル実行中に入力することもできる。
一実施の形態において、「skip ahead」コマンドは、SetTimeメソッドの中でインプリメントされ（さらにSetTimeを通して呼び出され）、SetTimeメソッドがスクリプトシーケンスプレイヤの時間を設定する−−これはスクリプトシーケンスを最初まで巻き戻して指定された時間まで実行することによる。スクリプトシーケンス150が「skip ahead」によりシーケンシャルに実行されるとき、行162、164、166において「待ち」は発生しない。これは、これら３つの行のそれぞれに対応する時間はシーケンスプレイヤオブジェクト220によって示された時間よりも短いためである。楕円、正方形、およびサウンドオブジェクトの存在や状態が、行168の実行時間がくるより前に、コンダクタオブジェクト210に知らされることはない。そのため、これらのオブジェクトが合成されることはない。（すなわち、モニタ120の画面はこの楕円、正方形オブジェクトを表示しないし、サウンドユニット116は「hello」という言葉を出力しない。）スクリプトシーケンス150が、行168に到達した時点で、正方形の存在と状態がコンダクタオブジェクト210に伝えられる。ユーザの観点からみれば、青い正方形オブジェクトがモニタ120の画面上に見えることになる。すなわち、そのシステムは、時間が100単位時間に等しくなるところまで「先送り」されることになる。この方法により、そのシステムはスクリプトシーケンスの実行中に、（それ以前に実行されたコマンドの累積された効果が維持したままで）任意の指定した時間にジャンプすることができる。
次に、「rewind」コマンドの作用について説明する。「rewind」コマンドが発行されるときには、それ以前にスクリプトシーケンスの一部が既に実行されている。例えば、スクリプトシーケンス150が現在行168の状態にあったとすると、モニタ120の画面は青色の正方形オブジェクトを表示していなければならない、ユーザはカーソル128を、行168より上の行である行162の再生開始点を示す欄152に合わせてマウス114をクリックすることにより、スクリプトシーケンス150を巻き戻すことができる。シーケンスプレイヤオブジェクト220はコンダクタオブジェクト210に対し、シーケンスプレイヤオブジェクト220の全ての子に対して、自身を削除させるメッセージを送るよう命令を出す。上記のように、楕円オブジェクト122、正方形オブジェクト123、およびサウンドオブジェクトは、自分がシーケンスプレイヤオブジェクト220の子であることを示すタグを含んでいる。よって、これらのオブジェクトは容易に識別、削除できる。スクリプトシーケンス150はこれにより最初、すなわち行160から再実行される。シーケンスプレイヤオブジェクト220の時間は10単位時間（すなわち行162に示される時間の値）に設定される。上記のように、スクリプトシーケンス150は行162へ「先送り」される。ユーザの観点からみれば、そのシステムは10単位時間の時間まで巻き戻されたことになる。
上記の「rewind」コマンドの実施の形態において、スクリプトシーケンス150は開始から、最終的に存在していた全てのオブジェクトが削除されるまで実行される。また、「キーフレーム」スキームと呼ばれる技術を使うことにより、予め決めておいた時間からスクリプトシーケンスを実行することもできる。この方法は、開始から決められた時間までの間に多数の「skip ahead」コマンドを実行する必要があるときに特に有効である。
指定された時間におけるキーフレームはスクリプトシーケンスが開始されて、指定時間に到達した後に、コンピュータシステム100により自動的に生成される。コンピュータシステム100はその指定時間に存在している全てのオブジェクトに、それらの状態を復元するコードを生成させる。このとき、コンピュータシステム100はグローバルな状態や、非オブジェクトの状態を保存しておかなければならない。キーフレームの上記のコードを生成できるソフトウェア製品の例としては、Kent BeckとWard Cunninghamによって書かれた「Hot Draw」がある。このソフトウェアは広く普及しているものなので、ここでは詳細は記さない。キーフレームのコードは補助スクリプト（キーフレームスクリプト）として、指定された時間の環境の状態と関連づけられる。スクリプトシーケンスをキーフレームスクリプトから実行し始めると、そのスクリプトシーケンスは最初からその時間まで実行されたかのように実行される。
以下に説明する例は、スクリプトシーケンス150のある一つの行、例えば行168、すなわち時間「0100」に対応するキーフレームスクリプト（第２図の174）である。スクリプトシーケンス150は時間「0000」から「0100」まで通常の方法で実行される。その時点で、モニタ120の画面上には青い正方形のみが表示されている。それと同じ状態を生成するスクリプトは「Create square,square color(blue).」である。よって、時間「0100」のキーフレームスクリプト174は「Create square,square color(blue).」となる。この例に示されるように、キーフレームスクリプトは実行に長時間を要する長いスクリプトを置き換えて、先送り機能の効果を高めるために使用することができる。
第２図のスクリプトシーケンス150はイベントエディタ形式で書かれているが、スクリプトシーケンスをプログラミング言語形式で書くこともできる。キーフレームのプログラミング言語の実施形態においては、キーフレームスクリプトを、プレイヤが先送りする時間に基づいた適当な条件とともに、スクリプトシーケンスの最初におくことができる。（例えば、先送り時間>50ならば、キーフレームスクリプトを実行してスクリプトシーケンス内の適切な時間にジャンプする。）
コンピュータシステムで通常使用されるプログラミング言語に時間ベースの情報を含むためには、２つの新しいコマンドが必要になる：「wait」コマンドと「await」コマンドである。
「wait」コマンドは、最後に「wait」コマンドを発行した時間から、指定された時間の間システムを待たせる。「await」のコマンドは、指定された絶対時間になるまでシステムを待たせる。上記のイベントエディタ形式の例のように、指定した時間間隔が既に過ぎてしまった場合はどちらのコマンドも無効である。
第２図のスクリプトシーケンス150を「wait」と「await」の両方を使用したプログラミング言語形式で書くと以下のようになる。
0003751314.tif 000002
本発明によるスクリプトシーケンスは、条件コマンドと合わせて使用することもできる。第４図のスクリプトシーケンス300は、プログラミング言語形式で条件コマンドを含むものである。スクリプトシーケンス300は起点として、x=0,y=0の点に楕円オブジェクトを生成するところから始まる。２番目のステートメントはスクリプトシーケンス300を、３番目のステートメントが実行されるまで10単位時間待たせるためのwaitコマンドである。３番目のステートメントは、楕円オブジェクトを５回にわけて移動させるものである。それぞれ10単位時間間隔で、水平方向に１単位距離ずつ移動する。したがって、スクリプトシーケンス300の３番目のステートメントは、移動の起こった回数に依存して実行されるコマンドであるため、条件コマンドといえる。スクリプトシーケンス300の４番目のステートメントは楕円オブジェクトを削除するものである。なお従来からよく知られている他の条件コンストラクト（例えば「if-then-else」）も当然のことながら、このメカニズムを使用して時間制御や同期をとるために使用することができる。
スクリプトシーケンス300が（例えばアイコン136のクリックにより）実行されると、シーケンスプレイヤオブジェクト220の時間は０に設定される。次に第１図に示される楕円オブジェクト122のような楕円オブジェクトが生成される。シーケンスプレイヤオブジェクト220の時間が10単位時間を過ぎると、コンダクタオブジェクトに、楕円オブジェクト122を水平方向に１単位距離移動しなければならないことが伝えられる。コンピュータシステム100は、次にさらに10単位時間待つ。シーケンスプレイヤオブジェクト220の時間が20単位時間を過ぎると、再びコンダクタオブジェクト210に、楕円オブジェクト122を水平方向に１単位距離移動しなければならないことが伝えられる。この「perform」ループは５回繰り返される。最後に、楕円オブジェクト122はコンダクタオブジェクト210のリストから削除される。
上記例に示されるように、本発明によるスクリプトシーケンスは、プログラミングにおいて、従来の時間ベースのシーケンスにない柔軟性を提供する。本発明のスクリプトシーケンスは、既存の全ての、条件ステートメントを含むマルチメディアシステム向けプログラミング言語の機能を持つ。一方、従来の時間ベースのプログラミング環境は、上記の「for」ループの例で示したような、任意のコードシーケンスによる時間の正確な制御、管理、同期制御ができない。さらに、MacroMind Directorのように、スクリプトシーケンスがオブジェクトの小セットの容量に限定されることもない。その結果、マルチメディア制作者はより柔軟で有力な方法でタイトルを制作することができる。
本発明によるスクリプトシーケンスは、従来の時間ベースのプログラミング環境よりも柔軟であり、機能も多いが、これにより性能が落ちることはない。上記のように、シーケンスにおけるキーフレームの結合により、先送りや巻き戻し操作の実行にかかる時間を短縮し、本発明によるスクリプトシーケンスの効果をより高めることができる。
本発明については以下に規定するとともに、好ましい形態に関して説明してきたが、当業者であれば、以下に添付する請求の範囲にあるような本発明の要旨および範囲を逸脱しない形式的変更、あるいは細部の変更は容易に考えられるのであろう。
【図１】
0003751314.tif 000003
【図２】
0003751314.tif 000004
【図３】
0003751314.tif 000005
【図４】
0003751314.tif 000006