JP2003208310A - 動画生成方法及び装置 - Google Patents

動画生成方法及び装置

Info

Publication number
JP2003208310A
JP2003208310A JP2002261322A JP2002261322A JP2003208310A JP 2003208310 A JP2003208310 A JP 2003208310A JP 2002261322 A JP2002261322 A JP 2002261322A JP 2002261322 A JP2002261322 A JP 2002261322A JP 2003208310 A JP2003208310 A JP 2003208310A
Authority
JP
Japan
Prior art keywords
state
transition
path
graphical object
route
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2002261322A
Other languages
English (en)
Inventor
Martin Paul Tlaskal
ポール トラスカル マーティン
David Geoffrey Slack-Smith
ジョフリー スラック・スミス ディビット
Will Alexander
ウィル アレクサンダー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from AUPR7535A external-priority patent/AUPR753501A0/en
Priority claimed from AUPS0790A external-priority patent/AUPS079002A0/en
Application filed by Canon Inc filed Critical Canon Inc
Publication of JP2003208310A publication Critical patent/JP2003208310A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Stored Programmes (AREA)
  • Processing Or Creating Images (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 グラフィカルオブジエクトの第1の状態と、
第2の状態との間の1つとして第3の状態に従つてグラ
フイックオブジエクトをレンダリングするため、1つの
状態遷移の実行を変更する装置を提供する。 【解決手段】 アプリケーションプログラムはハードデ
ィスクドライブ610に常駐しており、その実行時にプ
ロセッサ605により読み取られ、制御される。プログ
ラム及びネットワーク620から取り出されるデータの
中間格納は、可能であればハードディスクドライブ61
0と協調して、半導体メモリ606を使用して実現され
る。プログラムは対応するドライブ612又は611に
より読み取られる。或いは、ユーザがモデム装置616
を介してネットワーク620からプログラムを読み取っ
ても良い。更に、他のコンピュータ読み取り可能な媒体
からコンピュータシステム600にソフトウェアをロー
ドすることも可能である。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は一般にコンピュータ
プログラミングに関し、特にアプリケーションプログラ
ムによる非同期事象の処理に関する。本発明は非同期事
象を処理する方法及び装置に関する。また、本発明は、
非同期事象を処理するためのコンピュータプログラムが
記録されているコンピュータ読み取り可能な媒体を含む
コンピュータプログラム製品にも関する。
【0002】
【従来の技術】従来の技術の説明を進める前に、以下の
説明を通して使用されるべき用語を簡単に検討しておく
のが適切である。
【0003】Visual C++などのオブジェクト指向プログ
ラミング環境においては、「オブジェクト(object)」と
いう用語は、データ構造及びそのデータ構造を操作する
ための手続き(メソッドと呼ばれることが多い)を含む
コンピュータソフトウェアコンポーネントを表すために
使用される。オブジェクトは、何らかの形態の通信プロ
トコルを使用してメッセージを送信することにより相互
に通信できる。プロトコルは、オブジェクトと関連し、
且つプロトコルサイド識別子を複数組のメッセージ識別
子へマッピングするために使用されるテーブルである。
メッセージ識別子は、オブジェクト間で送信されるメッ
セージと関連している。このサイド識別子は、ある特定
のオブジェクトがプロトコルのどのサイドと関連してい
るかを識別する。例えば、あるオブジェクトはそのオブ
ジェクトと関連するインスタンスについて特定のプロト
コルの「センダ(sender)」サイドを使用し、そのオブジ
ェクトは同じプロトコルの「レシーバ(receiver)」サイ
ドを使用する別のオブジェクトに関連付けられるであろ
う。各プロトコルサイド識別子は、プロトコルのそのサ
イドを実現するオブジェクトが送信できるであろうメッ
セージに対応する1組のメッセージ識別子へマッピング
する。
【0004】特定のオブジェクトの手続きは、別のオブ
ジェクトから送信されるメッセージにより起動できる
が、各オブジェクトの内部構造は他のどのオブジェクト
からも完全に隠蔽されている(カプセル化と呼ばれる特
性)。各オブジェクトは、2つのオブジェクト間の通信
を指定する、1つ或いはそれ以上の関連インターフェー
スを有することができる。例えば、各オブジェクトは独
自の専用変数を有し、特定のオブジェクト内に含まれる
手続きが非ローカル変数を参照しない場合、そのオブジ
ェクトのインターフェースは、そのオブジェクト内に含
まれるパラメータリストにより定義される。オブジェク
トの変数は情報を格納するが、その情報がどのように処
理されるかを定義することはない。
【0005】オブジェクトは、オブジェクトのテンプレ
ート又は型から取り出され、ある特定のテンプレートの
インスタンスであるオブジェクトの集合体は、1つのク
ラスを形成すると言われている。クラス定義は、1つの
特定のクラスの中のオブジェクトの属性(即ち、特性)
を定義する。一般に、1つのクラスの中のオブジェクト
は、1つのオブジェクトが階層の中の次に高いレベルに
1つの親オブジェクト(即ち、スーパークラス)を有
し、且つ次に低いレベルに1つ或いはそれ以上の子オブ
ジェクト(即ち、サブクラス)を有するように、階層を
成して順序付けられている。オブジェクトは、一般に、
そのオブジェクトと関連する、シブリングテーブルと呼
ばれることも多いマッピングテーブルによって親オブジ
ェクト又は子オブジェクトへマッピングされる。
【0006】属性はオブジェクトに対してローカルであ
っても良いし、あるいは親オブジェクトから継承されて
も良い。継承は、オブジェクトの特性を複製して、他の
オブジェクトで具体化することができる態様に与えられ
る用語である。オブジェクトの属性は、多くの場合に継
承の数に制限なく、子オブジェクトから継承されること
も可能である。クラス内の全てのオブジェクトが取り出
される基になったオブジェクトをベースクラスオブジェ
クトという。
【0007】継承は抽象データ型により静的でもあり、
具体化及び値により動的でもある。継承規則はどれを継
承できるかを定義し、継承リンクは継承属性の親と子を
定義する。
【0008】一般に、オブジェクトは、親アプリケーシ
ョンプログラムとの間に永久結合を有する。しかし、オ
ブジェクトの中には親アプリケーションとの間に永久結
合を持たないものもある(例えば、埋め込みオブジェク
ト)。この場合、オブジェクトが起動されると、一般に
親アプリケーションが開始される。例えば、グラフィカ
ルユーザインターフェースシステムにおけるボタンオブ
ジェクトは、起動されると、何らかの機能を実行するた
めにあるアプリケーションプログラムを実行させるであ
ろう。
【0009】Windows(登録商標)グラフィカルユーザ
インターフェースシステムなどの従来の多くのコンピュ
ータグラフィカルユーザインターフェースシステムは、
マウスクリック又はキーボード押下などの非同期事象を
処理するためにオブジェクトを利用する。それらの非同
期事象は周辺装置により生成されることが最も多く、従
って、一般に非同期事象を外部事象と呼ぶ。この外部事
象は、一般に、グラフィカルユーザインターフェースシ
ステムにより、アプリケーションプログラムによって呼
び出される1つ或いはそれ以上のオブジェクトを使用し
て処理される。外部事象の中には、アプリケーションプ
ログラムにより実行されるべきいくつかの異なるアクシ
ョン(例えば、手続きを起動する、データ値を計算す
る、キーボード押下の意味を判定するなど)を要求する
ものがあり、そのため、多くのアプリケーションプログ
ラムは、外部事象を処理するために事象ハンドラオブジ
ェクトと呼ばれるあるクラスのオブジェクトを使用す
る。各外部事象は、それ自体がアプリケーションプログ
ラム内部で内部事象を生成する場合が多いそれぞれ異な
る事象ハンドラオブジェクトにより処理可能であり、従
って、事象ハンドラオブジェクトは一般に相互に通信す
るように構成されている。しかし、ある型の外部事象
(例えば、マウスクリック)は、一般にあるインスタン
スの事象ハンドラオブジェクト(例えば、マウス事象ハ
ンドラオブジェクト)により処理される。
【0010】事象ハンドラオブジェクトは、先に説明し
たように、何らかの形態の通信プロトコルを使用してメ
ッセージを送信することにより相互に通信する。
【0011】グラフィカルユーザインターフェースの開
発中、一般に、少なくとも2つの専門分野からの知識が
必要とされる。まず、グラフィカルユーザインターフェ
ースの設計者、利用可能性の専門家及び/又はアーティ
ストは、グラフィカルユーザインターフェースが一般に
複数の画面(即ち、表示装置にレンダリングされる1つ
或いはそれ以上のグラフィカルオブジェクト)を含む場
合に、グラフィカルユーザインターフェースの「ルック
アンドフィール(look-and-feel)」を判定する。その一
方で、コンピュータプログラマは、グラフィカルユーザ
インターフェースを動作させ、外観を変化させ、ユーザ
のインタラクションメッセージをソフトウェアアプリケ
ーションへ送信させ、且つソフトウェアアプリケーショ
ンからユーザへのフィードバックを提示させるソフトウ
ェアを作成する。
【0012】グラフィカルユーザインターフェース開発
の役割を分離することによって起こることが多い問題点
の1つは、設計者がグラフィカルユーザインターフェー
スをどのように見せ、機能させるかについて明確なアイ
デアを持っているにも関わらず、実際にグラフィカルユ
ーザインターフェースの機能を判定するのはプログラマ
であるという点である。その結果、グラフィカルユーザ
インターフェースの開発中に専門分野間で高度な相互依
存が起こる。
【0013】上述のような専門分野間の相互依存を有限
ステートマシーンの使用によって幾分か軽減することが
できる。有限ステートマシーンは、一般にグラフィカル
オブジェクトをモデル化するために使用されている。有
限ステートマシーンを使用してグラフィカルオブジェク
トをモデル化することにより、オブジェクトと関連する
グラフィカルユーザインターフェースをそのオブジェク
トの使用と分離できる。有限ステートマシーンは、入力
データ文字列が各記号を順次見ながら左から右へ一度読
み取られるという単純なオートメーション方法を提供す
る。ある任意の1つの時点で、有限ステートマシーンは
多数の内部状態のうちの1つの状態にあり、各記号が読
み取られるたびに状態は変化する。新たな状態は読み取
られる記号と、ソース状態とによって決まる。
【0014】有限ステートマシーンは、状態遷移関数f
により次のように判定される。
【0015】f:I×Q → Q この式中、Iは可能な入力記号の集合、Qは状態の集
合、及びI×QはIとQのカルテシアン(Cartesian)積
である。関数fは一般に状態遷移テーブル又は状態遷移
線図のいずれかにより表現される。
【0016】有限ステートマシーンは、一般にグラフィ
カルユーザインターフェースで使用され、且つユーザが
特定のグラフィカルユーザインターフェースを駆動する
ために対話する個別コントロールをモデル化するために
使用できる。多くの場合、コントロール(a control)と
の対話の結果、そのコントロールと関連するグラフィカ
ルオブジェクトの視覚外観に変化が生じる。例えば、1
つ或いはそれ以上のグラフィカルオブジェクトを使用す
るグラフィカルユーザインターフェースで表現されるボ
タンの上をマウスカーソルが移動したときにボタンを点
灯させ、且つ従来のようにマウスを使用することにより
ボタンが選択されたときにフィードバックを提供するよ
うに構成することが可能である。リストボックスなど
の、より複雑なコントロールはより多くの数の視覚外観
を提示することができる。
【0017】従来の多くのグラフィカルユーザインター
フェースコントロールは、視覚外観を瞬時に変化させ
る。即ち、ユーザインタラクション(例えば、マウスク
リック)が起こると、直ちに、変化後の視覚外観を示す
ためにコントロールは再レンダリングされる。残念なが
ら、ユーザインタラクションの前後における視覚外観の
相違は、多くの場合著しく大きい。従って、有限ステー
トマシーンを使用してモデル化しても、コントロールの
視覚外観の瞬時変化は突然に見え、美しさに欠けること
が多い。加えて、有限ステートマシーンによるグラフィ
カルユーザインターフェースコントロールのモデル化
は、本質的にコントロールを限られた数の休止状態(即
ち、半永久的状態)に限定する。
【0018】
【発明が解決しようとする課題】本発明の目的は、既存
の構成の1つ或いはそれ以上の欠点を実質的に克服す
る、又は少なくとも改善することである。
【0019】
【課題を解決するための手段】本発明の一態様によれ
ば、各々の状態がグラフィカルオブジェクトをレンダリ
ングする1つのモードに対応し、且つ各々の状態が前記
状態のうちの少なくとも2つの間における前記グラフィ
カルオブジェクトの遷移を表現する関連状態遷移を有す
る複数の状態を含むアニメートステートマシーンを有す
るグラフィカルオブジェクトをグラフィカルユーザイン
ターフェースでレンダリングする方法であって、 少な
くとも、前記グラフィカルオブジェクトを前記グラフィ
カルオブジェクトの第1の状態と第2の状態との間の1
つ或いはそれ以上の対応する時間に前記グラフィカルオ
ブジェクトに対して定義された属性値に従ってレンダリ
ングするために、前記第1の状態と前記第2の状態との
間で少なくとも1つの状態遷移を実行する工程を有し、
前記少なくとも1つの状態遷移の実行が完了する以前の
任意の時点で、前記グラフィカルユーザインターフェー
スに関連して起こる1つの事象に応答して、第3の状態
に従って前記グラフィカルオブジェクトをレンダリング
するために、前記少なくとも1つの状態遷移の実行を変
更することを特徴とする方法が提供される。
【0020】本発明の別の態様によれば、各々の状態が
グラフィカルオブジェクトをレンダリングする1つのモ
ードに対応し、且つ各々の状態が前記状態のうちの少な
くとも2つの間における前記グラフィカルオブジェクト
の遷移を表現する関連状態遷移を有する複数の状態を含
むアニメートステートマシーンを有するグラフィカルオ
ブジェクトをグラフィカルユーザインターフェースでレ
ンダリングする装置であって、前記グラフィカルオブジ
ェクトを前記グラフィカルオブジェクトの第1の状態と
第2の状態との間の1つ或いはそれ以上の対応する時間
に前記グラフィカルオブジェクトに対して定義された属
性値に従ってレンダリングするために、前記第1の状態
と前記第2の状態との間で少なくとも1つの状態遷移を
実行する実行手段を具備し、前記少なくとも1つの状態
遷移の実行が完了する以前の任意の時点で、前記グラフ
ィカルユーザインターフェースに関連して起こる1つの
事象に応答して、第3の状態に従って前記グラフィカル
オブジェクトをレンダリングするために、前記少なくと
も1つの状態遷移の実行を変更することを特徴とする装
置が提供される。
【0021】本発明の更に別の態様によれば、各々の状
態がグラフィカルオブジェクトをレンダリングする1つ
のモードに対応し、且つ各々の状態が前記状態のうちの
少なくとも2つの間における前記グラフィカルオブジェ
クトの遷移を表現する関連状態遷移を有する複数の状態
を含むアニメートステートマシーンを有するグラフィカ
ルオブジェクトをグラフィカルユーザインターフェース
でレンダリングする複数のコンピュータ実現プログラム
コードを含むプログラムであって、前記グラフィカルオ
ブジェクトを前記グラフィカルオブジェクトの第1の状
態と第2の状態との間の1つ或いはそれ以上の対応する
時間に、前記グラフィカルオブジェクトに対して定義さ
れた属性値に従ってレンダリングするために、前記第1
の状態と前記第2の状態との間で少なくとも1つの状態
遷移を実行するためのコードを具備し、前記少なくとも
1つの状態遷移の実行が完了する以前の任意の時点で前
記グラフィカルユーザインターフェースに関連して起こ
る1つの事象に応答して、第3の状態に従って前記グラ
フィカルオブジェクトをレンダリングするために、前記
少なくとも1つの状態遷移の実行を変更することを特徴
とするプログラムが提供される。
【0022】本発明の更に別の態様によれば、1つ或い
はそれ以上の関連する状態を有し、各々の状態が対応す
るグラフィカルオブジェクトをレンダリングする1つの
モードを表現している1つ或いはそれ以上のグラフィカ
ルオブジェクトを具備するグラフィカルユーザインター
フェースであって、前記グラフィカルオブジェクトのう
ちの少なくとも1つと関連する複数の状態の間の遷移が
アニメートステートマシーンにより実行されることを特
徴とするグラフィカルユーザインターフェースが提供さ
れる。
【0023】本発明の更に別の態様によれば、1つのグ
ラフィカルオブジェクトと関連し、各々の状態が前記グ
ラフィカルオブジェクトをレンダリングする1つのモー
ドに対応し、且つ各々の状態が前記状態のうちの少なく
とも2つの状態の間の前記グラフィカルオブジェクトの
遷移を表現する関連状態遷移を有する複数の状態を含む
アニメートステートマシーンにより現在実行されてい
る、第1の連続する複数の前記状態遷移を含む経路を更
新する方法であって、前記現在実行中の経路から不必要
な状態遷移を除去する工程と、前記グラフィカルオブジ
ェクトの第1の状態と第2の状態との間の新たな経路を
表現するために、第2の連続する複数の残留状態遷移を
選択する工程とを有し、前記新たな経路の少なくとも1
つの状態が前記現在実行中の経路の現在実行中の遷移の
第1の状態と等しい場合、前記現在実行中の経路を更新
するために利用される修正された新たな経路を生成する
ために、前記現在実行中の遷移を逆転し、かつ前記新た
な経路から前記新たな経路の第1の遷移を除去し、前記
新たな経路の少なくとも1つの状態が前記実行中の経路
の前記実行中の遷移の第1の状態と等しくない場合に
は、前記新たな経路が前記現在実行中の経路を更新する
ために利用されることを特徴とする方法が提供される。
【0024】本発明の更に別の態様によれば、1つのグ
ラフィカルオブジェクトと関連し、各々の状態が前記グ
ラフィカルオブジェクトをレンダリングする1つのモー
ドに対応し、且つ各々の状態が前記状態の間の前記グラ
フィカルオブジェクトの遷移を表現する関連状態遷移を
有する複数の状態を含むアニメートステートマシーンに
より現在実行されている、第1の連続する複数の前記状
態遷移を含む経路を更新する方法であって、前記現在実
行中の経路から不必要な状態遷移を除去する工程と、前
記グラフィカルオブジェクトの第1の状態と第2の状態
との間の新たな経路を表現するために、順次連続する複
数の残留状態遷移を選択する工程と、前記新たな経路を
利用して前記現在実行中の経路を更新する工程とを備え
ることを特徴とする方法が提供される。
【0025】本発明の更に別の態様によれば、ユーザ事
象に応答して1つのグラフィカルオブジェクトと関連し
ているアニメートステートマシーンを更新する方法であ
って、前記ユーザ事象の検出時に、前記アニメートステ
ートマシーンの現在実行中の経路から不必要な遷移を削
除する工程と、前記グラフィカルオブジェクトを現在状
態及び目標状態に従ってレンダリングするために要求さ
れる最小限の数の状態遷移を表現する新たな経路を形成
するために、順次続く複数の残留状態遷移を選択する工
程とを有し、前記新たな経路の第2の状態が前記現在実
行中の経路の現在実行中の遷移の第1の状態と等しい場
合、前記現在実行中の経路を更新するために利用される
修正された新たな経路を生成するために、前記現在実行
中の遷移を逆転し、且つ前記新たな経路から前記新たな
経路の第1の遷移を除去し、前記新たな経路の第2の状
態が前記現在実行中の経路の現在実行中の遷移の第1の
状態と等しくない場合には、前記現在実行中の経路を更
新するために前記新たな経路を利用することを特徴とす
る方法が提供される。
【0026】本発明の更に別の態様によれば、1つのグ
ラフィカルオブジェクトと関連し、各々の状態が前記グ
ラフィカルオブジェクトをレンダリングする1つのモー
ドに対応し、且つ各々の状態が前記状態のうちの少なく
とも2つの状態の間の前記グラフィカルオブジェクトの
遷移を表現する関連状態遷移を有する複数の状態を含む
アニメートステートマシーンにより現在実行されてい
る、第1の連続する複数の前記状態遷移を含む経路を更
新する装置であって、前記現在実行中の経路から不必要
な状態遷移を除去する除去手段と、前記グラフィカルオ
ブジェクトの第1の状態と第2の状態との間の新たな経
路を表現するために、第2の順次続く複数の残留状態遷
移を選択する選択手段とを具備し、前記新たな経路の少
なくとも1つの状態が前記現在実行中の経路の現在実行
中の遷移の第1の状態と等しい場合、前記現在実行中の
経路を更新するために利用される修正された新たな経路
を生成するために、前記現在実行中の遷移を逆転し、且
つ前記新たな経路から前記新たな経路の第1の遷移を除
去し、前記新たな経路の少なくとも1つの状態が前記実
行中の経路の前記実行中の遷移の第1の状態と等しくな
い場合には、前記現在実行中の経路を更新するために前
記新たな経路を利用することを特徴とする装置が提供さ
れる。
【0027】本発明の更に別の態様によれば、1つのグ
ラフィカルオブジェクトと関連し、各々の状態が前記グ
ラフィカルオブジェクトをレンダリングする1つのモー
ドに対応し、且つ各々の状態が前記状態の間の前記グラ
フィカルオブジェクトの遷移を表現する関連状態遷移を
有する複数の状態を含むアニメートステートマシーンに
より現在実行されている、第1の連続する複数の前記状
態遷移を含む経路を更新する装置であって、前記現在実
行中の経路から不必要な状態遷移を除去する除去手段
と、前記グラフィカルオブジェクトの第1の状態と第2
の状態との間の新たな経路を表現するために、順次続く
複数の残留状態遷移を選択する選択手段と、前記新たな
経路を利用して前記現在実行中の経路を更新する更新手
段とを具備することを特徴とする装置が提供される。
【0028】本発明の更に別の態様によれば、ユーザ事
象に応答して1つのグラフィカルオブジェクトと関連し
ているアニメートステートマシーンを更新する装置であ
って、前記ユーザ事象の検出時に、前記アニメートステ
ートマシーンの現在実行中の経路から不必要な遷移を削
除する削除手段と、前記グラフィカルオブジェクトを現
在状態及び目標状態に従ってレンダリングするために要
求される最小限の数の状態遷移を表現する新たな経路を
形成するために、順次連続する複数の残留状態遷移を選
択する選択手段とを具備し、前記新たな経路の第2の状
態が前記現在実行中の経路の現在実行中の遷移の第1の
状態と等しい場合、前記現在実行中の経路を更新するた
めに利用される修正された新たな経路を生成するため
に、前記現在実行中の遷移を逆転し、且つ前記新たな経
路から前記新たな経路の第1の遷移を除去し、前記新た
な経路の第2の状態が前記現在実行中の経路の現在実行
中の遷移の第1の状態と等しくない場合には、前記現在
実行中の経路を更新するために前記新たな経路を利用す
ることを特徴とする装置が提供される。
【0029】本発明の更に別の態様によれば、1つのグ
ラフィカルオブジェクトと関連し、各々の状態が前記グ
ラフィカルオブジェクトをレンダリングする1つのモー
ドに対応し、且つ各々の状態が前記状態のうちの少なく
とも2つの状態の間の前記グラフィカルオブジェクトの
遷移を表現する関連状態遷移を有する複数の状態を含む
アニメートステートマシーンにより現在実行されてい
る、第1の連続する複数の前記状態遷移を含む経路を更
新する装置の記憶媒体に格納されているプログラムであ
って、前記現在実行中の経路から不必要な状態遷移を除
去するためのコードと、前記グラフィカルオブジェクト
の第1の状態と第2の状態との間の新たな経路を表現す
るために、第2の順次続く複数の残留状態遷移を選択す
るためのコードを具備し、前記新たな経路の少なくとも
1つの状態が前記現在実行中の経路の現在実行中の遷移
の第1の状態と等しい場合、前記現在実行中の経路を更
新するために利用される修正された新たな経路を生成す
るために、前記現在実行中の遷移を逆転し、且つ前記新
たな経路から前記新たな経路の第1の遷移を除去し、前
記新たな経路の少なくとも1つの状態が前記実行中の経
路の前記実行中の遷移の第1の状態と等しくない場合に
は、前記現在実行中の経路を更新するために前記新たな
経路を利用することを特徴とするプログラムが提供され
る。
【0030】本発明の更に別の態様によれば、1つのグ
ラフィカルオブジェクトと関連し、且つ各々状態が前記
グラフィカルオブジェクトをレンダリングする1つのモ
ードに対応し、且つ各々の状態が前記状態の間の前記グ
ラフィカルオブジェクトの遷移を表現する関連状態遷移
を有する複数の状態を含むアニメートステートマシーン
により現在実行されている第1の連続する複数の前記状
態遷移を含む経路を更新する装置の記憶媒体に格納され
ているプログラムであって、前記現在実行中の経路から
不必要な状態遷移を除去するためのコードと、前記グラ
フィカルオブジェクトの第1の状態と第2の状態との間
の新たな経路を表現するために、順次続く複数の残留状
態遷移を選択するためのコードと、前記新たな経路を利
用して前記現在実行中の経路を更新するためのコードと
を具備することを特徴とするプログラムが提供される。
【0031】本発明の更に別の態様によれば、ユーザ事
象に応答して、1つのグラフィカルオブジェクトと関連
しているアニメートステートマシーンを更新するために
構成された、複数のコンピュータ実現プログラムコード
を含むプログラムであって、前記ユーザ事象の検出時
に、前記アニメートステートマシーンの現在実行中の経
路から不必要な遷移を削除するためのコードと、前記グ
ラフィカルオブジェクトを現在状態及び目標状態に従っ
てレンダリングするために要求される最小限の数の状態
遷移を表現する新たな経路を形成するために、順次連続
する複数の残留状態遷移を選択するためのコードとを具
備し、前記新たな経路の第2の状態が前記現在実行中の
経路の現在実行中の遷移の第1の状態と等しい場合、前
記現在実行中の経路を更新するために利用される修正さ
れた新たな経路を生成するために、前記現在実行中の遷
移を逆転し、且つ前記新たな経路から前記新たな経路の
第1の遷移を除去し、前記新たな経路の第2の状態が前
記現在実行中の経路の現在実行中の遷移の第1の状態と
等しくない場合には、前記現在実行中の経路を更新する
ために前記新たな経路を利用することを特徴とするプロ
グラムが提供される。
【0032】本発明の更に別の態様によれば、1つのグ
ラフィカルオブジェクトと関連し、且つ各々状態が前記
グラフィカルオブジェクトをレンダリングする1つのモ
ードに対応し、且つ各々の状態が前記状態のうちの少な
くとも2つの状態の間の前記グラフィカルオブジェクト
の遷移を表現する関連状態遷移を有する複数の状態を含
むアニメートステートマシーンにより現在実行されてい
る、第1の連続する複数の前記状態遷移を含む経路を更
新する方法であって、前記アニメートステートマシーン
の前記現在実行中の経路から先に実行された状態遷移を
除去する工程と、前記グラフィカルオブジェクトの現在
状態と目標状態との間の、少なくとも1つの中間状態を
含む新たな経路を表現するために、第2の連続する複数
の残留状態遷移を選択する工程とを有し、前記新たな経
路の第2の状態が前記現在実行中の経路の現在実行中の
遷移の第1の状態と等しい場合、前記現在実行中の経路
を更新するために利用される修正された新たな経路を生
成するために、前記現在実行中の遷移を逆転し、且つ前
記新たな経路から前記新たな経路の第1の遷移を除去
し、前記新たな経路の第2の状態が前記現在実行中の経
路の現在実行中の遷移の第1の状態と等しくない場合に
は、前記現在実行中の経路を更新するために前記新たな
経路を利用することを特徴とする方法が提供される。
【0033】本発明の更に別の態様によれば、1つのグ
ラフィカルオブジェクトと関連し、且つ各々状態が前記
グラフィカルオブジェクトをレンダリングする1つのモ
ードに対応し、且つ各々の状態が前記状態のうちの少な
くとも2つの状態の間の前記グラフィカルオブジェクト
の遷移を表現する関連状態遷移を有する複数の状態を含
むアニメートステートマシーンにより現在実行されてい
る、第1の連続する複数の前記状態遷移を含む経路を更
新する装置であって、前記アニメートステートマシーン
の前記現在実行中の経路から先に実行された状態遷移を
除去する除去手段と、前記グラフィカルオブジェクトの
現在状態と目標状態との間の、少なくとも1つの中間状
態を含む新たな経路を表現するために、第2の順次続く
複数の残留状態遷移を選択する選択手段とを具備し、前
記新たな経路の第2の状態が前記現在実行中の経路の現
在実行中の遷移の第1の状態と等しい場合、前記現在実
行中の経路を更新するために利用される修正された新た
な経路を生成するために、前記現在実行中の遷移を逆転
し、且つ前記新たな経路から前記新たな経路の第1の遷
移を除去し、前記新たな経路の第2の状態が前記現在実
行中の経路の現在実行中の遷移の第1の状態と等しくな
い場合には、前記現在実行中の経路を更新するために前
記新たな経路を利用することを特徴とする装置が提供さ
れる。
【0034】本発明の更に別の態様によれば、1つのグ
ラフィカルオブジェクトと関連し、且つ各々状態が前記
グラフィカルオブジェクトをレンダリングする1つのモ
ードに対応し、且つ各々の状態が前記状態のうちの少な
くとも2つの状態の間の前記グラフィカルオブジェクト
の遷移を表現する関連状態遷移を有する複数の状態を含
むアニメートステートマシーンにより現在実行されてい
る、第1の連続する複数の前記状態遷移を含む経路を更
新する複数のコンピュータ実現プログラムコードを含む
プログラムであって、前記アニメートステートマシーン
の前記現在実行中の経路から先に実行された状態遷移を
除去するためのコードと、前記グラフィカルオブジェク
トの現在状態と目標状態との間の、少なくとも1つの中
間状態を含む新たな経路を表現するために、第2の順次
続く複数の残留状態遷移を選択するためのコードとを具
備し、前記新たな経路の第2の状態が前記現在実行中の
経路の現在実行中の遷移の第1の状態と等しい場合、前
記現在実行中の経路を更新するために利用される修正さ
れた新たな経路を生成するために、前記現在実行中の遷
移を逆転し、且つ前記新たな経路から前記新たな経路の
第1の遷移を除去し、前記新たな経路の第2の状態が前
記現在実行中の経路の現在実行中の遷移の第1の状態と
等しくない場合には、前記現在実行中の経路を更新する
ために前記新たな経路を利用することを特徴とするプロ
グラムが提供される。
【0035】本発明のその他の面も開示される。
【0036】
【発明の実施の形態】本明細書において、添付の図面の
いずれか1つ或いはそれ以上でステップ及び/又は特徴
を参照する場合、同じ図中符号により指示されるステッ
プ及び/又は特徴は、説明の都合上、特に指示のない限
り同じ機能又は動作を有する。
【0037】以下の説明のいくつかの部分は、コンピュ
ータメモリ内部におけるデータに対する演算動作のアル
ゴリズム及び記号表現によって明示して又は暗黙に提示
される。それらのアルゴリズムによる記述及び表現は、
データ処理技術の分野の当業者がその作業の内容を他の
当業者に最も効果的に伝達するために使用する手段であ
る。本明細書では、また、一般的にも、アルゴリズムは
ある所望の結果に至る首尾一貫した一連のステップであ
ると考えられている。これらステップは、物理的量の物
理的操作を要求するステップである。通常、それらの量
は格納、転送、組み合わせ、比較及びその他の方法によ
る操作が可能である電気的信号又は磁気信号の形態をと
るが、それは不可欠ではない。場合によっては、主に一
般に広く使用されている用語であるという理由により、
それらの信号をビット、値、要素、記号、文字、項、数
などと呼ぶと好都合であることがわかっている。
【0038】しかし、上記の用語及びそれに類似する用
語は適切な物理的量と関連付けられるべきであり、単に
それらの量に便宜上付されたラベルであるに過ぎないこ
とに留意すべきである。以下の説明から明白である通
り、特に指示のない限り、この明細書を通して「走査す
る」、「計算する」、「判定する」、「置き換える」、
「生成する」、「初期設定する」、「出力する」などの
用語を利用する記述は、コンピュータシステムのレジス
タ及びメモリの内部で物理的(電子的)量として表現さ
れるデータを操作して、同様にコンピュータシステムの
メモリ又はレジスタ、あるいはその他の情報記憶装置、
情報送信装置又は情報表示装置の内部で物理的量として
表現される別のデータに変換するコンピュータシステム
又は類似の電子装置のアクション及びプロセスを指すこ
とが理解されるであろう。
【0039】以下、図1から図24を参照して、グラフ
ィカルユーザインターフェースを更新するいくつかの方
法を説明する。以下に説明する方法は、グラフィカルユ
ーザインターフェースの開発中に設計者とプログラマの
2つの役割を分離させることができる。また、以下に説
明する方法は、グラフィカルユーザインターフェースの
外観及び機能に対して独立した変更を実施することがで
きる。
【0040】ここで説明する方法は、図6に示すような
汎用コンピュータシステム600を使用して実施される
のが好ましい。その場合、以下に説明する方法のプロセ
スはコンピュータシステム600内部のホストグラフィ
カルユーザインターフェースシステムと関連して実行さ
れるアプリケーションプログラムなどのソフトウェアを
使用して実現できるであろう。特に、図1から図5及び
図14から図24を参照して以下に説明する方法のステ
ップは、コンピュータにより実行されるソフトウェアの
命令により実行される。それらの命令は、1つ或いはそ
れ以上の特定のタスクを実行するために1つずつ設けら
れた1つ或いはそれ以上のモジュールとして形成されて
いても良い。また、ソフトウェアは2つの別個の部分に
分割されていても良く、その第1の部分はここで説明す
る方法を実行し、第2の部分は第1の部分とユーザとの
間のホストグラフィカルユーザインターフェースを管理
する。このソフトウェアは、例えば、以下に説明する記
憶装置を含めて、コンピュータにより読み取り可能な媒
体に格納されていても良い。ソフトウェアはコンピュー
タにより読み取り可能な媒体からコンピュータにロード
された後、コンピュータにより実行される。そのような
ソフトウェア又はコンピュータプログラムが記録されて
いるコンピュータ読み取り可能な媒体は、コンピュータ
プログラム製品である。このコンピュータプログラム製
品をコンピュータにおいて使用することにより、ここで
説明する方法を実行するのに有益な装置が実現されるの
が好ましい。
【0041】コンピュータシステム600はコンピュー
タモジュール601と、キーボード602及びマウス6
03などの入力装置と、プリンタ615及び表示装置6
14を含む出力装置とを具備する。表示装置614はホ
ストグラフィカルユーザインターフェースの画面(即
ち、1つ或いはそれ以上の目に見えるグラフィカルオブ
ジェクトコンポーネント又はテキスト)を表示するため
に使用できる。変復調器(モデム)トランシーバ装置6
16はコンピュータモジュール601により、例えば、
電話回線621又はその他の機能媒体を介して接続可能
である通信ネットワーク620との間で通信を実行する
ために使用される。このモデム616はインターネット
や、ローカルエリアネットワーク(LAN)又はワイド
エリアネットワーク(WAN)などの他のネットワーク
システムへのアクセスを獲得するために使用できる。
【0042】コンピュータモジュール601は、通常、
少なくとも1つのプロセッサユニット605と、例え
ば、半導体ランダムアクセスメモリ(RAM)及び読み
取り専用メモリ(ROM)から形成されるメモリユニッ
ト606と、ビデオインターフェース607を含む入出
力(I/O)インターフェースと、キーボード602及
びマウス603、更にはオプションとしてジョイスティ
ック(図示せず)に対応するI/Oインターフェース6
13と、モデム616に対応するインターフェース60
8とを含む。記憶装置609が設けられており、これは
通常はハードディスクドライブ610と、フロッピー
(登録商標)ディスクドライブ611とを含む。磁気テ
ープドライブ(図示せず)が使用されても良い。不揮発
性データ源として、通常、CD−ROMドライブ612
が設けられている。コンピュータモジュール601の構
成要素605から613は、通常、相互接続バス604
を介して、当業者には知られているコンピュータシステ
ム600の従来通りの動作モードが得られるように通信
する。ここで説明する構成を実施できるコンピュータの
例はIBM−PC及びそのコンパチブル、サン スパー
クステーション(Sun Sparcstation)又はそこから派生
した類似のコンピュータシステムなどである。
【0043】通常、アプリケーションプログラムはハー
ドディスクドライブ610に常駐しており、その実行時
にプロセッサ605により読み取られ、制御される。プ
ログラム及びネットワーク620から取り出されるデー
タの中間格納は、可能であればハードディスクドライブ
610と協調して、半導体メモリ606を使用して実現
される。場合によっては、アプリケーションプログラム
はCD−ROM又はフロッピー(登録商標)ディスクに
符号化した形態でユーザに提供されても良く、その場
合、プログラムは対応するドライブ612又は611に
より読み取られる。或いは、ユーザがモデム装置616
を介してネットワーク620からプログラムを読み取っ
ても良い。更に、他のコンピュータ読み取り可能な媒体
からコンピュータシステム600にソフトウェアをロー
ドすることも可能である。ここで使用する用語「コンピ
ュータ読み取り可能な媒体」は、命令及び/又はデータ
を実行し且つ/又は処理するために命令及び/又はデー
タをコンピュータシステム600に提供することに関与
するあらゆる記憶媒体又は送信媒体を表す。この記憶媒
体の例は、装置がコンピュータモジュール601の内部
にあるか又は外部にあるかに関わらず、フロッピー(登
録商標)ディスク、磁気テープ、CD−ROM、ハード
ディスクドライブ、ROM又は集積回路、光磁気ディス
ク、或いはPCMCIAカードなどのコンピュータ読み
取り可能なカードなどである。また送信媒体の例は、無
線送信チャネル又は赤外線送信チャネル、並びに別のコ
ンピュータ又はネットワーク化装置に至るネットワーク
接続、Eメール送信及びウェブサイトに記録された情報
を含めたインターネット又はイントラネットなどであ
る。
【0044】グラフィカルユーザインターフェースにお
けるコントロールは、多くの場合、いくつかの個別の状
態により表現できる。例えば、押しボタンの外観は「u
p」状態、「roll over」状態及び「down」状態により表
現できる。更に、メニューやリストボックスなどのより
複雑なコントロールは、いくつかの単純なコントロール
を組み合わせることにより表現できる。先に説明した通
り、有限ステートマシーンはある1つの時点で多数の内
部状態のうちのいずれか1つの状態をとることができ、
状態は、入力データストリングの各記号が読み取られる
たびに変化することが可能であり、その新たな状態は読
み取られた記号と、ソース状態とによって決まる。
【0045】これに対し、ここで説明する方法は「Anim
ated State Machine(アニメートステートマシーン)」
の一部として実現可能である。アニメートステートマシ
ーンは、一体となってアニメートステートマシーンを実
現するオブジェクトクラスの集合体である。それらのオ
ブジェクトクラスは、各々が1つのコントロールの視覚
外観に対応する複数の状態オブジェクト(state object
s)の集合体である。状態オブジェクトは、状態オブジェ
クトクラスに属し、各状態オブジェクトは特定の状態オ
ブジェクトを関連するオブジェクト参照、属性識別子及
び値へマッピングするために使用される関連マッピング
テーブルを有する。アニメートステートマシーン及び状
態オブジェクトは、それぞれ、以下に詳細に説明するい
くつかの関連手続きを有する。
【0046】ここで説明するアニメートステートマシー
ンは、アニメートステートマシーン内部における異なる
状態の間の経路を表現する遷移オブジェクトを含む遷移
クラスを更に具備する。遷移オブジェクトは、グラフィ
カルオブジェクトが「状態間(between states)」にある
たびに、アニメートステートマシーンに対応するグラフ
ィカルオブジェクトの視覚外観を判定するために使用さ
れる。即ち、遷移オブジェクトは、2つの状態の間で変
化している間のあらゆる時点におけるグラフィカルオブ
ジェクトの外観を指定する。遷移オブジェクトは、以下
に更に詳細に説明するいくつかの関連手続きを有する。
【0047】各遷移オブジェクトは、トラックオブジェ
クトクラスに属するトラックオブジェクト(track objec
ts)の集合を具備する。トラックオブジェクトは、異な
る状態の間のグラフィカルオブジェクトの遷移のファセ
ット(即ち、部分)を表現する。トラックオブジェクト
は、グラフィカルオブジェクトのいくつかの属性に与え
られた値を記述する。属性の値は、遷移中の対応する複
数の時点で指定され、一般に、全て同様に滑らかに又は
急激に変化する。トラックオブジェクトクラスは抽象ク
ラスであり、そのインスタンスはトラックオブジェクト
の変化時間を表現するキーオブジェクトと呼ばれるオブ
ジェクトのリストを含む。トラックオブジェクトは以下
に詳細に説明するいくつかの手続きを含む。
【0048】キーオブジェクトはキーオブジェクトクラ
スに属し、先に説明した通り、キーオブジェクトはトラ
ックオブジェクトの変化時間を表現する。キーオブジェ
クトは、状態遷移の総持続時間に沿って変化が起こる時
間を使用して変化時間を表現する。また、キーオブジェ
クトは関連する対を成すグラフィカルオブジェクト識別
子と、関連グラフィカルオブジェクト属性値とを含む関
連トラック定義オブジェクトも参照する。キーオブジェ
クトは以下に詳細に説明するいくつかの手続きを更に含
む。
【0049】トラック定義オブジェクトはトラック定義
オブジェクトクラスに属し、先に説明した通り、状態遷
移の一部を表現する、関連する対を成すグラフィカルオ
ブジェクト識別子及び関連グラフィカルオブジェクト属
性値を含む。トラック定義オブジェクトは、以下に詳細
に説明するいくつかの手続きを更に含む。
【0050】アニメートステートマシーンの2つの状態
(例えば、状態Aと状態B)の間の遷移は、先に説明し
たような遷移オブジェクトにより表現される。この遷移
オブジェクトは、アニメーションの視覚外観を定義する
データを含み、従って、状態Aにあるコントロールの視
覚外観から状態Bにあるコントロールの視覚外観へのア
ニメーションを表現する。
【0051】ここで説明する方法においては、アニメー
トステートマシーンは設計者により形成され、アニメー
トステートマシーンの状態の1つは初期状態として定義
される。コントロールの視覚外観は、ソース状態にな
る、初期状態で定義された外観であるように設定され
る。ユーザがコントロールと対話をするとき、一般に、
コントロールの視覚外観に変化があり、新たな視覚外観
はアニメートステートマシーンの状態の1つにより表現
される。従って、ソース状態から所望の目標状態への状
態変化を要求するようにコントロールを構成することが
できる。
【0052】ここで説明するアニメートステートマシー
ンは、ソース状態から所望の目標状態へのコントロール
の視覚外観の変化を表現する遷移オブジェクトの順序付
き集合体を判定するために、最短経路アルゴリズムを利
用する。この遷移オブジェクトの順序付き集合体を、以
下、アニメートステートマシーンの「現在経路(current
route)」と呼び、これはソース状態と目標状態との間
の最短経路(即ち、最小限の数の状態遷移)を表現す
る。アニメートステートマシーンに、現在フレームにつ
いてレンダリングされる必要がある1つ或いはそれ以上
のグラフィカルオブジェクト又はその一部を判定させる
ために、アニメートステートマシーンがアニメートして
いる間にこの最短経路を利用する。遷移が完了すると、
完了した遷移をアニメートステートマシーンの現在経路
から除去する。現在経路が空である場合、アニメートス
テートマシーンは所望の目標状態に到達したと考えら
れ、そこで目標状態はソース状態になる。コントロール
のアニメートステートマシーンが現時点で1つの経路を
アニメートしている途中であるときに、ユーザがそのコ
ントロールと対話しようと試みると、新たな所望の目標
状態を反映するために、アニメートステートマシーンの
目標状態を変更するように現在経路が修正される。この
目標状態の変更は、抹消されるべき既存の現在経路の一
部又は全体を含むことができる。
【0053】グラフィカルユーザインターフェースの画
面を形成するグラフィカルオブジェクトの組み合わせ
は、当該技術分野で知られているように、表現ツリーに
より表現される。表現ツリーの内部ノードは複合演算子
(composite operators)を定義し、表現ツリーのリーフ
ノードは、テキスト、経路、画像及び平面充填(plane f
ills)などのグラフィカルプリミティブ(graphical prim
itives)を定義する。表現ツリー中のノードは、画面を
形成しているグラフィカルオブジェクトの視覚外観に影
響を及ぼす属性を含む。属性のいくつかの例を挙げる
と、演算子、色、不透明度及びストローク幅などがあ
る。コントロールの視覚外観の変更は、いずれも、その
コントロールを含むグラフィカルユーザインターフェー
スの画面を表現している表現ツリーの1つ或いはそれ以
上のノードと関連する属性に対する1つ或いはそれ以上
の変更により実現できる。それらの属性の変更は、遷移
オブジェクト内部に格納されているアニメーションデー
タ中に符号化することができる。特定のコントロールと
関連するいずれか2つの状態の間でアニメートするのに
要する期間は、遷移持続時間により定義される。
【0054】遷移オブジェクトは、先に説明したよう
に、いくつかの関連トラックオブジェクトを更に含むこ
とができ、各トラックオブジェクトは、コントロールを
含むグラフィカルユーザインターフェースの画面を表現
している表現ツリーの1つ或いはそれ以上の属性の値を
記述する。特定のトラックオブジェクトが修正すること
ができる属性は、先に説明したように、そのトラックオ
ブジェクトと関連するトラック定義オブジェクトにより
定義される。トラック定義オブジェクトは、オブジェク
ト−属性対のアレイを含み、多数のトラックオブジェク
トが同一のトラック定義オブジェクトを参照することも
起こりうる。
【0055】ここで説明するアニメートステートマシー
ンは、インターフェースコントロールを含むグラフィカ
ルユーザインターフェースの画面を表現している表現ツ
リーの属性の値により、そのコントロールの視覚外観を
完全に定義できるという事実を活用している。更に、所
定のコントロールについて、一般に、可能なオブジェク
ト属性のうちのいくつかの属性部分集合は決して修正さ
れない。従って、コントロールの視覚外観を定義するた
めに、ある特定の時点で修正される属性の値を格納して
おくことが可能である。アニメートステートマシーン
は、トラック定義クラス(即ち、ASM_TrackDefクラス)
のトラック定義オブジェクトを使用してステートマシー
ンアニメーションの進行中に修正されるオブジェクトと
関連する属性を格納する。トラック定義クラスの各トラ
ック定義オブジェクトは、修正すべき属性を定義するオ
ブジェクト−属性対のアレイを含む。1つのトラック定
義オブジェクト内部でリストアップされる全ての属性
は、同じ型(即ち、複合演算子、色、不透明度、ストロ
ーク幅又は子ノードなど)でなければならない。しか
し、1つのトラック定義オブジェクトは共に修正できる
いくつかの関連属性を含むことができる。例えば、1つ
の経路ノードの色とアルファチャネル(alpha channel)
を1つのトラック定義オブジェクトに包含させることが
可能である。
【0056】特定のトラック定義オブジェクトは、その
トラック定義オブジェクトにより指定される属性につい
てデータ値を実際には格納しない。属性データは、アニ
メートステートマシーンキーオブジェクト(即ち、ASM_
Key)ベースクラスから取り出されるオブジェクトクラ
スの中に格納されている。更に、アニメートステートマ
シーンキーオブジェクトベースクラスから少なくとも2
つのオブジェクトクラスを取り出すことができる。第1
に、浮動小数点データを格納するためにアニメートステ
ートマシーンキーオブジェクトダブル(即ち、ASM_KeyD
bl)クラスを取り出すことができる。第2に、例えば、
整数などの任意のデータ及びグラフィカルオブジェクト
(即ち、GOBJ_Objects)を格納するために、アニメート
ステートマシーンキーオブジェクトディスクリート(即
ち、ASM_KeyDiscrete)クラスを取り出すことができ
る。各キーオブジェクトは、キーオブジェクトがオブジ
ェクト−属性対自体を格納する必要をなくすように、デ
ータがどの属性に対応するかを定義するトラック定義オ
ブジェクトを参照する。
【0057】ここで説明する方法において、特定のコン
トロール(即ち、グラフィカルユーザインターフェース
の画面上のボタンを表現する1つ或いはそれ以上のグラ
フィカルオブジェクト)について状態の変化を要求する
アクションが実行されるたびに、そのコントロールを表
現しているアニメートステートマシーンを介して現在経
路が計算される。この現在経路は、目標状態に到達する
ために経過しなければならない1つ或いはそれ以上の状
態のリストを含む。
【0058】図1は、特定のコントロールについてソー
ス状態と目標状態との間で現在経路(即ち、最小限の数
の状態遷移)を判定するメソッド100を示すフローチ
ャートである。このメソッド100は、コンピュータシ
ステム600のハードディスクドライブ610に常駐さ
れており、その実行時にプロセッサ605により読み取
られ、制御されるのが好ましい。このメソッド100
は、引数Vにより表現される集合がプロセッサ605に
より空集合として初期設定されるステップ105で開始
される。ソース状態と関連する遷移のテーブルを調べる
(即ち、以下に示すステップ137)間に1つの遷移を
経過したことを指示するために、コントロールと関連す
るアニメートステートマシーンの経過済み遷移を表現す
る要素が、このVの集合に追加される。次のステップ1
07では、プロセッサ605はソース状態と目標状態を
比較して、各々の状態が同じであるか否かを判定する。
ステップ107においてソース状態と目標状態が同じで
なければ、メソッド100は次のステップ110へ進
む。同じである場合には、メソッド100はステップ1
08へ進み、比較の結果を、メモリ606に格納される
べき空アレイにセットして、メソッド100は終結す
る。
【0059】ステップ110では、プロセッサ605は
引数Pをソース状態を含むリストであるように設定す
る。次にステップ115に進み、引数Aを、メモリ60
6に格納される空テーブルであるように設定する。次に
ステップ120で、引数Aにより表現されるテーブルを
修正して、ソース状態を目標状態へマッピングする。次
にステップ125で、引数Bを空テーブルに設定する。
次にステップ127で、引数Aで表現されるテーブルを
プロセッサ605により調べる(traverse)。次のステッ
プ130で、テーブルAがステップ127で調べなかっ
たマッピング(即ち、ソース状態から目標状態へ)を含
む場合、メソッド100はステップ135へ進む。そう
でない場合には、メソッド100はステップ175へ進
み、引数Aにより表現されるテーブルをクリアする。次
にステップ180で、引数Aにより表現されるテーブル
をBの値に設定する。次にステップ185で、Aにより
表現されるテーブルが空でなければ、メソッド100は
ステップ125に戻る。空である場合には、メソッド1
00はステップ190へ進み、現在経路をメモリ606
の空アレイに設定する。
【0060】ステップ135で、ソース状態が経過済み
集合Vの1要素である場合、メソッド100はステップ
130に戻る。そうでない場合には、メソッド100は
ステップ137へ進み、メモリ606に格納されてい
る、ソース状態と関連する遷移のテーブルを調べる。次
のステップ140で、ソース状態と関連する遷移テーブ
ルがステップ137で調べなかったマッピング(即ち、
ソース状態から目標状態へ)を含む場合、メソッド10
0はステップ145へ進む。含まない場合には、メソッ
ド100はステップ170へ進み、ソース状態を表現す
る余剰要素を経過済み集合Vに追加し、メソッド100
はステップ130に戻る。
【0061】ステップ145では、プロセッサ605に
より引数Qを目標状態を付随させた経路の値に設定す
る。次にステップ150で、遷移テーブルに含まれる目
標状態がコントロールの目標状態と等しくない場合、メ
ソッド100はステップ155へ進む。ステップ155
で、引数Bにより表現されるテーブルを、目標状態を引
数Qの値にマッピングするように修正する。ステップ1
50で目標状態が目標状態と等しい場合には、メソッド
100はステップ160へ進み、引数V,A及びBをク
リアする。次のステップ165で、プロセッサ605は
現在経路を、引数Qの値に設定する。
【0062】図2は、グラフィカルユーザインターフェ
ースのコントロールと関連するアニメートステートマシ
ーンについて新たな目標状態に至る経路を判定するメソ
ッド200を示すフローチャートである。メソッド20
0は、新たな目標状態に到達するために要求される遷移
の最小数に基づいて、目標状態に至る経路を判定する。
メソッド200はコンピュータシステム600のハード
ディスクドライブ610に常駐されており、その実行時
にプロセッサ605により読み取られ、制御されるのが
好ましい。メソッド200は、新たな目標状態に至る経
路が首尾良く判定されたか否かを示す、メモリ606に
格納されるべき結果フラグ(即ち、真)とエラーが起こ
ったか否かを指示する結果フラグ(即ち、偽)とを戻
す。メソッド200は第1のステップ205から開始さ
れ、ここではプロセッサ605は、現在経路から全ての
完了済み遷移を削除する。次にステップ206では、ポ
インタriを現在経路中の未完了遷移を伴う第1の遷移
オブジェクトを指示するようにセットする。次にステッ
プ207で、ラベル「update_needed」により表現され
るフラグを真に設定する。次にステップ208で、目標
状態がアニメートステートマシーンの状態の1つであれ
ば、メソッド200はステップ209へ進む。そうでな
い場合には、メソッド200はステップ276へ進み、
結果変数を、アニメートステートマシーンの次の目標状
態に至る経路は判定不可能であることを指示する「偽」
に設定して、メソッド200を終結する。
【0063】ステップ209で、riがナル(null)であ
れば、メソッド200はステップ210へ進み、ソース
状態及び目標状態に関わる現在経路をメソッド100に
従って計算し、その計算した経路に、ラベル「path」を
割り当てる。そうでない場合には、メソッド200はス
テップ219へ進む。次にステップ272で、「path」
により表現される計算上の経路がナルであれば、メソッ
ド200はステップ276へ進む。そうでない場合に
は、メソッド200はステップ211へ進み、そこで
「path」が空であれば、メソッド200はステップ21
6へ進む。ステップ216では「path」の割り当てを解
除し(即ち、削除し)、且つ後の使用に備えてラベル
「path」と関連するメモリを解放する。また「path」が
空でない場合には、メソッド200はステップ212へ
進む。次のステップ217で、「update_needed」フラ
グを「偽」に設定する。次にステップ218に進み、結
果フラグを「真」に設定し、メソッド200を終結す
る。
【0064】ステップ212で、ポインタripを現在経
路に設定して、メモリ606に格納する。次のステップ
214で、ラベル「start_time」を現在時間と等しくな
るように設定する。次のステップ215で、ラベルOに
より表現されるポインタを状態を指示するためのポイン
タのアレイを指示するように設定し、メソッド200は
次のステップ247へ続く。
【0065】ステップ219で、第1の遷移オブジェク
トに割り当てられている開始時間を現在時間から減算す
る。この現在時間は、コンピュータシステム600と関
連するクロックから判定される。次にステップ220
で、現在経路と関連する第1の遷移オブジェクトが
「正」であれば、メソッド200はステップ221へ進
み、そこでラベル「cur」及び「next」を、現在経路の
ソース状態と目標状態とにそれぞれ設定する。「正」で
ない場合には、メソッド200はステップ222へ進
み、プロセッサ605により「cur」と「next」をそれ
ぞれ現在経路の目標状態とソース状態に設定する。次に
ステップ223で、「next」により表現される状態及び
目標状態に関わる現在経路をメソッド100に従って計
算し、計算された経路にラベル「path」を割り当てる。
【0066】次のステップ273で、「path」により表
現される計算上の経路がナルであれば、メソッド200
はステップ276へ進む。そうでない場合には、メソッ
ド200はステップ224へ進み、そこで「path」が空
であれば、メソッド200はステップ225へ進み、ポ
インタriを現在経路を指示するように設定する。空で
ない場合には、メソッド200はステップ227へ進
む。次のステップ226で、ラベルOにより表現される
ポインタを状態を指示するポインタのアレイを指示する
ように設定し、メソッド200は次のステップ247へ
続く。
【0067】ステップ227で、「path」により表現さ
れる経路の第2の状態がラベル「cur」により表現され
る状態と等しい場合、メソッド200はステップ228
へ進む。等しくない場合には、メソッド200はステッ
プ236へ進む。ステップ228で、現在経路と関連す
る遷移が「正」であれば、メソッド200はステップ2
29へ進み、現在経路の開始時間を現在経路の遷移持続
時間に設定する。「正」でない場合には、メソッド20
0はステップ230へ進み、プロセッサ605により現
在経路の開始時間を「0」に設定する。次にステップ2
31で、プロセッサ605により現在経路と関連する係
数を無効(negate)にする(即ち、それ自体の否定で、
「−1」を乗算した値に等しくなるように設定する)。
次にステップ232で、プロセッサ605により現在経
路に関して、ラベル「prev_end_time」により表現され
る変数を次のように計算する。
【0068】prev_end_time =(2×時間(time)−リン
クオフセット) この式中、リンクオフセットは、現在経路の実行の開始
に対して現在遷移が実行を開始する時間を表す。次にス
テップ233で、プロセッサ605により現在経路のリ
ンクオフセットを次のように計算する。
【0069】リンクオフセット=(prev_end_time −
現在経路の遷移持続時間) 次にステップ234で、メモリ605に格納されている
ポインタriを現在経路を指示するように設定する。次
にステップ235で、ラベルOにより表現されるポイン
タを、第1の状態の後の状態を指示するポインタのアレ
イを指示するように設定する。
【0070】ステップ227で、「path」により表現さ
れる経路の第2の状態がラベル「cur」により表わされ
る経路と等しくない場合、メソッド200はステップ2
36へ進む。ステップ236で、ラベルOにより表現さ
れるポインタをメモリ605に格納されている状態を指
示するポインタのアレイを指示するように設定する。次
にステップ237で、ポインタriを現在経路を指示す
るように設定する。次にステップ238で、ポインタtm
pを、riの次の遷移オブジェクトを指示するように設定
し、且つメモリ606に格納する。次にステップ239
で、ポインタOが「path」の最終状態を指示していれ
ば、メソッド200はステップ246へ進む。ステップ
246で、第1の遷移オブジェクトの終了時間を表現す
る変数「prev_end」を次のように計算する。
【0071】prev_end = riのリンクオフセット +
riの遷移持続時間 ステップ239で、ポインタOが「path」の最終状態を
指示していない場合には、メソッド200はステップ2
40へ進む。ステップ240で、ポインタ「tmp」がナ
ル(null)であれば、メソッド200はステップ246へ
進む。そうでない場合には、メソッド200はステップ
241へ進み、プロセッサ605により引数trを、ポ
インタ「tmp」により表現される経路の遷移と等しくな
るように設定する。次のステップ242で、「tmp」と
関連する係数が「正」であるとプロセッサ605が判定
すれば、メソッド200はステップ243へ進み、「ne
xt」を「tmp」の目標状態と等しくなるように設定す
る。そうでない場合には、メソッド200へステップ2
44へ進み、「next」を「tmp」のソース状態と等しく
なるように設定する。
【0072】次のステップ245で、ポインタOである
と指示される状態を1つ越えた状態(即ち、O(1))が
「next」により指示される状態と同じであれば、メソッ
ド200はステップ274へ進む。そうでない場合に
は、メソッド200はステップ246へ進む。ステップ
274で、ポインタOを「path」中の次の状態を指示す
るように増分する。次にステップ275で、riを次の
遷移オブジェクトと等しくなるように設定し、メソッド
200はステップ239に戻る。
【0073】ステップ247で、プロセッサ605はr
iに続く全ての遷移オブジェクトを削除する。次にステ
ップ248で、riの次の遷移オブジェクトをナルに等
しくなるように設定する。次のステップ249で、ポイ
ンタOがメモリ606に格納されているアレイ中の、現
在経路の最終状態を表現する最終エントリを指示すれ
ば、メソッド200はステップ269へ進む。そうでな
い場合には、メソッドはステップ250へ進む。ステッ
プ269で、「path」の割り当てを解除する。次にステ
ップ270で、ステートマシーンの目標状態を、ステー
ト(state)により表現される状態と等しくなるように設
定する。次にステップ271で、メモリ606に格納さ
れている結果フラグを「真」に設定し、メソッド200
は終結する。
【0074】ステップ250で、「cur」をポインタO
が現在指示している経路中の状態に設定する。次にステ
ップ251で、「next」を、ポインタOが指示している
状態を越える「path」中の状態に設定する。次のステッ
プ252で、trを「cur」から「next」への状態遷移に
設定する。次のステップ253でtrがナルであるとプ
ロセッサ605が判定すれば、メソッド200はステッ
プ266へ進む。そうでない場合には、メソッド200
はステップ254へ進み、メモリ605に格納されてい
るriを新たに割り当てられた遷移オブジェクトと等し
くなるように設定する。次のステップ255でriがナ
ルであれば、メソッド200はステップ266へ進む。
そうでない場合には、メソッド200へステップ256
へ進み、riにより指示される経路の遷移をtrと等しく
なるように設定する。次のステップ256で、「cur」
が引数trにより表現されるソース状態と等しければ、
メソッド200はステップ258へ進む。そうでない場
合には、メソッド200はステップ260へ進む。ステ
ップ258で、riと関連する係数を「1」と等しくな
るように設定する。次のステップ259で、riの開始
時間を「0」と等しくなるように設定する。
【0075】ステップ260では、プロセッサ605は
riと関連する係数を「−1」と等しくなるように設定
する。次にステップ261で、riの開始時間をtrによ
り表現される遷移と等しくなるように設定する。次のス
テップ262で、riのリンクオフセットを、「prev_en
d」と等しくなるように設定する。次にステップ263
で、trにより表現される遷移を「prev_end」と等しく
なるように設定する。次にステップ264で、riによ
り表現される遷移オブジェクトを現在経路に追加する。
次のステップ265で、riと関連する遷移オブジェク
トフィールドをナルと等しくなるように設定する。
【0076】ステップ266で、「path」の割り当てを
解除する。次にステップ267で、プロセッサ605
は、現在経路の全ての遷移オブジェクトを削除する。次
にステップ268で、メモリに格納されている結果フラ
グを「偽」に設定し、メソッド200は終結する。
【0077】グラフィカルオブジェクトの状態遷移が開
始されたのと同じ状態で終わったが、それらの間でグラ
フィカルオブジェクトの外観が変わっているということ
が時折起こる。そのような遷移をループと呼ぶ。図3
は、コントロールと関連するアニメートステートマシー
ンの現在経路の終わりに新たな遷移オブジェクトを追加
するメソッド300を示すフローチャートである。メソ
ッド300はコンピュータシステム600のハードディ
スクドライブ610に常駐されており、その実行時にプ
ロセッサ605により読み取られ、制御されるのが好ま
しい。
【0078】メソッド300は、新たな遷移オブジェク
トが首尾良く判定されたか否かを指示する、メモリ60
6に格納されるべき結果フラグ(即ち、真)とエラーが
起こったか否かを指示する結果フラグ(即ち、偽)とを
戻す。メソッド300は、ラベル「trans」により表現
される変数をアニメートステートマシーンの現在目標状
態と関連する遷移に設定するステップ305から始ま
る。次にステップ310で、「trans」がナルであれ
ば、メソッド300はステップ390へ進み、プロセッ
サ605により結果引数を「偽」に設定して、メソッド
300は終結する。そうでない場合には、メソッド30
0はステップ315へ進み、現在経路中の未完了遷移を
伴う次の遷移オブジェクトを表現するriを、新たに割
り当てられた遷移オブジェクトに設定する(即ち、新た
な遷移オブジェクトに対してメモリを割り当てる)。次
にステップ320で、riがナルであれば、メソッド3
00はステップ390へ進む。そうでない場合には、メ
ソッド300はステップ325へ進み、プロセッサ60
5は、riにより表現される遷移オブジェクトの遷移を
ラベル「trans」により表現される遷移に設定する。次
にステップ330で、riと関連する係数を「1」と等
しくなるように設定する。次にステップ335で、ri
により表現される遷移オブジェクトの開始時間を「0」
に設定する。次にステップ340で、riと関連する次
の遷移オブジェクトをナルに設定する。
【0079】次にステップ345で、現在経路がナルで
なければ、メソッド300はステップ350へ進み、
「cur」を、現在経路の終わりの遷移オブジェクトに設
定する。ナルである場合には、メソッド300はステッ
プ365へ進む。次のステップ355で、「cur」の次
の項目フィールドをriにより表現される遷移オブジェ
クトに設定する。次のステップ360で、riにより表
現される遷移オブジェクトと関連するリンクオフセット
を、「cur」と関連する遷移オブジェクトと関連するリ
ンクオフセットと、「cur」と関連する遷移オブジェク
トの遷移持続時間との和と等しくなるように設定する。
【0080】ステップ365で、ステートマシーンの現
在経路をriに設定する。次にステップ370で、プロ
セッサ605はステートマシーンの開始時間を「0」に
設定する。次にステップ375で、riと関連するリン
クオフセットを「0」に設定する。
【0081】次にステップ380で、「update_neede
d」フラグを「真」に設定する。次にステップ385
で、メモリ606に格納されている結果フラグを「真」
に設定して、メソッド300を終結する。
【0082】アニメートステートマシーンの遷移中又は
遷移後には、そのアニメートステートマシーンと関連す
るグラフィカルオブジェクトの外観を更新することが必
要である。図4は、図1から図3のアニメートステート
マシーンと関連するグラフィカルオブジェクトの外観を
更新するメソッド400を示すフローチャートである。
このメソッド400は、コンピュータシステム600の
ハードディスクドライブ610に常駐されており、その
実行時にプロセッサ605により読み取られ、制御され
るのが好ましい。メソッド400はステートマシーン
と、メモリ606に格納され且つシステム600のクロ
ックに従って測定される変数「time」とを要求し、ステ
ートマシーンの現在経路が現在アニメーションを終了し
たか否かを指示するための、メモリに格納されるべき
「done」フラグと、エラーが起こったか否かを指示する
ための、メモリ606に格納される結果フラグ(即ち、
偽)とを戻す。メソッド400は、メソッド100、2
00及び300の間にステートマシーンに割り当てられ
た開始時間を現在時間から減算するステップ405で始
まる。次のステップ410で、引数riを現在経路に設
定する。次にステップ415で、riがナルであれば、
メソッド400はステップ455へ進み、「done」フラ
グを「真」に設定する。ナルでない場合には、メソッド
400はステップ420へ進む。次のステップ460
で、「result」フラグをステートマシーンのソース状態
について「ApplyKeys」手続きを呼び出した結果に設定
する。このApplyKeys手続きは、自己と関連する参照を
受け入れ、ソース状態を表現する遷移オブジェクトと関
連するキーオブジェクトのテーブルを検査する。ApplyK
eys手続きはキーオブジェクト参照、属性識別子及び関
連属性値を検索して、ソース状態に従って各キーオブジ
ェクトと関連する属性値を設定する。
【0083】ステップ420で、変数「time」が現在経
路のリンクオフセットと現在経路の遷移持続時間の和以
下であれば、メソッド400はステップ425へ進む。
そうでない場合には、メソッド400はステップ440
へ進み、グラフィカルオブジェクトの外観を計算するた
めに使用できる「擬似時間」を表現する引数「tr_tim
e」を次のように設定する。
【0084】tr_time=ri(開始時間)+ri(係数)×(ti
me−ri(リンクオフセット)) 次にステップ445で、「done」フラグを「偽」に設定
する。次にステップ450で、「result」フラグを、ス
テートマシーンのソース状態の現在経路の遷移に対して
メソッド500(図5を参照)を呼び出した結果に設定
して、メソッド400を終結する。以下に説明するよう
に、メソッド500は遷移オブジェクトのトラックオブ
ジェクトを調べ、未使用トラックオブジェクトを選択す
る。未使用トラックオブジェクトは、後に遷移オブジェ
クトと関連するグラフィカルオブジェクトを更新するた
めに使用される。
【0085】ステップ425で、現在経路をriの次の
項目に設定する。次にステップ430で、プロセッサ6
05はriを削除する。次にステップ435で、riを現
在経路と等しくなるように設定し、メソッド400はス
テップ415へ進む。
【0086】図5は、特定の遷移の間にグラフィカルオ
ブジェクトの状態を更新するメソッド500を示すフロ
ーチャートである。このメソッド500はコンピュータ
システム600のハードディスクドライブ610に常駐
されており、その実行時にプロセッサ605により読み
取られ、制御されるのが好ましい。メソッド500は、
グラフィカルオブジェクトが更新されたか否か(即ち、
真)、又はエラーが起こったか否か(即ち、偽)を指示
する、メモリ606に格納されるべき結果フラグを戻
す。メソッド500はステップ502で始まり、そこで
メモリ606に格納されている変数「time」が「0」以
上であるか、又は遷移の持続時間以下である場合、メソ
ッド500はステップ504へ進む。そうでない場合に
は、メソッド500はステップ582へ進み、結果フラ
グを偽に設定して、メソッド500は終結する。
【0087】ステップ504で、遷移と関連し、メモリ
606に格納されているトラックオブジェクトのテーブ
ルを調べることにより、遷移と関連するトラックオブジ
ェクトを検査する。次にステップ506で、遷移と関連
する未使用トラックオブジェクトが存在しない場合、メ
ソッド500はステップ584へ進み、結果フラグを
「真」に設定して、メソッド500を終結する。そうで
ない場合には、メソッド500はステップ508へ進
み、メモリ606に格納されている引数「track」を、
遷移と関連するトラックテーブルの第1の未使用トラッ
クオブジェクトに設定する。次にステップ510で、第
1の未使用トラックオブジェクトが離散トラックを表現
するならば、メソッド500はステップ554へ進む。
これに対し、未使用トラックオブジェクトがスムーズト
ラックを表現する場合には、メソッド500はステップ
512へ進む。ステップ512では、メモリ606に格
納されている引数「trackdef」を、選択されたトラック
オブジェクトのトラック定義(track definition)に設定
する。次にステップ514で、メモリ606に格納され
ている引数nを、「trackdef」により表現されるトラッ
クオブジェクトの数に設定する。次にステップ516
で、選択された未使用トラックオブジェクトの開始時間
を表現する引数「start_time」を「0」に設定する。次
にステップ518で、メモリ606に格納されている引
数kを、選択された未使用トラックオブジェクトと関連
するキーオブジェクトのリストの中の第1のキーオブジ
ェクトに設定する。次にステップ520で、メモリ60
6に格納されている引数「cub」を、選択された未使用
トラックオブジェクトと関連する係数ベクトルのリスト
の中の3次係数の第1のベクトルと等しくなるように設
定する。次にステップ522で、引数「cub」がナルで
あれば、メソッド500はステップ584へ進む。そう
でない場合には、メソッド500はステップ524へ進
み、そこで、引数kがナルであれば、メソッド500は
ステップ534へ進む。ステップ524で、引数kがナ
ルでない場合にはメソッド500はステップ526へ進
み、そこで変数「time」の値が、引数kと関連する時間
フィールドにより表現される時間未満であれば、メソッ
ド500はステップ536へ進む。そうでない場合に
は、メソッド500はステップ528へ進み、プロセッ
サ605は「start_time」を、引数kと関連するフィー
ルドにより表現される時間に設定する。次にステップ5
30で、引数kを、選択された未使用トラックオブジェ
クトと関連するキーオブジェクトのリストの中の次のキ
ーに設定する。次にステップ532で、「cub」を、選
択された未使用トラックオブジェクトと関連する係数ベ
クトルのリストの中の次の係数ベクトルに設定する。
【0088】ステップ534で、メモリ606に格納さ
れた、選択された未使用トラックオブジェクトの終了時
間を表現する引数「end_time」を、遷移の持続時間に設
定して、メソッド500はステップ538へ進む。
【0089】ステップ536で、選択された未使用トラ
ックオブジェクトの終了時間を表現する引数「end_tim
e」を、引数kと関連する時間フィールドにより表現され
る時間に設定し、メソッド500はステップ538へ進
む。
【0090】ステップ538で、メモリ606に格納さ
れた、線形及び3次(Bezier)スプライン補間に適する
正規化時間(即ち、0と1の間)を表現する引数tを次
のように計算する。
【0091】t = (time − start_time)/(end_time
− start_time) 次にステップ540で、メモリ606に格納されている
カウンタiを「0」に設定する。次にステップ542
で、カウンタiが引数nに等しければ、メソッド500
はステップ506に戻る。そうでない場合には、次にス
テップ544で、メモリ606に格納されている引数c
を、「cub」のi番目の立方の係数に設定する。次のス
テップ546で、引数vを引数tにおけるcの値に設定す
る(即ち、v=c0+t×(c1+t×(c2+t×c
3))。次にステップ548で、プロセッサ605によ
り、トラック定義のi番目のトラックオブジェクトと関
連するオブジェクト参照及び属性識別子を検査する。次
にステップ550で、参照されたトラックオブジェクト
と関連する識別属性の値をvに設定し、メソッド500
はステップ552へ進む。ステップ552で、カウンタ
iを1増分して、メソッド500はステップ542に戻
る。
【0092】先に説明したように、ステップ510で、
第1の未使用トラックオブジェクトが離散トラックを表
現している場合、メソッド500はステップ554へ進
む。ステップ554で、未使用トラックオブジェクトの
遷移がナルであれば、メソッド500はステップ506
に戻る。そうでない場合には、メソッド500はステッ
プ556へ進み、引数「state1」を、未使用トラックオ
ブジェクトと関連する遷移オブジェクトのソース状態に
設定する。「state1」がナルであればメソッド500は
ステップ506に戻る。そうでない場合には、メソッド
500はステップ560へ進む。ステップ560では、
引数「skey1」を、「state1」と関連するキーオブジェ
クトのテーブルがトラック定義をマッピングするキーオ
ブジェクトと等しくなるように設定する。次にステップ
562で、未使用トラックオブジェクトがキーオブジェ
クトのリストを有する場合、メソッド500はステップ
564へ進み、メモリ606に格納されているポインタ
pkを、リストのヘッドを指示するように設定する。これ
に対し、ステップ560で未使用トラックオブジェクト
がキーオブジェクトのリストを有していない場合には、
メソッド500はステップ580へ進み、プロセッサ6
05により、「skey1」により表現されるキーオブジェ
クトと関連するApply Methodを呼び出し、メソッド50
0はステップ506に戻る。先に説明したように、キー
オブジェクトはオブジェクト属性対を関連するグラフィ
カルオブジェクト属性値にマッピングする。Apply Meth
odは、「skey1」により表現されるキーオブジェクトに
格納されているオブジェクト−属性対を検査し、オブジ
ェクト属性対を対応する値に設定する。次にステップ5
66で、引数kを、キーオブジェクトのリストの中の次
のキーオブジェクトに設定する。次にステップ568
で、この引数kがナルであれば、メソッド500はステ
ップ578へ進み、プロセッサ605によりリスト中の
最後のキーオブジェクトのApply Methodを呼び出して、
メソッド500はステップ506に戻る。これに対し、
引数kがナルでない場合には、メソッド500はステッ
プ570へ進む。ステップ570で、変数「time」がk
と関連する時間フィールドにより表現される時間以下で
ある場合、プロセッサ605により、このkと関連するA
pply Methodを呼び出して、メソッド500はステップ
506に戻る。そうでない場合には、メソッド500は
ステップ572へ進み、ポインタpkをキーオブジェクト
のリストの中の現在項目を表現するkを指示するように
設定する。次にステップ574で、引数kを、現在未使
用トラックオブジェクトと関連するキーオブジェクトの
リストの中の次のエントリに設定し、メソッド500は
ステップ568に戻る。
【0093】グラフィカルユーザインターフェースシス
テムでは、一度に活動状態であるキーボード事象を受け
入れることができるグラフィカルオブジェクトが1つ或
いはそれ以上存在することが普通である。大半のグラフ
ィカルユーザインターフェースシステムは、「キーボー
ドフォーカス」と呼ばれる概念を利用している。このキ
ーボードフォーカスの概念によれば、全ての入力キーボ
ード事象を受け取っているグラフィカルユーザインター
フェースシステムのグラフィカルオブジェクトコンポー
ネントは、常時1つである。キーボードフォーカスを扱
うオブジェクトを一般にフォーカス事象ハンドラオブジ
ェクトといい、それらはフォーカス事象ハンドラオブジ
ェクトクラス内の全てのフォーカス事象ハンドラオブジ
ェクトに共通する機能性に関して抽象ベースクラスを提
供するフォーカス事象ハンドラオブジェクトクラスに属
している。そのような特徴の1つは、ほぼ全てのフォー
カス事象ハンドラオブジェクトがフォーカス転送プロト
コルを介してシブリングフォーカス事象ハンドラオブジ
ェクトの間でフォーカスを転送することである。フォー
カス転送プロトコルは異なるオブジェクトの間でフォー
カスを転送するために使用される。フォーカス転送プロ
トコルは、あるオブジェクトの親オブジェクトがフォー
カスを有する場合に限ってそのオブジェクトがフォーカ
スを有することができるように、階層キーボードフォー
カスモデルを支援するために使用される。フォーカス転
送プロトコルは次のような2つのサイドを有する。
【0094】センダ:プロトコルのセンダサイドは、放
出側オブジェクトが受け取り側オブジェクトに対してフ
ォーカスを与えていることを指示するためのメッセージ
「set_focus」を含む。
【0095】レシーバ:プロトコルのレシーバサイドは
メッセージを全く含まない。
【0096】ここで説明する方法においては、例えば、
未翻訳文字コードの形態をとるキーボード602からの
生入力を事象ハンドラオブジェクトへ送信するために
「Keyboardraw」と呼ばれるプロトコルを使用できる。
このKeyboardrawプロトコルは次のような2つのサイド
を有する。
【0097】センダ:プロトコルのセンダサイドは、キ
ーボード(例えば、602)のキーが押されたことを指
示するためのメッセージ「key_down」及び「key_up」を
含む。
【0098】レシーバ:プロトコルのレシーバサイド
は、押されたキーと関連するコードが読み取られ且つ翻
訳されたことを指示するためのメッセージ「set_captur
e」を含む。
【0099】多くの場合、グラフィカルユーザインター
フェースシステムは、グラフィカルユーザインターフェ
ースの異なる画面の間の切り替えを含むメニューシステ
ムを有する。ここで説明する方法においては、異なるメ
ニュー画面に関わる事象ハンドラオブジェクトの間の通
信のためにメニュー画面コントロールプロトコルオブジ
ェクトを使用することができ、より高いレベルの事象ハ
ンドラオブジェクトが異なる画面を協調させる。メニュ
ー画面コントロールプロトコルは次のような2つのサイ
ドを有する。
【0100】センダ:プロトコルのセンダサイドは、あ
る特定の時間に特定のメニュー画面の特定のメニュー項
目がどの状態にあるべきかを指示するためのメッセージ
「left」、「up」、「right」、「down」、「action」
及び「set_visibility」を含む。
【0101】レシーバ:プロトコルのレシーバサイド
は、メニュー項目がシブリングメニュー項目からフォー
カスを受け取った親メニュー項目を指示するためのメッ
セージ「focus_transferred」を含む。
【0102】メニューシステムの中には、ある特定の時
点で1つの項目のみが活動状態である様々な項目を有す
るものもある。異なるメニュー項目事象ハンドラオブジ
ェクトに関わる事象ハンドラオブジェクトの間の通信の
ためにメニュー項目コントロールプロトコルオブジェク
トを使用でき、より高いレベルの事象ハンドラオブジェ
クトが画面を制御する。メニュー項目コントロールプロ
トコルは次のような2つのサイドを有する。
【0103】センダ:プロトコルのセンダサイドは、あ
る特定の時間に特定のメニュー項目がどの状態にあるべ
きかを指示するためのメッセージ「left」、「up」、
「right」、「down」、「action」及び「set_visibilit
y」を含む。
【0104】レシーバ:プロトコルのレシーバサイド
は、メニュー項目がシブリングメニュー項目からフォー
カスを受け取った親メニュー項目を指示するためのメッ
セージ「focus_transferred」及び「pressed」を含む。
【0105】ここで説明する方法においては、アプリケ
ーションプログラムのランタイム(即ち、アプリケーシ
ョンプログラムが実行を開始する時間)に事象ハンドラ
オブジェクトを結合及び分離することができる。更に、
事象ハンドラオブジェクトが同じクラスに属するか否か
に関わらず、置き換えられるべき事象ハンドラオブジェ
クトが元の事象ハンドラオブジェクトが通信していた全
てのプロトコルとの間に互換性を有するインターフェー
スを有しているならば、1つの事象ハンドラオブジェク
トを別の事象ハンドラオブジェクトと置き換えることも
可能である。事象ハンドラオブジェクトは「connec
t」、「disconnect」、「emitsingle」、「emitall」、
「emitallothers」、「emituntil」及び呼び出しの各手
続きを有し、これらの手続きについては以下に説明す
る。事象ハンドラオブジェクトはクラスからオブジェク
トへインターフェースをコピーする手続き(即ち、オブ
ジェクトテンプレート)を更に含む。どの事象ハンドラ
オブジェクトもインターフェース識別子によりキーイン
グされるインターフェースのテーブルを有する。インタ
ーフェース識別子を1つ或いはそれ以上の事象ハンドラ
オブジェクトにマッピングすることができ、各インター
フェース識別子は関連するプロトコル参照及びサイド識
別子を有する。
【0106】図14は、connect手続きに従って2つの
事象ハンドラオブジェクト(即ち、第1の事象ハンドラ
オブジェクトと第2の事象ハンドラオブジェクト)を結
合するメソッド1400を示す流れ図である。
【0107】図14のメソッド1400はコンピュータ
システム600のハードディスクドライブ610に常駐
するソフトウェアを使用して実現され、且つその実行時
にプロセッサユニット605により読み取られ、制御さ
れるのが好ましい。メソッド1400は、第1の事象ハ
ンドラオブジェクト(即ち、放出側事象ハンドラオブジ
ェクト)と関連する参照、第1の事象ハンドラオブジェ
クトのインターフェースを識別するインターフェース識
別子、第2の事象ハンドラオブジェクト(即ち、受け取
り側オブジェクト)に対する参照、及び第2の事象ハン
ドラオブジェクトのインターフェースを識別するインタ
ーフェース識別子、という入力パラメータを有する。メ
ソッド1400は、第1の事象ハンドラオブジェクト及
び第2の事象ハンドラオブジェクトのインターフェース
が定義され且つ対応する第1及び第2の事象ハンドラオ
ブジェクトに存在していることを判定する。また、メソ
ッド1400は、双方のインターフェースが同じプロト
コルにより通信し且つ双方のインターフェースがプロト
コルの異なるサイドに対応することを判定する。メソッ
ド1400は、第1の事象ハンドラオブジェクトのイン
ターフェースと関連する、メモリ606に格納されてい
るコラボレータテーブルに1つのエントリを追加するよ
うに構成されている。コラボレータテーブルは1つの事
象ハンドラオブジェクトを1つのインターフェース識別
子にマッピングするために使用される。コラボレータテ
ーブルは第2の事象ハンドラオブジェクトと関連する参
照によりキーイングされ、第2の事象ハンドラオブジェ
クトのインターフェース識別子の値をメモリ606に格
納する。メソッド1400は、更に、第2の事象ハンド
ラオブジェクトと関連するインターフェースのコラボレ
ータテーブルに1つのエントリを追加するように構成さ
れている。このエントリは第1の事象ハンドラオブジェ
クトのインターフェース識別子である。
【0108】メソッド1400は、第1の事象ハンドラ
オブジェクトが第1の所定のインターフェース識別子に
対応する関連インターフェース識別子を有するか否かを
判定するために試験を実行するステップ1405で始ま
る。ステップ1405で第1の事象ハンドラオブジェク
トが第1の所定のインターフェース識別子に対応する関
連インターフェース識別子を有する場合、メソッド14
00はステップ1415へ進む。そうでない場合には、
メソッド1400はステップ1410へ進み、エラーメ
ッセージを生成する。ステップ1410に続いて、メソ
ッド1400はステップ1450へ進み、故障メッセー
ジを生成し、事象ハンドラオブジェクトの結合を打ち切
り、メソッド1400は終結する。
【0109】ステップ1415で、第2の事象ハンドラ
オブジェクトが第2の所定のインターフェース識別子に
対応する関連インターフェース識別子を有する場合、メ
ソッド1400はステップ1425へ進む。そうでない
場合には、メソッド1400はステップ1420へ進
み、プロセッサ605によりエラーメッセージを生成す
る。ステップ1420に続いて、メソッド1400はス
テップ1450へ進み、故障メッセージを生成し、且つ
事象ハンドラオブジェクトの結合を打ち切る。
【0110】ステップ1425で、第1のインターフェ
ースを第1の事象ハンドラオブジェクト内の、第1のイ
ンターフェース識別子に対応するインターフェースであ
るように設定し、且つ第2のインターフェースを第2の
事象ハンドラオブジェクト内の、第2のインターフェー
ス識別子に対応するインターフェースであるように設定
する。
【0111】ステップ1430で、プロセッサ605に
より、第1のインターフェースと第2のインターフェー
スが同じプロトコルを使用するか否かを判定するために
試験を実行する。第1のインターフェースと第2のイン
ターフェースが同じプロトコルを使用しない場合、メソ
ッド1400はステップ1435へ進み、エラーメッセ
ージを生成する。そうでない場合には、メソッド140
0はステップ1440へ進む。ステップ1435に続い
て、メソッド1400はステップ1450へ進み、故障
メッセージを生成し、且つ事象ハンドラオブジェクトの
結合を打ち切る。
【0112】ステップ1440では、第1のインターフ
ェースと第2のインターフェースが同じプロトコルの異
なるサイドを使用するか否かを判定するために試験を実
行する。第1のインターフェースと第2のインターフェ
ースが同じプロトコルの異なるサイドを使用する場合、
メソッド1400はステップ1445へ進み、エラーメ
ッセージを生成する。そうでない場合には、メソッド1
400は決定ブロック1455へ進む。ステップ145
5に続いて、メソッド1400はステップ1450へ進
み、プロセッサ605により故障メッセージを生成し、
且つ事象ハンドラオブジェクトの結合を打ち切る。
【0113】ステップ1455で、プロセッサ605に
より、第1のインターフェースがメモリ606に格納さ
れたコラボレータテーブルを割り当てたか否かを判定す
るために試験を実行する。第1のインターフェースがコ
ラボレータテーブルを割り当てていた場合、メソッド1
400はステップ1460へ進み、第1のインターフェ
ースにメモリ606に格納されたコラボレータテーブル
が割り当てられる。そうでない場合には、メソッド14
00はステップ1465へ進む。
【0114】ステップ1465で、プロセッサ605
は、第2のインターフェースがメモリ606に格納され
たコラボレータテーブルを割り当てたか否かを判定する
ための試験を実行する。第2のインターフェースがコラ
ボレータテーブルを割り当てていた場合、メソッド14
00はステップ1470へ進み、第2のインターフェー
スにコラボレータテーブルを割り当てる。そうでない場
合には、メソッドはステップ1475へ進む。
【0115】ステップ1475で、コラボレータテーブ
ルが第2の事象ハンドラオブジェクトを第2のインター
フェース識別子へマッピングするように、第1のインタ
ーフェースに割り当てられたコラボレータテーブルにお
いて1つのエントリを追加又は変更する。このエントリ
は第1の事象ハンドラオブジェクトのインターフェース
識別子である。次のステップ1480で、コラボレータ
テーブルが第1の事象ハンドラオブジェクトを第1のイ
ンターフェース識別子へマッピングするように、第2の
インターフェースに割り当てられたコラボレータテーブ
ルにおいて1つのエントリを追加又は変更する。このエ
ントリは第2の事象ハンドラオブジェクトのインターフ
ェース識別子である。次のステップ1485で、プロセ
ッサ605により成功メッセージを生成して、メソッド
1400は終結する。
【0116】図15は、disconnect手続きに従って2つ
の事象ハンドラオブジェクト(即ち、第1の事象ハンド
ラオブジェクトと第2の事象ハンドラオブジェクト)の
結合を分離するメソッド1500を示す流れ図である。
【0117】図15のメソッド1500はコンピュータ
システム600のハードディスクドライブ610に常駐
するソフトウェアにより実現され、且つその実行時にプ
ロセッサユニット605により読み取られ、制御される
のが好ましい。メソッド1500は、第1の事象ハンド
ラオブジェクトと関連する参照、第1の事象ハンドラオ
ブジェクトのインターフェースを識別するインターフェ
ース識別子、メッセージ識別子、及び供給すべき引数リ
ストと関連する参照、という入力パラメータを有する。
メソッド1500は、第1の事象ハンドラオブジェクト
及び第2の事象ハンドラオブジェクトのインターフェー
スが定義され且つ対応する第1及び第2の事象ハンドラ
オブジェクトに存在していることを判定する。メソッド
1500は、双方のインターフェースが同じプロトコル
により通信すること及び双方のインターフェースがプロ
トコルの異なるサイドに対応することを判定するように
構成されている。また、メソッド1500は、メモリ6
06に格納され且つ第1の事象ハンドラオブジェクトの
インターフェースと関連しているコラボレータからエン
トリを除去するように構成されている。更に、メソッド
1500は、第2の事象ハンドラオブジェクトと関連す
るインターフェースのコラボレータテーブルからエント
リを除去するように構成されている。
【0118】メソッド1500は、プロセッサ605に
より、第1の事象ハンドラオブジェクトが第1の所定の
インターフェース識別子に対応する関連インターフェー
スを有するか否かを判定するための試験を実行するステ
ップ1505で始まる。第1の事象ハンドラオブジェク
トが第1の所定のインターフェース識別子に対応する関
連インターフェースを有する場合、メソッドはステップ
1515へ進む。そうでない場合には、メソッド150
0はステップ1510へ進み、エラーメッセージを生成
する。ステップ1510に続いて、メソッド1500は
ステップ1560へ進み、プロセッサ605により故障
メッセージを生成し、事象ハンドラオブジェクトの結合
分離を打ち切り、メソッド1500は終結する。
【0119】ステップ1515で、プロセッサ605
は、第2の事象ハンドラオブジェクトが第2の所定のイ
ンターフェース識別子に対応する関連インターフェース
を有するか否かを判定するための試験を実行する。第2
の事象ハンドラオブジェクトが第2の所定のインターフ
ェース識別子に対応する関連インターフェースを有する
場合、メソッドはステップ1525へ進む。そうでない
場合には、メソッド1500はステップ1520へ進
み、プロセッサ605によりエラーメッセージを生成す
る。ステップ1520に続いて、メソッド1500はス
テップ1560へ進み、故障メッセージを生成し、事象
ハンドラオブジェクトの結合分離を打ち切り、メソッド
1500は終結する。
【0120】ステップ1525で、第1のインターフェ
ースを第1のインターフェース識別子に対応する第1の
事象ハンドラオブジェクト内のインターフェースである
ように設定し、且つ第2のインターフェースを第2のイ
ンターフェース識別子に対応する第2の事象ハンドラオ
ブジェクト内のインターフェースであるように設定す
る。
【0121】ステップ1530で、第1のインターフェ
ースと第2のインターフェースが同じプロトコルを使用
するか否かを判定するために試験を実行する。第1のイ
ンターフェースと第2のインターフェースが同じプロト
コルを使用しない場合、メソッド1500はステップ1
535へ進み、プロセッサ605によりエラーメッセー
ジを生成する。そうでない場合には、メソッド1500
はステップ1540へ進む。ステップ1535に続い
て、メソッド1500はステップ1560へ進み、プロ
セッサ605により故障メッセージを生成し、且つ事象
ハンドラオブジェクトの結合分離を打ち切る。
【0122】ステップ1540で、プロセッサ605
は、第1のインターフェースと第2のインターフェース
が同じプロトコルの異なるサイドを使用するか否かを判
定する。第1のインターフェースと第2のインターフェ
ースが同じプロトコルの異なるサイドを使用する場合、
メソッド1500はステップ1545へ進み、プロセッ
サ605によりエラーメッセージを生成する。そうでな
い場合には、メソッド1500はステップ1550へ進
む。ステップ1545に続いて、メソッド1500はス
テップ1560へ進み、故障メッセージを生成し、且つ
事象ハンドラオブジェクトの結合分離を打ち切る。
【0123】ステップ1550で、プロセッサ605
は、第1のインターフェースと第2のインターフェース
が共にメモリ606に格納されたコラボレータテーブル
を割り当てたか否かを判定するための試験を実行する。
第1のインターフェースと第2のインターフェースが共
にコラボレータテーブルを割り当てていた場合、メソッ
ド1500はステップ1565へ進む。そうでない場合
には、メソッド1500はステップ1555へ進み、エ
ラーメッセージを生成する。ステップ1555に続い
て、メソッド1500はステップ1550へ進み、故障
メッセージを生成し、且つ事象ハンドラオブジェクトの
結合分離を打ち切る。
【0124】ステップ1565で、第1のインターフェ
ースに割り当てられ且つメモリ606に格納されている
コラボレータテーブルが第2の事象ハンドラオブジェク
トをナルインターフェース識別子へマッピングするよう
に、コラボレータテーブルにおいて1つのエントリを除
去又は変更する。次のステップ1570で、第2のイン
ターフェースに割り当てられたコラボレータテーブルが
第1の事象ハンドラオブジェクトをナルインターフェー
ス識別子へマッピングするように、コラボレータテーブ
ルにおいて1つのエントリを除去又は変更する。次のス
テップ1575で、プロセッサ605により成功メッセ
ージを生成して、メソッド1500は終結する。
【0125】図16は、先に説明した第1の事象ハンド
ラオブジェクトと同じであっても良いし、そうでなくて
も差し支えない第1の事象ハンドラオブジェクトから、
emitsingle手続きに従って、第1の事象ハンドラオブジ
ェクトのインターフェースと関連する単一の指定された
第2の事象ハンドラオブジェクトへメッセージを送信す
るメソッド1600を示す流れ図である。このメソッド
1600は、コンピュータシステム600のハードディ
スクドライブ610に常駐するソフトウェアを使用して
実現され、且つその実行時にプロセッサユニット605
により読み取られ、制御されるのが好ましい。
【0126】このメソッド1600は、第1の事象ハン
ドラオブジェクトと関連する参照、第1の事象ハンドラ
オブジェクトのインターフェースを識別するインターフ
ェース識別子、メッセージ識別子、及び引数リストと関
連する参照、という入力パラメータを有する。このメソ
ッド1600の手続きは、第1の事象ハンドラオブジェ
クトのインターフェースが第2の事象ハンドラオブジェ
クトと関連する参照によりキーイングされたエントリを
有することを検査するように構成されている。また、メ
ソッド1600の手続きは、第2の事象ハンドラオブジ
ェクトの呼び出し(invoke)手続きを呼び出し、且つ第2
の事象ハンドラオブジェクトと関連する参照、メッセー
ジ識別子、引数リスト、及び第1の事象ハンドラオブジ
ェクトと関連する参照を第2の事象ハンドラオブジェク
トに供給するように構成されている。
【0127】メソッド1600はステップ1605で開
始され、ここでは第1の事象ハンドラオブジェクトが第
1の所定のインターフェース識別子に対応するインター
フェースを有するか否かを判定するための試験をプロセ
ッサ605が実行する。第1の事象ハンドラオブジェク
トが第1の所定のインターフェース識別子に対応するイ
ンターフェースを有する場合、メソッド1600は次の
ステップ1615へ進む。そうでない場合には、メソッ
ド1600はステップ1610へ進み、プロセッサ60
5によりエラーメッセージを生成する。ステップ161
0に続いて、メソッド1600はステップ1645へ進
み、プロセッサ605により故障メッセージを生成し
て、メソッド1600を終結する。
【0128】ステップ1615で、第1のインターフェ
ースを第1のインターフェース識別子に対応する第1の
事象ハンドラオブジェクト内のインターフェースである
ように設定する。次にステップ1620で、プロセッサ
605により、第2の事象ハンドラオブジェクトが第2
の所定のインターフェース識別子に対応するインターフ
ェースを有するか否かを判定するために試験を実行す
る。第2の事象ハンドラオブジェクトが第2の所定のイ
ンターフェース識別子に対応するインターフェースを有
する場合、メソッド1600は次のステップ1630へ
進む。そうでない場合にはメソッド1600はステップ
1625へ進み、プロセッサ605によりエラーメッセ
ージを生成する。ステップ1625に続いて、メソッド
1600はステップ1645へ進み、プロセッサ605
により故障メッセージを生成して、メソッド1600は
終結する。
【0129】ステップ1630で、第2のインターフェ
ース識別子を、第1の事象ハンドラオブジェクトと関連
するコラボレータテーブルが第2の事象ハンドラオブジ
ェクトをマッピングするインターフェース識別子である
ように設定する。次にステップ1635で、プロセッサ
605により試験を実行し、第2の事象ハンドラオブジ
ェクトと関連するインターフェースが第1の事象ハンド
ラオブジェクトと同じプロトコルを使用するか否かを判
定する。第2の事象ハンドラオブジェクトと関連するイ
ンターフェースが第1の事象ハンドラオブジェクトと同
じプロトコルを使用する場合、メソッド1600はステ
ップ1650へ進む。そうでない場合には、メソッド1
600はステップ1640へ進み、プロセッサ605は
エラーメッセージを生成する。ステップ1640に続い
て、メソッド1600はステップ1645へ進み、故障
メッセージを生成して、メソッド1600を終結する。
【0130】ステップ1650で、第1の事象ハンドラ
オブジェクトが、第2の事象ハンドラオブジェクトに含
まれる呼び出し手続きを呼び出し、少なくとも4つのパ
ラメータを第2の事象ハンドラオブジェクトへ送信す
る。これら4つのパラメータとはメッセージ識別子と、
第2のインターフェース識別子と、引数アレイと、第1
の事象ハンドラオブジェクトと関連する参照である。
【0131】次にステップ1655で、プロセッサ60
5により成功メッセージを生成して、メソッド1600
は終結する。
【0132】図17は、先に説明した第1の事象ハンド
ラオブジェクトと同じであっても良いし、そうでなくと
も差し支えない第1の事象ハンドラオブジェクトから第
1の事象ハンドラオブジェクトのインターフェースと関
連する全ての事象ハンドラオブジェクトへメッセージを
送信するメソッド1700を示す流れ図である。このメ
ソッド1700は、コンピュータシステム600のハー
ドディスクドライブ610に常駐するソフトウェアを使
用して実現され、且つその実行時にプロセッサユニット
605により読み取られ、制御されるのが好ましい。
【0133】このメソッド1700は、第1の事象ハン
ドラオブジェクトと関連する参照、第1の事象ハンドラ
オブジェクトのインターフェースを識別するインターフ
ェース識別子、メッセージ識別子、及び引数リストと関
連する参照、という入力パラメータを有する。メソッド
1700は、第1の事象ハンドラオブジェクトが、第2
の事象ハンドラオブジェクトと関連する参照によりキー
イングされるエントリを有することを判定するように構
成されている。また、メソッド1700は、メモリ60
6に格納されている第1の事象ハンドラオブジェクトの
インターフェースのコラボレータテーブルを検査し、且
つコラボレータテーブルに含まれる各事象ハンドラオブ
ジェクトの呼び出し手続きを呼び出すように構成されて
いる。メソッド1700は各々の事象ハンドラオブジェ
クトと関連する参照、メッセージ識別子、引数リスト及
び関連するオブジェクトと関連する参照を各々の事象ハ
ンドラオブジェクトに供給する。
【0134】メソッド1700は、第1の事象ハンドラ
オブジェクトと関連するインターフェースと関連してい
る全ての事象ハンドラオブジェクトを識別するために、
メモリ606に格納され、且つ第1の事象ハンドラオブ
ジェクトと関連するインターフェースと関連するコラボ
レータのテーブルを検査し、且つそれらの事象ハンドラ
オブジェクトと関連する呼び出し手続きの各々を呼び出
す。メソッド1700は、プロセッサ605によりステ
ップ1705で開始され、ここでは第1の事象ハンドラ
オブジェクトが、第1の所定のインターフェース識別子
に対応するインターフェースを有するか否かを判定する
ために試験を実行する。第1の事象ハンドラオブジェク
トが第1の所定のインターフェース識別子に対応するイ
ンターフェースを有する場合、メソッド1700は次の
ステップ1715へ進む。そうでない場合には、メソッ
ド1700はステップ1710へ進み、プロセッサ60
5によりエラーメッセージを生成する。ステップ171
0の後、メソッド1700は終結する。
【0135】ステップ1715で、第1のインターフェ
ースを、第1のインターフェース識別子に対応する第1
の事象ハンドラオブジェクト内のインターフェースであ
るように設定する。次にステップ1720で、第2のイ
ンターフェース識別子を、第1の事象ハンドラオブジェ
クトと関連し且つメモリ606に格納されているコラボ
レータテーブルが第2の事象ハンドラオブジェクトをマ
ッピングするインターフェース識別子であるように設定
する。次にステップ1725で、第1の事象ハンドラオ
ブジェクトと関連するコラボレータテーブルにエントリ
を有する事象ハンドラオブジェクトがそれ以上存在しな
い場合、メソッド1700は終結する。そうでない場合
には、メソッド1700はステップ1730へ進み、プ
ロセッサ605により、第1の事象ハンドラオブジェク
トと関連するコラボレータテーブルから検索されたイン
ターフェース識別子と関連する第1のインターフェース
がナルでないかを判定するために試験を実行する。ステ
ップ1730の結果が「真」であれば、メソッド170
0は次のステップ1735へ進む。「真」でない場合に
は、メソッド1700はステップ1740へ進む。ステ
ップ1735では、第2の事象ハンドラオブジェクトと
関連する呼び出し手続きを呼び出し、メッセージ識別子
及び第2のインターフェース識別子を、第2の事象ハン
ドラオブジェクトへ送信する。ステップ1740では、
次の事象ハンドラオブジェクトの参照とインターフェー
ス識別子をメモリ606から検索して、メソッド170
0はステップ1725に戻る。
【0136】図18は、特別に除外されている事象ハン
ドラオブジェクトを除いて、第1の事象ハンドラオブジ
ェクトのインターフェースと関連する全ての事象ハンド
ラオブジェクトへ第1の事象ハンドラオブジェクトから
メッセージを送信するメソッド1800を示す流れ図で
ある。このメソッド1800は、コンピュータシステム
600のハードディスクドライブ610に常駐するソフ
トウェアを使用して実現され、且つその実行時にプロセ
ッサユニット605により読み取られ、制御されるのが
好ましい。
【0137】メソッド1800は、第1の事象ハンドラ
オブジェクトと関連する参照、第1の事象ハンドラオブ
ジェクトのインターフェースを識別するインターフェー
ス識別子、第2の事象ハンドラオブジェクトと関連する
参照、メッセージ識別子、及び引数リストと関連する参
照、という入力パラメータを有する。メソッド1800
は、第1の事象ハンドラオブジェクトのインターフェー
スが、第2の事象ハンドラオブジェクトと関連する参照
によりキーイングされたエントリを有することを判定す
るように構成されている。また、メソッド1800は、
メモリ606に格納されている第1の事象ハンドラオブ
ジェクトインターフェースのコラボレータテーブルを検
査し、且つ第1の事象ハンドラオブジェクトに供給され
るパラメータにより識別される事象ハンドラオブジェク
トを除いて、コラボレータテーブルに含まれる各々の事
象ハンドラオブジェクトの呼び出し手続きを呼び出すよ
うに構成されている。メソッド1800は、各々の事象
ハンドラオブジェクトと関連する参照と、メッセージ識
別子と、引数リストと、第1の事象ハンドラオブジェク
トと関連する参照とを各々の事象ハンドラオブジェクト
に供給する。
【0138】メソッド1800は、インターフェースと
関連する全ての事象ハンドラオブジェクトを識別するた
めにインターフェースのコラボレータのテーブルを検査
し、プロセッサ605は、第2の事象ハンドラオブジェ
クトと関連する呼び出し手続きを除いて、それらの事象
ハンドラオブジェクトと関連する呼び出し手続きの各々
を呼び出す。メソッド1800は、プロセッサ605に
より、第1の事象ハンドラオブジェクトが第1の所定の
インターフェース識別子に対応するインターフェースを
有するか否かを判定するために試験を実行するステップ
1805で始まる。第1の事象ハンドラオブジェクトが
第1の所定のインターフェース識別子に対応するインタ
ーフェースを有する場合、メソッド1800は次のステ
ップ1815へ進む。そうでない場合には、メソッド1
800はステップ1810へ進み、プロセッサ605は
エラーメッセージを生成する。ステップ1810の後、
メソッド1800は終結する。
【0139】ステップ1815で、第1のインターフェ
ースを、第1のインターフェース識別子に対応する第1
の事象ハンドラオブジェクト内のインターフェースであ
るように設定する。次にステップ1820で、第2のイ
ンターフェース識別子を、第1の事象ハンドラオブジェ
クトと関連するコラボレータテーブルが第2の事象ハン
ドラオブジェクトをマッピングするインターフェース識
別子に設定する。次にステップ1825で、第1の事象
ハンドラオブジェクトと関連するコラボレータテーブル
にエントリを有する事象ハンドラオブジェクトがそれ以
上存在しない場合、メソッド1800は終結する。そう
でない場合には、メソッド1800はステップ1830
へ進み、第1の事象ハンドラオブジェクトと関連するコ
ラボレータテーブルから検索されたインターフェース識
別子と関連する第1のインターフェースがナルでないか
を判定するために試験を実行する。ステップ1830の
結果が「真」であれば、メソッド1800は次のステッ
プ1835へ進む。「偽」である場合には、メソッド1
800はステップ1845へ進む。ステップ1835で
は、プロセッサ605により、第2の事象ハンドラオブ
ジェクトが除外された事象ハンドラオブジェクトである
か否かを判定するために試験を実行する。第2の事象ハ
ンドラオブジェクトが除外された事象ハンドラオブジェ
クトであれば、メソッド1800はステップ1845へ
進む。そうでない場合には、メソッド1800はステッ
プ1840へ進み、プロセッサ605により第2の事象
ハンドラオブジェクトと関連する呼び出し手続きを呼び
出し、且つメッセージ識別子及び第2のインターフェー
ス識別子を第2の事象ハンドラオブジェクトへ送信す
る。ステップ1845では、メモリ606に格納され且
つ第1の事象ハンドラオブジェクトと関連するコラボレ
ータテーブルから、次の事象ハンドラオブジェクトエン
トリ及びインターフェース識別子を検索して、メソッド
1800はステップ1825に戻る。
【0140】図19は、第1の事象ハンドラオブジェク
トのインターフェースと関連する全てのハンドラオブジ
ェクトのうちの1つが首尾良く成功したことを指示する
まで、それらの事象ハンドラオブジェクトへ第1の事象
ハンドラオブジェクトからメッセージを送信するメソッ
ド1900を示す流れ図である。このメソッド1900
は、コンピュータシステム600のハードディスクドラ
イブ610に常駐するソフトウェアを使用して実現さ
れ、且つその実行時にプロセッサユニット605により
読み取られ、制御されるのが好ましい。
【0141】メソッド1900は、第1の事象ハンドラ
オブジェクトと関連する参照、第1の事象ハンドラオブ
ジェクトのインターフェースを識別するインターフェー
ス識別子、メッセージ識別子、及び引数リストと関連す
る参照、という入力パラメータを有する。メソッド19
00は、第1の事象ハンドラオブジェクトのインターフ
ェースが第2の事象ハンドラオブジェクトと関連する参
照によりキーイングされるエントリを有することを検査
するように構成されている。また、メソッド1900
は、第1の事象ハンドラオブジェクトのインターフェー
スのコラボレータテーブルを検査し、且つコラボレータ
テーブルに含まれる各々の事象ハンドラオブジェクトの
呼び出し手続きを呼び出すように構成されている。メソ
ッド1900は、事象ハンドラオブジェクトのうちの1
つが成功コードを受信するまで、他の事象ハンドラオブ
ジェクトと関連する参照と、メッセージ識別子と、引数
リストと、第1の事象ハンドラオブジェクトと関連する
参照とを各々の事象ハンドラオブジェクトに供給する。
【0142】メソッド1900は、プロセッサ605に
より、第1の事象ハンドラオブジェクトが第1の所定の
インターフェース識別子に対応するインターフェースを
有するか否かを判定するために試験を実行するステップ
1905で始まる。第1の事象ハンドラオブジェクトが
第1の所定のインターフェース識別子に対応するインタ
ーフェースを有する場合、メソッド1900は次のステ
ップ1915へ進む。そうでない場合には、メソッド1
900はステップ1910へ進み、プロセッサ605に
よりエラーメッセージを生成する。ステップ1910に
続いて、メソッド1900はステップ1930へ進み、
故障メッセージを生成して、メソッド1900は終結す
る。
【0143】ステップ1915で、第1のインターフェ
ースを、第1のインターフェース識別子に対応する第1
の事象ハンドラオブジェクト内のインターフェースであ
るように設定する。次にステップ1920で、第2のイ
ンターフェース識別子を、第1の事象ハンドラオブジェ
クトと関連するコラボレータテーブルが第2の事象ハン
ドラオブジェクトをマッピングするインターフェース識
別子に設定する。次にステップ1925で、第1の事象
ハンドラオブジェクトと関連するコラボレータテーブル
にエントリを有する事象ハンドラオブジェクトがそれ以
上存在しない場合、メソッド1900はステップ193
0へ進み、故障メッセージを生成して、メソッド190
0は終結する。そうでない場合には、メソッド1900
はステップ1935へ進み、プロセッサ605により、
メモリ606に格納され且つ第1の事象ハンドラオブジ
ェクトと関連するコラボレータテーブルから検索された
インターフェース識別子に関連する第1のインターフェ
ースがナルでないかを判定するために試験を実行する。
ステップ1935の結果が「真」であれば、メソッド1
900は次のステップ1940へ進む。「偽」であれ
ば、メソッド1900はステップ1955へ進む。ステ
ップ1940で、プロセッサ605により第2の事象ハ
ンドラオブジェクトと関連する呼び出し手続きを呼び出
し、且つメッセージ識別子及び第2のインターフェース
識別子を第2の事象ハンドラオブジェクトへ送信する。
次にステップ1945で、ステップ1940における呼
び出しが成功している場合、メソッド1900はステッ
プ1950へ進み、成功メッセージを生成して、メソッ
ド1900は終結する。そうでない場合には、メソッド
1900はステップ1955へ進み、第1の事象ハンド
ラオブジェクトと関連するコラボレータテーブルから次
の事象ハンドラオブジェクト参照及びインターフェース
識別子を検索して、メソッド1900はステップ192
5に戻る。
【0144】関連するオブジェクトの呼び出し手続き
は、第1の事象ハンドラオブジェクトと関連する参照、
第1の事象ハンドラオブジェクトのインターフェースを
識別するインターフェース識別子、メッセージ識別子、
及び引数リストと関連する参照、という入力パラメータ
を有する。呼び出し手続きは、受信するインターフェー
スのインターフェース識別子及びメッセージ識別子に応
じて一連のアクション(例えば、手続きを起動する、デ
ータ値を計算する、キーボードの押下の意味を判定する
など)を選択するように構成されている。また、事象ハ
ンドラオブジェクトと関連するデータフィールドを変更
するように呼び出し手続きを構成することもできる。他
の全ての呼び出し手続きが継承される元になっているベ
ースクラス呼び出し手続きは、関連する事象ハンドラオ
ブジェクトのインターフェースが他の事象ハンドラオブ
ジェクトと関連する参照によりキーイングされたエント
リを有することを検査し、且つ関連する事象ハンドラオ
ブジェクトのインターフェースのサイド識別子が、その
事象ハンドラオブジェクトにより使用されるプロトコル
の有効サイドを表現していることを検査するように構成
されている。また、ベースクラス呼び出し手続きは、メ
ッセージ識別子がプロトコルの他方のサイドに従う事象
ハンドラオブジェクトにより放出されるメッセージを表
現していることを検査し、且つその検査の結果に応じ
て、成功コード又は故障コードを戻すように構成されて
いる。
【0145】図20は、第1の事象ハンドラオブジェク
トからメッセージを受信するメソッド2000を示す流
れ図である。先に説明した通り、メッセージはメッセー
ジ識別子を含む。メソッド2000はコンピュータシス
テム600のハードディスクドライブ610に常駐する
ソフトウェアを使用して実現され、且つその実行時にプ
ロセッサユニット605により読み取られ、制御される
のが好ましい。メソッド2000は、ベース事象ハンド
ラオブジェクトクラス(即ち、そのクラス内の全ての事
象ハンドラオブジェクトが取り出されるオブジェクトク
ラス)により使用される。メソッド2000は、第1の
所定のインターフェースを第1のインターフェース識別
子に対応する第1の事象ハンドラオブジェクト内のイン
ターフェースであるように設定するステップ2005で
始まる。次にステップ2010で、プロセッサ605に
より、第1のインターフェースがナルであるか否かを判
定するために試験を実行する。第1のインターフェース
がナルでなければ、メソッド2000はステップ202
0へ進む。そうでない場合には、メソッド2000はス
テップ2015へ進み、プロセッサ605によりエラー
メッセージを生成する。ステップ2015に続いて、メ
ソッド2000はステップ2040へ進み、故障メッセ
ージを生成して、メソッド2000は終結する。
【0146】ステップ2020で、プロセッサ605に
より、第1のインターフェース識別子により表現される
プロトコルのサイドが有効であるか否かを判定するため
に試験を実行する。この場合、プロトコルのサイドがプ
ロトコルの「受信」サイドとして識別されれば、そのサ
イドは有効であると考えられる。第1のインターフェー
スがプロトコルの有効サイドとして認識されない場合、
メソッド2000はステップ2030へ進む。有効サイ
ドと識別された場合には、メソッド2000はステップ
2025へ進み、プロセッサ605はエラーメッセージ
を生成する。ステップ2025に続いて、メソッド20
00はステップ2040へ進み、故障メッセージを生成
して、メソッド2000は終結する。
【0147】ステップ2030で、プロセッサ605に
より、メッセージ識別子により表現されるプロトコルの
サイドが有効であるか否かを判定するために試験を実行
する。この場合、メッセージ識別子により識別されるプ
ロトコルのサイドがプロトコルの「送信」サイドとして
識別されれば、そのサイドは有効であると考えられる。
メッセージ識別子がプロトコルの有効サイドを識別しな
い場合、メソッド2000はステップ2040へ進む。
識別する場合には、メソッド2000はステップ203
5へ進み、プロセッサ605によりエラーメッセージを
生成する。ステップ2035に続いて、メソッド200
0はステップ2040へ進み、故障メッセージを生成し
て、メソッド2000は終結する。
【0148】次にステップ2045で、診断メッセージ
を生成する。診断メッセージは、メッセージ識別子によ
り表現されるメッセージプロトコルのサイドが有効であ
ることを指示する。この診断メッセージは、メッセージ
が受信された時点における受信側事象ハンドラオブジェ
クト及び送信側事象ハンドラオブジェクトの値を記録す
ることもできる。次のステップ2050で成功メッセー
ジを生成して、メソッド2000は終結する。
【0149】先に説明した通り、キーボードフォーカス
を扱うオブジェクトを一般にフォーカス事象ハンドラオ
ブジェクトと呼び、それらはフォーカス事象ハンドラオ
ブジェクトクラス内の全てのフォーカス事象ハンドラオ
ブジェクトに共通する機能性に関して、抽象ベースクラ
スを提供するフォーカス事象ハンドラオブジェクトクラ
スに属する。そのような特徴の1つは、ほぼ全てのフォ
ーカス事象ハンドラオブジェクトが、フォーカス転送プ
ロトコルを介してシブリング(sibling)フォーカス事象
ハンドラオブジェクトの間でフォーカスを転送すること
である。
【0150】フォーカス事象ハンドラオブジェクトクラ
スは、事象ハンドラオブジェクトクラスの機能性の全て
を継承する。
【0151】ここで説明する方法に従えば、フォーカス
事象ハンドラオブジェクトクラスのインターフェースは
次の通りである。
【0152】「fh_giver」:これは使用されるフォーカ
ス転送プロトコルの一方のサイド(即ち、センダサイ
ド)を表現する。
【0153】「fh_taker」:これは使用されるフォーカ
ス転送プロトコルの一方のサイド(即ち、レシーバサイ
ド)を表現する。
【0154】各々のフォーカス事象ハンドラオブジェク
トと関連する呼び出し手続きは、そのフォーカス事象ハ
ンドラオブジェクトと関連する引数を供給して、ベース
事象ハンドラオブジェクトクラスの呼び出し手続きを呼
び出すように構成されている。フォーカス事象ハンドラ
オブジェクトは、直接に具体化されないのが好ましい。
【0155】当該技術では良く知られているドロップダ
ウンメニューは、一般にグラフィカルユーザインターフ
ェースと関連しており、キーボード事象に応答すること
ができる。このようなメニューは、一般にアクティブ
(即ち、フォーカスされた)コンポーネントと、いくつ
かのイナクティブ(inactive)コンポーネントとを有す
る。従って、ここで説明する方法においては、1つ或い
はそれ以上のグラフィカルオブジェクトコンポーネント
を含むグラフィカルユーザインターフェースシステムの
個別の画面と、現在見えている画面を指示する包括画面
とを表現するために、メニュー項目事象ハンドラオブジ
ェクトクラスと、メニュー画面事象ハンドラオブジェク
トクラスを使用することができる。メニュー項目事象ハ
ンドラオブジェクトとメニュー画面事象ハンドラオブジ
ェクトは、先に説明したメニュー項目コントロール
(「レシーバ」)プロトコルに従って通信できる。
【0156】メニュー項目事象ハンドラオブジェクトク
ラスとメニュー画面事象ハンドラオブジェクトは、共
に、フォーカス事象ハンドラオブジェクトクラスの全て
の機能性を継承する。メニュー項目事象ハンドラオブジ
ェクトクラスとメニュー画面事象ハンドラオブジェクト
クラスは、メニュー項目コントロール(「レシーバ」)
プロトコルに準拠した「mih_parent」と呼ばれるインタ
ーフェースを含む。メニュー項目事象ハンドラオブジェ
クトクラスとメニュー画面事象ハンドラオブジェクトク
ラスは、事象ハンドラオブジェクトクラスの上に余剰デ
ータフィールドを更に有する。余剰データフィールドは
次の通りである。
【0157】mih_siblings:これは、フォーカスを与え
られることが可能である事象ハンドラオブジェクトを表
現するために事象ハンドラオブジェクト内部に含まれる
ことができるテーブルを表現する。
【0158】mih_ns:これは、事象ハンドラオブジェク
ト内に含まれることができるネームスペース(namespac
e)を表現する。メニュー項目事象ハンドラオブジェクト
はこのネームスペースの状態を変更することができる。
【0159】メニュー項目事象ハンドラオブジェクトク
ラスとメニュー画面事象ハンドラオブジェクトクラス
は、「connect_sibling」と呼ばれる手続きを含む。こ
の「connect_sibling」手続きは、2つのメニュー項目
事象ハンドラオブジェクトの間の所望のフォーカス転送
プロトコルを識別するためのフォーカス転送識別子及び
関連するサイド識別子で使用すべき2つのメニュー項目
事象ハンドラオブジェクト(即ち、第1のフォーカス事
象ハンドラオブジェクト及び第2のフォーカス事象ハン
ドラオブジェクト)を識別する。第1及び第2のフォー
カス事象ハンドラオブジェクトは、フォーカス転送プロ
トコルに従って通信する。第1のフォーカス事象ハンド
ラオブジェクトに対する第2のフォーカス事象ハンドラ
オブジェクトの位置を指定するサイド識別子がナル(NUL
L)でない場合、第1のフォーカス事象ハンドラオブジェ
クトと関連するサイド識別子が第2のフォーカス事象ハ
ンドラオブジェクトへマッピングするように、第1のフ
ォーカス事象ハンドラオブジェクトのシブリングテーブ
ル(即ち、mih_siblings)が変更される。このように、
第1のフォーカス事象ハンドラオブジェクトのインター
フェース「fh_giver」が第2のフォーカス事象ハンドラ
オブジェクトのインターフェース「fh_taker」に結合さ
れる。同様に、第2のフォーカス事象ハンドラオブジェ
クトに対する第1のフォーカス事象ハンドラオブジェク
トの位置を指定するサイド識別子がNULLでない場合、第
2のフォーカス事象ハンドラオブジェクトと関連するサ
イド識別子が第1のフォーカス事象ハンドラオブジェク
トへマッピングするように、第2のフォーカス事象ハン
ドラオブジェクトのシブリングテーブル(即ち、mih_si
blings)が変更される。このように、第2のフォーカス
事象ハンドラオブジェクトのインターフェース「fh_giv
er」が、第1のフォーカス事象ハンドラオブジェクトの
インターフェース「fh_taker」に結合される。第1及び
第2のフォーカス事象ハンドラオブジェクトの各々に対
応する呼び出し手続きは、各々の事象ハンドラオブジェ
クトにより受信される信号ごとに、インターフェース識
別子が「mih_parent」又は「fh_taker」であることを判
定するために、インターフェース識別子を検査する。
【0160】受信側メニュー項目事象ハンドラオブジェ
クトは、受信されたインターフェース識別子が「mih_pa
rent」であるか否かを判定する。受信側メニュー項目事
象ハンドラオブジェクトの呼び出し手続きは、供給され
たメッセージ識別子を検査する。メッセージ識別子が
「left」、「up」、「right」又は「down」のうちの1
つであれば、その信号識別子に対応する事象ハンドラオ
ブジェクトを発見するために、受信側メニュー項目事象
ハンドラオブジェクトと関連するシブリングテーブルに
問い合わせる。対応する事象ハンドラオブジェクトが存
在する場合、受信側事象ハンドラオブジェクトと関連す
る参照、「fh_giver」インターフェース識別子、受信側
事象ハンドラオブジェクトのシブリング事象ハンドラオ
ブジェクト、「set_focus」メッセージ識別子、及び1
つの余剰引数を含むアレイによってemitsingle手続きを
呼び出す。この余剰引数は、元来のメッセージ識別子
(「left」など)である。メッセージ識別子が「actio
n」であれば、メニュー項目事象ハンドラオブジェクト
のアニメートステートマシーンネームスペースはループ
方法を実行し、メニュー項目事象ハンドラオブジェクト
の親オブジェクトが「pressed」信号を送信される。信
号識別子が「set_visibility」である場合には、メニュ
ー項目事象ハンドラオブジェクトのアニメートステート
マシーンネームスペースはgoto_state手続きを実行す
る。
【0161】図21は、第1のメニュー項目事象ハンド
ラオブジェクト(即ち、送信側オブジェクト)からメッ
セージを受信するメソッド2100を示す流れ図であ
る。メッセージは、メッセージ識別子と、インターフェ
ース識別子とを含む。このメソッド2100は、メニュ
ー項目事象ハンドラオブジェクトクラスとメニュー画面
事象ハンドラオブジェクトクラスの双方により使用され
る。メソッド2100はコンピュータシステム600の
ハードディスクドライブ610に常駐するソフトウェア
を使用して実現され、且つその実行時にプロセッサユニ
ット605により読み取られ、制御されるのが好まし
い。メソッド2100は、第1のメニュー項目事象ハン
ドラオブジェクトへ送信されたメッセージと関連するイ
ンターフェース識別子を、第2の事象ハンドラオブジェ
クト(即ち、受信側メニュー項目事象ハンドラオブジェ
クト)により検査する第1のステップ2103で始ま
る。インターフェース識別子が送信側メニュー項目事象
ハンドラオブジェクトによりメニュー項目コントロール
(「レシーバ」)プロトコルが使用されていることをを
指示する「mih_parent」である場合、メソッド2100
はステップ2105へ進む。そうでない場合には、メソ
ッド2100はステップ2153へ進む。
【0162】ステップ2105で、メソッド2100は
メッセージ識別子に関してプロセッサ605により判定
される9つの選択肢の1つに応じて処理を継続する。
【0163】メッセージ識別子が「left」、「up」、
「right」又は「down」のうちの1つである場合、メソ
ッド2100は次のステップ2107へ進む。
【0164】ステップ2107でメッセージ識別子が
「action」である場合、メソッド2100はステップ2
115へ進む。
【0165】ステップ2107でメッセージ識別子が
「set_visibility」である場合、メソッド2100はス
テップ2120へ進む。
【0166】ステップ2107でメッセージ識別子が
「set_state」である場合、メソッド2100はステッ
プ2137へ進む。ステップ2107でメッセージ識別
子が「get_state」である場合、メソッド2100はス
テップ2150へ進む。
【0167】そうでない場合には、メソッド2100は
ステップ2165へ進む。
【0168】ステップ2107で、メッセージ識別子
(即ち、「left」、「up」、「right」又は「down」に
関して、受信側メニュー項目事象ハンドラオブジェクト
に対してメモリ606に格納されているシブリングテー
ブルにエントリが存在する場合、メソッド2100はス
テップ2110へ進む。そうでない場合には、メソッド
2100は終結する。ステップ2110で、信号識別子
がどの関連メニュー項目事象ハンドラオブジェクトへマ
ッピングされたかを判定するために、プロセッサ605
によりシブリングテーブルを検査する。次にステップ2
113で、受信側メニュー項目事象ハンドラオブジェク
トにより、受信側メニュー項目事象ハンドラオブジェク
トのシブリングメニュー項目事象ハンドラオブジェクト
へ「set_focus」メッセージを送信して、メソッド21
00は終結する。
【0169】ステップ2115で、受信側メニュー項目
事象ハンドラオブジェクトにより、メニュー項目事象ハ
ンドラオブジェクトと関連するグラフィカルオブジェク
トに対してループ手続きを呼び出す。次にステップ21
17で、プロセッサ605により、受信側メニュー項目
事象ハンドラオブジェクトから親メニュー項目事象ハン
ドラオブジェクトへ「pressed」信号を送信して、メソ
ッド2100は終結する。
【0170】ステップ2120で、プロセッサ605に
より、送信側メニュー項目事象ハンドラオブジェクトの
呼び出し手続きから供給された第1の余剰引数をブール
フラグとして読み取り、フラグがセットされているか否
かを判定する。フラグがセットされていれば、メソッド
2100はステップ2123へ進む。そうでない場合に
は、メソッド2100はステップ2130へ進む。ステ
ップ2123で、受信側メニュー項目事象ハンドラオブ
ジェクトの可視フラグがセットされていれば、メソッド
2100は終結する。可視フラグは、受信側メニュー項
目事象ハンドラオブジェクトと関連するグラフィカルオ
ブジェクトが、ホストグラフィカルユーザインターフェ
ースの表示画面で見えていることを指示する。可視フラ
グがセットされていない場合には、メソッド2100は
ステップ2125へ進み、受信側メニュー項目事象ハン
ドラオブジェクトの可視フラグをセットする。次にステ
ップ2117で、受信側メニュー項目事象ハンドラオブ
ジェクトと関連するグラフィカルオブジェクトを、ホス
トグラフィカルユーザインターフェースの画面(例え
ば、表示装置614)で見えるようにして、メソッド2
100は終結する。
【0171】ステップ2130で、受信側メニュー項目
事象ハンドラオブジェクトの可視フラグがクリアされて
いれば、メソッド2100は終結する。可視フラグがク
リアされていなければ、メソッド2100はステップ2
133へ進み、受信側メニュー項目事象ハンドラオブジ
ェクトの可視フラグをプロセッサ605によりクリアす
る。次にステップ2135で、受信側メニュー項目事象
ハンドラオブジェクトと関連するグラフィックスをホス
トグラフィカルユーザインターフェースの画面で見える
ようにして、メソッド2100は終結する。
【0172】ステップ2137で、送信側メニュー項目
事象ハンドラオブジェクトの呼び出し手続きにより供給
された第1の余剰引数が見えないかを判定するために、
第1の余剰引数を読み取る。ステップ2137の結果が
「真」であれば、メソッド2100はステップ2147
へ進み、プリントメッセージを生成して、プロセスを終
結する。「偽」である場合には、メソッド2100はス
テップ2140へ進み、受信側メニュー項目事象ハンド
ラオブジェクトの「mih_State」フィールドを第1の余
剰引数の値に変更する。次にステップ2143で、受信
側メニュー項目事象ハンドラオブジェクトと関連するグ
ラフィカルオブジェクトが見えている場合、メソッド2
100はステップ2145へ進む。そうでない場合に
は、メソッド2100は終結する。ステップ2145
で、受信側メニュー項目事象ハンドラオブジェクトと関
連するグラフィカルオブジェクトを、第1の余剰引数に
より要求される状態に設定する。
【0173】ステップ2150で、メモリ606に格納
されているアレイの合成結果に設定し、且つ「mih_Stat
e」の値を含む値を送信側メニュー項目事象ハンドラオ
ブジェクトに戻す。
【0174】ステップ2153で、メッセージ識別子が
「set_focus」である場合、メソッド2100はステッ
プ2155へ進む。そうでない場合には、メソッド21
00はステップ2165へ進む。ステップ2155で、
受信側メニュー項目事象ハンドラオブジェクトと関連す
るグラフィカルオブジェクトが見えている場合、メソッ
ド2100はステップ2157へ進む。そうでない場合
には、メソッド2100はステップ2160へ進む。ス
テップ2157で、メニュー項目事象ハンドラオブジェ
クトにより「mih_parent」インターフェースを利用して
「focus_transferred」メッセージを生成し、メソッド
2100は終結する。
【0175】ステップ2160で、受信側メニュー項目
事象ハンドラオブジェクトのシブリングテーブルが第1
の余剰引数を別の事象ハンドラオブジェクトへマッピン
グする場合、メソッド2100はステップ2163へ進
む。そうでない場合には、メソッド2100は終結す
る。ステップ2163で、受信側メニュー項目事象ハン
ドラオブジェクトにより「fh_giver」インターフェース
を使用して「set_focus」メッセージを生成し、且つ「s
et_focus」メッセージをシブリングの事象ハンドラオブ
ジェクトへ送信する。ステップ2163の後、メソッド
2100は終結する。
【0176】ステップ2165で、ベース事象ハンドラ
オブジェクトの呼び出し手続きによりフォーカス事象ハ
ンドラオブジェクトの呼び出し手続きを呼び出して、メ
ソッド2100は終結する。
【0177】アプリケーションプログラムのグラフィカ
ルユーザインターフェースは、多くの場合、表示装置6
14などの表示装置に一度に表示できるいくつかの異な
る画面から構成されている。各々の画面は、現在見えて
いる画面がアクティブ(即ち、フォーカスされた)コン
ポーネントを有するように、1組の関連するグラフィカ
ルオブジェクトコンポーネントを有することができる。
従って、ここで説明する方法においては、包括画面を表
現するためにメニュー画面事象ハンドラオブジェクトを
使用する。
【0178】メニュー画面事象ハンドラオブジェクトク
ラスは、先に説明したフォーカス事象ハンドラオブジェ
クトクラスの全ての機能性を継承する。メニュー画面事
象ハンドラオブジェクトクラスのメニュー画面事象ハン
ドラオブジェクトは、メニュー画面コントロールプロト
コルに従ってメニュー項目事象ハンドラオブジェクトと
通信できる。
【0179】メニュー画面事象ハンドラオブジェクトク
ラスは、次のインターフェースを含む。
【0180】「mh_parent」:これはメニューコントロ
ール(「レシーバ」)プロトコルのレシーバサイドを表
現する。
【0181】「mh_child」:これはメニュー項目コント
ロール(「センダ」)プロトコルのセンダサイドを表現
する。
【0182】メニュー画面事象ハンドラオブジェクトク
ラスは、先に説明したフォーカス事象ハンドラオブジェ
クトに対して次のように余剰データフィールドを含む。
【0183】mh_siblings:これは、フォーカスを与え
られることができる全ての事象ハンドラオブジェクトを
列挙したメニュー画面事象ハンドラオブジェクト内に含
まれるテーブルを表現する。
【0184】mh_ns:これは、メニュー画面事象ハンド
ラオブジェクト内に含まれることができるネームスペー
スを表現する。メニュー画面事象ハンドラオブジェクト
はこのネームスペースの状態を変化させることができ
る。
【0185】mh_focused:このフィールドは、どの子メ
ニュー項目事象ハンドラオブジェクトにキーボード事象
を与えるべきかを記録する。
【0186】メニュー画面事象ハンドラオブジェクトク
ラスは、「connect_sibling」と呼ばれる余剰手続きを
伴って構成されている。この「connect_sibling」手続
きは、シブリングテーブルが第1のメニュー画面事象ハ
ンドラオブジェクトを第2のメニュー画面事象ハンドラ
オブジェクトへマッピングするように、第1のメニュー
画面事象ハンドラオブジェクトのシブリングテーブルの
エントリを変更するように構成されている。
【0187】第1のメニュー画面事象ハンドラオブジェ
クトの呼び出し手続きは各受信メッセージを検査し、メ
ッセージ識別子が「mh_parent」、「fh_taker」又は「m
h_child」のうちの1つである場合、connect_sibling手
続きを起動する。図22は、第1のメニュー画面事象ハ
ンドラオブジェクト(即ち、送信側オブジェクト)から
メッセージを受信するメソッド2200を示す流れ図で
ある。先に説明した通り、メッセージは、メッセージ識
別子と、インターフェース識別子とを含む。このメソッ
ド2200は、メニュー画面事象ハンドラオブジェクト
クラスにより使用される。メソッド2200は、第2の
メニュー画面事象ハンドラオブジェクト(即ち、受信側
事象ハンドラオブジェクト)へ送信されるメッセージと
関連するインターフェース識別子を、受信側メニュー画
面事象ハンドラオブジェクトにより検査する第1のステ
ップ2205で始まる。インターフェース識別子が送信
側メニュー画面事象ハンドラオブジェクトによりメニュ
ーコントロール(「レシーバ」)プロトコルが使用され
ていることを指示する「mh_parent」である場合、メソ
ッド2200はステップ2210へ進む。
【0188】ステップ2210で、メソッド2200は
メッセージ識別子に関わる6つの選択肢のうちの1つに
応じて処理を継続する。
【0189】メッセージ識別子が「left」、「up」、
「right」又は「down」のいずれか1つであれば、メソ
ッド2200は次のステップ2215へ進む。
【0190】ステップ2210でメッセージ識別子が
「set_visibility」であれば、メソッド2200はステ
ップ2220へ進む。
【0191】そうでない場合には、メソッド2200は
ステップ2270へ進む。
【0192】ステップ2215で、受信側メニュー画面
事象ハンドラオブジェクトにより、現在フォーカスを有
する子メニュー項目事象ハンドラオブジェクトへメッセ
ージを再度送信する。
【0193】ステップ2220で、送信側メニュー画面
事象ハンドラオブジェクトの呼び出し手続きから供給さ
れた第1の余剰引数をフラグとして読み取り、フラグが
セットされているか否かを判定する。フラグがセットさ
れていれば、メソッド220はステップ2225へ進
む。そうでない場合には、メソッド2200はステップ
2235へ進む。ステップ2225で、受信側メニュー
画面事象ハンドラオブジェクトは、「set_visibility」
メッセージを全ての子メニュー項目事象ハンドラオブジ
ェクトへ送信して、各々の子メニュー項目事象ハンドラ
オブジェクトへセットされた引数を供給する。次にステ
ップ2230で、各々の子メニュー項目事象ハンドラオ
ブジェクトと関連する全てのグラフィカルオブジェクト
が、ホストグラフィカルユーザインターフェースで見え
るようになる。
【0194】ステップ2235で、受信側メニュー画面
事象ハンドラオブジェクトは、「set_visibility」メッ
セージを全ての子メニュー項目事象ハンドラオブジェク
トへ送信して、各々の子メニュー項目事象ハンドラオブ
ジェクトへクリアされた引数を供給する。次にステップ
2240で、各々の子メニュー項目事象ハンドラオブジ
ェクトと関連する全てのグラフィカルオブジェクトが、
ホストグラフィカルユーザインターフェースで見えなく
なる。
【0195】ステップ2270で、ベース事象ハンドラ
オブジェクトの呼び出し手続きによりフォーカス事象ハ
ンドラオブジェクトの呼び出し手続きを呼び出して、メ
ソッド2200は終結する。
【0196】ステップ2205で、インターフェース識
別子が送信側メニュー画面事象ハンドラオブジェクトに
よりフォーカス転送(「レシーバ」)プロトコルが使用
されていることを指示する「fh_taker」である場合、メ
ソッド2200はステップ2245へ進む。ステップ2
245で、メッセージ識別子が「set_focus」であれ
ば、メソッド2200はステップ2250へ進む。そう
でない場合には、メソッド2200は先に説明したよう
にステップ2270へ進む。ステップ2250では、送
信側メニュー画面事象ハンドラオブジェクトにより「mh
_parent」インターフェースを利用して「focus_transfe
rred」メッセージが生成され、メソッド2200は終結
する。
【0197】ステップ2205で、インターフェース識
別子が送信側メニュー画面事象ハンドラオブジェクトに
よりメニュー項目コントロール(「センダ」)プロトコ
ルが使用されていることを指示する「mh_child」である
場合、メソッド2200はステップ2255へ進む。ス
テップ2255で、メッセージ識別子が「focus_transf
erred」であれば、メソッド2200はステップ226
0へ進む。そうでない場合には、先に説明したようにス
テップ2270へ進む。ステップ2260では、メニュ
ー画面事象ハンドラオブジェクトの「mh_focused」フィ
ールドを、その信号の責務を負っていた子メニュー項目
事象ハンドラオブジェクトを参照するように変更する。
次にステップ2265で、キーボードフォーカスを有す
る、現在フォーカスされている子メニュー画面事象ハン
ドラオブジェクトに対応する状態を指定するために、受
信側メニュー画面事象ハンドラオブジェクトは「mh_chi
ld」インターフェースを使用して全ての子メニュー画面
事象ハンドラオブジェクトへ「set_state」メッセージ
を送信する。
【0198】ここで説明する方法において利用されるも
う1つの事象ハンドラオブジェクトは、メニュースイッ
チハンドラオブジェクトクラスと呼ばれる。このメニュ
ースイッチハンドラオブジェクトクラスは、事象ハンド
ラオブジェクトクラスの全ての機能性を継承する。この
メニュースイッチハンドラオブジェクトクラスは、先に
挙げた「keyboardraw」プロトコルを使用してメニュー
スイッチ事象ハンドラオブジェクトと通信できる。メニ
ュースイッチハンドラオブジェクトクラスのインターフ
ェースは次の通りである。
【0199】msh_raw_input:これは、keyboardraw
(「レシーバ」)プロトコルのレシーバサイドに準拠し
たメッセージを表現する。
【0200】mh_child:これは、メニューコントロール
(「センダ」)プロトコルのセンダサイドに準拠したメ
ッセージを表現する。
【0201】このメニュースイッチ事象ハンドラオブジ
ェクトクラスは、現在フォーカスを有するメニュー項目
事象ハンドラオブジェクト(即ち、メニュースイッチハ
ンドラによりキーボード事象を送信されているオブジェ
クト)と関連する参照を含むフィールド「msh_focuse
d」を含む。メニュースイッチハンドラオブジェクトと
対応するインターフェース識別子は、メニューコントロ
ールプロトコルにより「msh_child」インターフェース
に結合される。メニュースイッチハンドラオブジェクト
の呼び出し手続きは、受信されるメッセージごとにイン
ターフェース識別子を検査する。
【0202】図23は、第1のメニュースイッチ事象ハ
ンドラオブジェクト(即ち、送信側オブジェクト)から
メッセージを受信するメソッド2300を示す流れ図で
ある。先に説明した通り、メッセージはメッセージ識別
子と、インターフェース識別子とを含む。このメソッド
2300は、メニュースイッチ事象ハンドラオブジェク
トクラスにより使用される。このメソッド2300は、
第2のメニュースイッチ事象ハンドラオブジェクト(即
ち、受信側事象ハンドラオブジェクト)へ送信された、
メッセージと関連するインターフェース識別子を第2の
メニュースイッチ事象ハンドラオブジェクトにより検査
する第1のステップ2305で始まる。インターフェー
ス識別子が、送信側メニュースイッチ事象ハンドラオブ
ジェクトによりメニューコントロール(「レシーバ」)
プロトコルが使用されていることを指示する「mh_chil
d」である場合、メソッド2300はステップ2310
へ進む。ステップ2310で、メッセージ識別子が「fo
cus_transferred」であれば、メソッド2300はステ
ップ2315へ進む。ステップ2315で、受信側メニ
ュースイッチ事象ハンドラオブジェクトは、メッセージ
を送信した関連するメニュースイッチ事象ハンドラオブ
ジェクトへ「set_visibility」メッセージを送信して、
セットされた引数をメニュースイッチ事象ハンドラオブ
ジェクトに供給する。次にステップ2320で、受信側
メニュースイッチ事象ハンドラオブジェクトは、現在キ
ーボードフォーカスを有するメニュースイッチ事象ハン
ドラオブジェクトへ「set_visibility」メッセージを送
信して、クリアされた引数をメニュースイッチ事象ハン
ドラオブジェクトに供給する。このクリアされた引数
は、フォーカスを有するメニュースイッチ事象ハンドラ
オブジェクトがフォーカスを失い、見えなくなるべきで
あることを指示する。次にステップ2325で、メニュ
ースイッチ事象ハンドラオブジェクトの「mh_focused」
フィールドを、メッセージを送信する責務を負っていた
メニュー画面事象ハンドラオブジェクトを参照するよう
に変更する。次にステップ2330で、プロセッサ60
5により成功コードを生成して、メソッド2300は終
結する。
【0203】ステップ2375で、ベース事象ハンドラ
オブジェクトの呼び出し手続きにより、事象ハンドラオ
ブジェクトの呼び出し手続きを呼び出し、メッセージを
ベース事象ハンドラオブジェクトへ送り出す。ステップ
2375の後、メソッド2300は終結する。
【0204】ステップ2305で、インターフェース識
別子が、送信側メニュースイッチ事象ハンドラオブジェ
クトによりkeyboardraw(「レシーバ」)プロトコルが
使用されていることを指示する「msh_raw_input」であ
る場合、メソッド2300はステップ2335へ進む。
ステップ2335で、メッセージ識別子がキーが押し下
げられたことを指示する「keydown」であれば、メソッ
ド2300はステップ2340へ進む。そうでない場合
には、メソッド2300は先に説明したようにステップ
2375へ進む。
【0205】ステップ2340で、メソッド2300は
メッセージの第1の余剰引数の少なくとも6つの選択肢
のうちの1つに応じて処理を継続する。
【0206】ステップ2340で、メッセージと共に送
信された第1の余剰引数が「13」又は「37」から
「40」の1つではない場合、メソッド2300は先に
説明したようにステップ2375へ進む。
【0207】ステップ2340で、例えば、第1の余剰
引数がコンピュータシステム600のキーボード602
で押し下げられたエンターキー(即ち、一般に「1
3」)を表している場合、メソッド2300はステップ
2345へ進み、アクション(action)メッセージをフォ
ーカスを有するメニュー画面へ送信する。このアクショ
ンメッセージは、メニュー画面に変化を生じさせる。例
えば、アプリケーションの1つのグラフィカルオブジェ
クトが見える状態から見えない状態へ、又は逆に見えな
い状態から見える状態に変化しても良いし、或いは現在
見えている画面が見えなくなり、別の画面が見えるよう
になっても良い。次にステップ2370で、プロセッサ
605により成功メッセージを生成して、プロセスは終
結する。
【0208】ステップ2340で、例えば、第1の余剰
引数が、コンピュータシステム600のキーボード60
2の左向き矢印キー(即ち、一般に「37」)を表現し
ている場合、メソッド2300はステップ2350へ進
み、フォーカスを有するメニュー画面へ「left」メッセ
ージを送信する。この「left」メッセージは、現在見え
ているメニュー画面と関連するメニュー画面事象ハンド
ラオブジェクトに生じ、メッセージを現在フォーカスさ
れているメニュー項目事象ハンドラオブジェクトに引き
継ぐ。次のステップ2370で、プロセッサ605によ
り成功メッセージを生成して、プロセスは終結する。
【0209】ステップ2340で、第1の余剰引数がコ
ンピュータシステム600のキーボード602の上向き
矢印キー(即ち、一般に「38」)を表現している場
合、メソッド2300はステップ2355へ進み。フォ
ーカスを有するメニュー画面へ「up」メッセージを送信
する。この「up」メッセージは、現在見えているメニュ
ー画面と関連するメニュー画面事象ハンドラオブジェク
トに生じ、メッセージを現在フォーカスされているメニ
ュー項目事象ハンドラオブジェクトに引き継ぐ。次のス
テップ2370で成功メッセージを生成して、プロセス
は終結する。
【0210】ステップ2340で、第1の余剰引数がコ
ンピュータシステム600のキーボード602の右向き
矢印キー(即ち、一般に「39」)を表現している場
合、メソッド2300はステップ2360へ進み、プロ
セッサ605によりフォーカスを有するメニュー画面へ
「right」メッセージを送信する。この「right」メッセ
ージは、現在見えているメニュー画面と関連するメニュ
ー画面事象ハンドラオブジェクトに生じ、メッセージを
現在フォーカスされているメニュー項目事象ハンドラオ
ブジェクトに引き継ぐ。次のステップ2370で、プロ
セッサ605により成功メッセージを生成して、プロセ
スは終結する。
【0211】ステップ2340で、第1の余剰引数がコ
ンピュータシステム600のキーボード602の下向き
矢印キー(即ち、一般に「40」)を表現している場
合、メソッド2300はステップ2365へ進み、フォ
ーカスを有するメニュー画面へ「down」メッセージを送
信する。次のステップ2370で成功メッセージを生成
して、プロセスは終結する。
【0212】先に説明した通り、アニメートステートマ
シーンが設計者により形成される場合、アニメートステ
ートマシーンの状態の1つは初期状態として定義され
る。コントロールの視覚外観は、ソース状態になる初期
状態で定義された外観であるように設定される。ユーザ
がコントロールと対話するとき、一般に、そのコントロ
ールの視覚外観に変化があり、新たな視覚外観はアニメ
ートステートマシーンの状態の1つにより表現される。
従って、ソース状態から所望の目標状態への状態変化を
要求するようにコントロールを構成することが可能であ
る。そのようなコントロールは、1つ或いはそれ以上の
「waystates(中間状態)」を経て現在状態から新たな
状態へ状態を変化させるように構成することもでき、各
々の中間状態は、現在状態と新たな状態との間の遷移中
の対応する遷移ポイントにおけるコントロールの視覚外
観を表す。アニメートステートマシーンで中間状態を使
用することにより、設計者は2つ以上の状態の間での移
動に複数の経路を利用してアニメーションを定義できる
ようになり、従って、有限ステートマシーン固有の制限
(即ち、限られた数の状態に限定されていた)を受ける
ことはない。そのようなアニメーションは、コントロー
ルを限られた数の可能な休止状態に制限することなく、
様々な態様で並進移動、回転、拡大縮小又は変形が可能
であるコントロールを定義するのに特に有用である。
【0213】図24は、グラフィカルユーザインターフ
ェースのコントロールと関連するアニメートステートマ
シーンに関して新たな目標状態に至る経路を判定する別
のメソッド2400を示す流れ図である。メソッド20
0とは異なり、メソッド2400は先に説明したような
0又は1つ以上の中間状態に基づいてアニメートステー
トマシーンの経路を判定する。このメソッド2400
は、次の中間状態に到達するために要求される遷移の最
小の数に基づいて次の中間状態に至る経路を判定する。
メソッド2400はコンピュータシステム600のハー
ドディスクドライブ610に常駐されており、その実行
時にプロセッサ605により読み取られ、制御されるの
が好ましい。このメソッドはステップ2405で始ま
り、ステップ2405で、プロセッサ605がアニメー
トステートマシーンについて調べるべき中間状態が存在
すると判定した場合、メソッド2400はステップ24
10へ進む。そうでない場合には、メソッド2400は
ステップ2440へ進み、メソッド200のステップに
従って、アニメートステートマシーンの新たな目標状態
に至る経路を判定する。ステップ2410で、アニメー
トステートマシーンの第1の中間状態に至る経路を判定
する。ステップ2410では、メソッド200を使用し
て経路を判定し、その場合、ソース状態は現在状態であ
り、目標状態は第1の中間状態である。次にステップ2
415で、アニメートステートマシーンにより調べるべ
き中間状態がまだ存在するとプロセッサ605が判定し
た場合、メソッド2400はステップ2420へ進む。
そうでない場合には、メソッド2400はステップ24
30へ進む。ステップ2420で、プロセッサ605
は、現在アニメート中の経路の現在状態とコントロール
の第1の中間状態との間の状態遷移の最小の数をメソッ
ド100を使用して判定する。メソッド2400は次の
ステップ2425へ進み、ステップ2420で判定した
経路をコントロールの現在経路に追加して、メソッド2
400はステップ2415に戻る。
【0214】ステップ2430では、最後の中間状態と
目標状態との間の経路をメソッド100を使用して判定
する。このメソッド2400は、次のステップ2435
へ進み、ステップ2430で判定した経路をコントロー
ルの現在経路に追加して、メソッド2400は終結す
る。
【0215】図1から図5及び図14から図24を参照
して説明した方法をホストグラフィカルユーザインター
フェースシステムと関連させてアプリケーションプログ
ラムの一部として実現することが可能である。次に、図
7から図13を参照して、そのようなアプリケーション
プログラムの一例を説明する。例示するアプリケーショ
ンプログラムは、デジタル画像編集作成アプリケーショ
ンプログラムとして構成されている。そのようなアプリ
ケーションプログラムに対して好ましいホストグラフィ
カルユーザインターフェースは、グラフィカルユーザイ
ンターフェースの主ウィンドウがMicrosoft(登録商
標)のWindows(登録商標)アプリケーションプログラ
ムであるMicrosoftのWindows(登録商標)グラフィカル
ユーザインターフェースである。この例のアプリケーシ
ョンプログラムは、以下の節で詳細に説明するいくつか
の事象ハンドラオブジェクトを使用する。例示するアプ
リケーションプログラムはコンピュータシステム600
のハードディスクドライブ610に常駐するソフトウェ
アを使用して実現され、且つその実行時にプロセッサユ
ニット605により読み取られ、制御されるのが好まし
い。アプリケーションプログラムは、例えば、キーボー
ド602からの入力メッセージを受信すると、key_down
手続きを呼び出すように構成されている。その後、key_
down手続きは、より高いレベルのメニュースイッチ事象
ハンドラオブジェクトの呼び出し手続きを呼び出して、
押し下げられたキーに対応する文字コードを供給する。
この呼び出し手続きは、特定のオブジェクトと関連する
手続きであり、その特定のオブジェクトが別のオブジェ
クトと通信することを望む場合に、その別のオブジェク
トを呼び出すように構成されている。このオブジェクト
の呼び出し手続きは別のオブジェクトの呼び出し手続き
に供給されるべき引数値のアレイと、手続きを継承する
クラスのオブジェクトを表現する識別子とを含む。メニ
ュースイッチ事象ハンドラオブジェクトは、どのメニュ
ー画面事象ハンドラオブジェクトへメッセージを送り出
すべきかを決定する。メニュー画面事象ハンドラオブジ
ェクトは変更すべきキーボードフォーカスを求める要求
と、フォーカスを有するメニュー項目事象ハンドラオブ
ジェクト(即ち、キーボード602からの全ての入力を
受け入れる)が応答すべきアクションを求める要求とを
識別する。
【0216】この例のアプリケーションプログラムは、
図7から図12を参照して以下に説明するように、いく
つかの異なる画面700,800,900,1000,
1100及び1200を含む。これらの画面は、コンピ
ュータシステム600の表示装置614に表示可能であ
る。ここで説明する方法によれば、各々の画面700,
800,900,1000,1100及び1200は、
関連する画面事象ハンドラオブジェクトを有し、且つ各
々の画面事象ハンドラオブジェクトはベースメニュー画
面事象ハンドラオブジェクトから取り出されるクラスの
1つのインスタンスである。
【0217】図7は、4つのメニュー項目701,70
2,703及び704を有するメニュー画面700を示
し、4つの項目701から704はそれぞれいくつかの
グラフィカルオブジェクトコンポーネントを使用して、
従来通りに表示装置614にレンダリングされる。以下
に説明するように、4つの項目701から704の各々
は、それぞれがアクティブ状態にある(即ち、その項目
と関連するグラフィカルオブジェクトコンポーネントが
見えており且つ項目がフォーカスを有する)とき、図
7、図8、図9及び図10にそれぞれ示す関連する画面
700,800,900及び1000を有する。更に、
これらのメニュー項目701から704の各々は、どの
メニュー画面がフォーカスを有するかを変更することに
よりアクション要求に応答する。
【0218】画面700は、アクティブな項目として項
目701を示す。ユーザは従来のようにマウス603又
はキーボード602の押下を利用することにより、項目
701から704の各々を選択できる。メニュー項目7
01から704は、それぞれ、「Copy(コピー)」ボタ
ン、「Edit(編集)」ボタン、「Services(サービ
ス)」ボタン及び「Presets(プリセット)」ボタンと
して構成されている。この例のアプリケーションプログ
ラムに従えば、項目701から704は、フォーカス要
求があったときに、フォーカスを最も近い隣接項目へ指
定の方向に移動させるように構成されている。例えば、
図13は、画面700が表示されている場合に、ユーザ
がキーボード602の下向き矢印キーを押したときに実
行されるプロセス1300を示すフローチャートであ
る。このプロセス1300は、コンピュータシステム6
00のハードディスクドライブ610に常駐されてお
り、且つその実行時にプロセッサ605により読み取ら
れ、制御されるのが好ましい。プロセス1300は、ユ
ーザがキーボード602の下向き矢印キーを押し、ホス
トグラフィカルユーザインターフェースが、そのキーボ
ードの押下の結果として発生する引数を解釈する目的で
規定されている機能を呼び出すメッセージを、アプリケ
ーションプログラムへ送信するステップ1301で始ま
る。次にステップ1303で、機能はトップレベルメニ
ュースイッチ事象ハンドラオブジェクトの呼び出し(inv
oke)手続きを呼び出して、インターフェース識別子「ms
h_raw_input」、信号識別子「key_down」、及び押し下
げられたキーを識別する情報を供給する。ステップ13
05で、現在フォーカスを有する項目701と関連する
メニュー画面事象ハンドラオブジェクトを識別するデー
タフィールドを検査し、「down」メッセージを「msh_ch
ild」インターフェースを介してフォーカスを有するメ
ニュー画面事象ハンドラオブジェクトへ送信する。
【0219】次にステップ1307で、項目701と関
連するメニュー画面事象ハンドラオブジェクトは、メニ
ュー画面事象ハンドラオブジェクトと関連する「mh_par
ent」インターフェースを介してメッセージを受信す
る。項目701と関連するメニュー画面事象ハンドラオ
ブジェクトの呼び出し手続きは、現在フォーカスを有す
るメニュー項目事象ハンドラオブジェクトを選択し、選
択されたメニュー項目事象ハンドラオブジェクトへ「mh
_child」インターフェースを介して「down」メッセージ
を再送信する。次にステップ1309で、選択されたメ
ニュー項目事象ハンドラオブジェクトは、選択されたメ
ニュー項目事象ハンドラオブジェクトと関連する(即
ち、項目701と関連する)「mih_parent」インターフ
ェースを介してメッセージを受信し、選択されたメニュ
ー項目事象ハンドラオブジェクトの呼び出し手続きは、
項目701と関連するメニュー項目事象ハンドラオブジ
ェクトから見て「down」方向にあるフォーカスの受け取
り手として記録されるシブリングメニュー項目事象ハン
ドラオブジェクトを選択する。次にステップ1311
で、シブリングメニュー項目事象ハンドラオブジェクト
が存在すれば、プロセス1300はステップ1313へ
進む。ステップ1313で、項目701と関連するメニ
ュー項目事象ハンドラオブジェクトは、「set_focus」
メッセージを「fh_giver」インターフェースを介してシ
ブリングメニュー項目事象ハンドラオブジェクトへ放出
する。このシブリングメニュー項目事象ハンドラオブジ
ェクトは、その信号をシブリングメニュー項目事象ハン
ドラオブジェクトと関連する「fh_taker」インターフェ
ースを介して受信し、項目701と関連するメニュー項
目事象ハンドラオブジェクトの呼び出し手続きは、キー
ボードの押下の結果として発生する引数により指定され
る方向(即ち、この例では下向き(down))に見て最も近
い隣接オブジェクトへ事象を再送信し、プロセス130
0はステップ1315へ進む。
【0220】シブリングメニュー項目事象ハンドラオブ
ジェクトが存在しない場合には、プロセス1300はス
テップ1311の後に直接にステップ1315へ進み、
項目701と関連するメニュー項目事象ハンドラオブジ
ェクトの呼び出し手続きは、項目701のメニュー項目
事象ハンドラオブジェクトと関連する「mih_parent」イ
ンターフェースを介して「focus_transferred」メッセ
ージを送信する。次にステップ1317で、項目701
と関連するメニュー画面事象ハンドラオブジェクトは、
そのメニュー画面事象ハンドラオブジェクトと関連する
「mh_child」インターフェースを介して「focus_transf
erred」メッセージを受信する。
【0221】次にステップ1319で、項目701と関
連するメニュー画面事象ハンドラオブジェクトの呼び出
し手続きは、全ての子メニュー画面事象ハンドラオブジ
ェクトへset_stateメッセージを放出して、関連するグ
ラフィカルオブジェクトがどの状態を変化すべきか(即
ち、アクティブ又はイナクティブ)を指示するための引
数を供給する。この例においては、項目702と関連す
る子メニュー項目事象ハンドラオブジェクトが、関連す
るグラフィカルオブジェクトの状態を変化させ、その結
果、図8に示すような画面800に変化する。
【0222】項目701に対するアクション要求の結
果、図11に示すような画面1100が表示される。画
面1100は2つの関連メニュー項目である「OK」11
01と、Cancel(キャンセル)1102とを含む。OK
項目1101に対するアクション要求は、印刷の過程に
おける複写機1103のアニメーションを表示させる。
Cancel項目1102に対するアクション要求は、フォー
カスを画面1100から先にフォーカスを有していたい
ずれかのメニュー画面(即ち、この例に従えば、画面7
00)への変化を生じさせる。
【0223】項目702に対するアクション要求の結
果、図12に示すような編集画面1200が表示され
る。編集画面1200は6つのメニュー項目1201か
ら1206を有し、そのうちの2つ(即ち、Scan(スキ
ャン)1201及びBack(戻る)1206)は常に見え
ている。残る4つのメニュー項目(即ち、Deskew120
2、Position(位置)1203、Size(サイズ)120
4及びPrint(印刷)1205)は、図12に示すよう
に、scan項目が起動されて初めて見えるようになる。編
集画面1200と関連する編集画面事象ハンドラオブジ
ェクトは、scan項目が起動されたときに画像が表示画面
に現れるように修正されたメニュー画面事象ハンドラオ
ブジェクトのサブクラスの1つのインスタンスである。
【0224】項目703に対するアクション要求の結
果、表示装置614にサービス画面(図示せず)が表示
される。サービス画面は合わせて4つのメニュー項目
(即ち、Order Toner(トナー注文)、Order Paper(用
紙注文)、Call Technician(サービスマンに連絡)及
びBack(戻る))を有する。Call Technician項目に対
するアクション要求は、ヘッドホンを身につけて話して
いる人物の映像を表示させる。Back項目に対するアクシ
ョン要求は、フォーカスされているメニュー画面を先に
フォーカスを有していたいずれかのメニュー画面に変化
させる。
【0225】項目704に対するアクション要求の結
果、プリセット画面(図示せず)が表示装置614に表
示される。プリセット画面は合わせて5つのメニュー項
目(即ち、Leave Form(フォームを残す)、Organizati
on Chart(組織表)、Telephone List(電話リスト)及
びBack(戻る))を有する。
【0226】図1から図24を参照して説明した方法
を、画像処理の分野で知られているように、アプリケー
ションプログラム中のモード事象により起動されるラジ
オボタンを構成するために使用することが可能である。
この場合、そのようなアプリケーションプログラムが入
力メッセージ(即ち、WM_MOUSEDOWN、WM_MOUSEUP又はWM
_MOUSEMOVEなどの周知の種類のメッセージ)を受信する
と、アプリケーションプログラムはmouse_down、mouse_
up及びmouse_moveと呼ばれる機能を、それぞれ呼び出そ
うと試みる。一般に、マウス事象を分配し且つマウス事
象に応答するために、ホストグラフィカルユーザインタ
ーフェースは2つのプロトコルを定義している。それら
2つのプロトコルを、以下、それぞれ「mouseraw」及び
「mousecooked」と呼ぶが、これらは生マウス事象と、
処理済マウス事象をそれぞれ処理するように構成されて
いる。生マウス事象(raw mouse events)という用語は、
後に事象ハンドラオブジェクトにより処理されることに
なる信号を発生させる、マウスボタンのクリックなどの
マウス事象を表す。処理済マウス事象(processed mouse
events)は、中間事象ハンドラオブジェクトにより処理
された後に事象ハンドラオブジェクトへ送り出されてい
たマウス事象である。ここで説明する方法においては、
「mouseraw」プロトコルは各々が「センダ」及び「レシ
ーバ」として識別される2つのサイドを有する、「親」
及び「子」として識別される2つのサイドを有するのが
好ましい。
【0227】以下、ラジオボタンと関連する生マウス事
象と処理済マウス事象を処理するための4つの事象ハン
ドラオブジェクトを説明する。それらをマウス分配事象
ハンドラオブジェクト、マウス領域事象ハンドラオブジ
ェクト、ラジオボタン事象ハンドラオブジェクト及びラ
ジオグループ事象ハンドラオブジェクトという。
【0228】マウス分配事象ハンドラオブジェクトは、
マウス事象を処理するために使用できる。このような事
象ハンドラオブジェクトは、mouserawプロトコルの
「親」サイドを使用するインターフェースと、mouseraw
プロトコルの「子」サイドを使用する別のインターフェ
ースとを有しているのが好ましい。ここで説明する方法
においては、マウス分配事象ハンドラオブジェクトは
「子」インターフェースに関するマウス事象の通知を受
信し、その通知をメッセージとしてマウス分配事象ハン
ドラオブジェクトの「親」インターフェースと関連する
少なくとも1つの事象ハンドラオブジェクトへ送り出
す。マウス分配事象ハンドラオブジェクトは、いくつか
の関連事象ハンドラオブジェクトのうちのどれが通知さ
れたマウス事象を受信すべきかを判定するために「ヒッ
ト試験」を実行するように情報を格納することができ
る。或いは、マウス分配事象ハンドラオブジェクトは、
関連するマウス分配事象ハンドラオブジェクトの1つが
通知されたマウス事象を受信するまで、送信側マウス事
象ハンドラオブジェクトと関連する各々の事象ハンドラ
オブジェクトへ順次マウス事象を送信することができ
る。
【0229】マウス領域事象ハンドラオブジェクトは、
生マウス事象を処理するために使用できる。マウス領域
事象ハンドラオブジェクトは、「mouseraw」プロトコル
の「子」サイドに準拠したインターフェースと、「mous
ecooked」プロトコルの「センダ」サイドに準拠した別
のインターフェースとを有しているのが好ましい。マウ
ス領域事象ハンドラオブジェクトは、「mouse_down」、
「mouse_up」及び「mouse_move」の各メッセージを受信
し、それらのメッセージに応答して「pressed」、「cli
cked」、「released」、「entered」及び「exited」の
各メッセージを発することができる。マウス領域事象ハ
ンドラオブジェクトと関連する呼び出し手続きを使用し
て、「pressed」、「clicked」、「released」、「ente
red」及び「exited」の各メッセージを放出するために
必要な処理を実行することができる。
【0230】ラジオボタン事象ハンドラオブジェクト
は、処理済マウス事象を受信するために使用できる。こ
のラジオボタン事象ハンドラオブジェクトは、処理済マ
ウス事象を受信するために「mousecooked」プロトコル
の「レシーバ」サイドに準拠したインターフェースを有
しているのが好ましい。ラジオボタン事象ハンドラオブ
ジェクトは、「state_changed」メッセージを放出し且
つ「set_state」メッセージを受信するために別のプロ
トコルを使用する別のインターフェースを有するのが好
ましい。このラジオボタン事象ハンドラオブジェクト
が、インターフェースを介して「clicked」メッセージ
を受信すると、ラジオボタン事象ハンドラオブジェクト
はそのラジオボタン事象ハンドラオブジェクトと関連す
るグラフィカルオブジェクトの状態を変化させ、且つ
「group member」インターフェースを介して「state_ch
anged」メッセージを放出する。
【0231】ラジオグループ事象ハンドラオブジェクト
は、「state_changed」メッセージを受信し且つ「set_s
tate」メッセージを放出するために使用できる。このよ
うな事象ハンドラオブジェクトは、「state_changed」
メッセージを受信し且つ「set_state」メッセージを放
出するためにプロトコルの一方のサイドを使用するイン
ターフェースを有する。ラジオグループ事象ハンドラオ
ブジェクトが「state_changed」メッセージを受信する
と、ラジオグループ事象ハンドラオブジェクトは、「se
t_state」メッセージをそのラジオグループ事象ハンド
ラオブジェクトと関連する他の全てのラジオボタン事象
ハンドラオブジェクトへ送信して、余剰引数としてセッ
トされたフラグを供給する。各々のラジオボタン事象ハ
ンドラオブジェクトが「set_state」信号を受信する
と、受信したラジオボタン事象ハンドラオブジェクトは
余剰引数を検査し、セットされたフラグを発見した時点
で、そのラジオボタン事象ハンドラオブジェクトと関連
するグラフィカルオブジェクトの状態をup状態に変化さ
せる。
【0232】ここで説明する方法においては、ラジオグ
ループ事象ハンドラオブジェクトとラジオボタン事象ハ
ンドラオブジェクトは、事象ハンドラオブジェクトと関
連するグラフィカルオブジェクトの状態に対する影響を
除いて、それらの事象ハンドラオブジェクトと関連する
どの包括アプリケーションの行動にも影響を及ぼさな
い。また、継承性を利用して追加のインターフェースを
有する可能性のあるラジオグループ事象ハンドラオブジ
ェクトのサブクラスを作成し、その結果、別の処理を実
行させることも可能である。
【0233】ここで説明する方法においては、プログラ
マは、グラフィカルオブジェクトを限られた数の状態を
有するステートマシーンとみなし、それらのグラフィカ
ルオブジェクトを状態間で切り替えることが可能であ
り、アプリケーションプログラムの中心にある機能性に
関して動作を開始させることができる。これに対し、設
計者は、グラフィカルオブジェクトを、状態間にアニメ
ート遷移を伴う、限られた数の状態を有するステートマ
シーンであるとみなす。従って、プログラマはグラフィ
カルオブジェクトの外観に関与する必要がなく、また、
設計者はグラフィカルオブジェクトが有する機能性の実
現に関与する必要がない。更に、ここで説明する方法で
は、設計者は、状態がどのように見えるか及び遷移が状
態間でグラフィカルオブジェクトの外観をどのように変
化させるかを記述することにより状態の外観と遷移を指
定することができ、これに対し、プログラマは状態と、
オブジェクトの状態の変化につれてオブジェクトの機能
がどのように異なるかのみに関与していれば良い。
【0234】図1から図24を参照して説明した方法
を、図1から図24の機能又は部分機能を実行する1つ
或いはそれ以上の集積回路などの専用ハードウェアで実
現しても良い。そのような専用ハードウェアはグラフィ
ックプロセッサ、デジタルシグナルプロセッサ、あるい
は1つ或いはそれ以上のマイクロプロセッサ及び関連メ
モリを含んでいても良い。
【0235】次に、アニメートステートマシーンに含ま
れるオブジェクトクラスについて先に説明した手続きを
更に詳細に説明する。
【0236】ここで説明する方法においては、アニメー
トステートマシーンは「addstate」、「removestat
e」、「ismemberstate」、「getstates」、「setstat
e」、「getstate」、「addtrackdef」、「removetrackd
ef」、「ismembertrackdef」、「gettrackdefs」、「ge
tquantum」、「calcroute」、「loop」、「update」及び
「hasroute」の関連手続きを有する。
【0237】「addstate」手続きは、自己に関連する参照
と、状態オブジェクト参照とを入力パラメータとして取
り出す。この「addstate」手続きは、対応する状態オブジ
ェクトをアニメートステートマシーンと関連する状態オ
ブジェクトのテーブルに追加する。
【0238】「removestate」手続きは、自己に関連する
参照と、状態オブジェクト参照とを入力パラメータとし
て取り出す。この「removestate」手続きは、アニメート
ステートマシーンと関連する状態オブジェクトのテーブ
ルから対応する状態オブジェクトを除去する。
【0239】「ismemberstate」手続きは、自己と関連す
る参照と、状態オブジェクト参照とを入力パラメータと
して取り出す。この「ismemberstate」手続きは、対応す
る状態オブジェクトがアニメートステートマシーンと関
連する状態オブジェクトのテーブルのメンバーであるこ
とを検証する。
【0240】「getstates」手続きは、自己と関連する参
照を唯一の入力パラメータとして取り出す。この「getst
ates」手続きは、アニメートステートマシーンと関連す
る状態オブジェクトの集合を戻す。
【0241】「setstate」手続きは、自己と関連する参照
と、所望の状態オブジェクト識別子とを入力パラメータ
として取り出す。この「setstate」手続きは、与えられた
状態オブジェクト識別子がアニメートステートマシーン
と関連する状態オブジェクトのテーブルのメンバの1つ
であれば、ステートマシーンのソース状態を与えられた
状態オブジェクト識別子に対応する状態に設定する。
【0242】「getstate」手続きは、自己と関連する参照
と、所望の状態オブジェクト識別子とを入力パラメータ
として取り出す。この「getstate」手続きは、アニメート
ステートマシーンと関連する状態オブジェクトのテーブ
ルのメンバーの1つになるであろう、現在アクティブ状
態である状態オブジェクトと関連する参照を戻す。
【0243】「addtrackdef」手続きは、自己と関連する
参照と、トラック定義オブジェクトと関連する参照とを
入力パラメータとして取り出す。この「addtrackdef」手
続きは、対応するトラック定義オブジェクトをアニメー
トステートマシーンと関連するトラック定義オブジェク
トのテーブルに追加する。
【0244】「removetrackdef」手続きは、自己と関連す
る参照と、トラック定義オブジェクトと関連する参照と
を入力パラメータとして取り出す。この「removetrackde
f」手続きは、アニメートステートマシーンと関連するト
ラック定義オブジェクトのテーブルから対応するトラッ
ク定義オブジェクトを除去する。
【0245】「ismembertrackdef」手続きは、自己と関連
する参照と、トラック定義オブジェクトと関連する参照
とを入力パラメータとして取り出す。この「ismembertra
ckdef」手続きは、対応するトラック定義オブジェクトが
アニメートステートマシーンと関連するトラック定義オ
ブジェクトのテーブルのメンバであることを検証する。
【0246】「gettrackdefs」手続きは、自己と関連する
参照を唯一の入力パラメータとして取り出す。この「get
trackdefs」手続きは、アニメートステートマシーンと関
連するトラック定義オブジェクトの集合を戻す。
【0247】「getquantum」手続きは、自己と関連する参
照を唯一の入力パラメータとして取り出す。この「getqu
antum」手続きは時間量子値を戻す。
【0248】ここで説明する方法によれば、状態オブジ
ェクトは「addkey」、「removekey」、「ismemberkey」、「get
key」、「getstatemachine」、「gettransition」、「gettran
sitions」及び「ApplyKeys」の関連手続きを有する。
【0249】「addkey」手続きは、自己と関連する参照
と、キーオブジェクトと関連する参照とを入力パラメー
タとして取り出す。この「addkey」手続きは、キーオブジ
ェクトを状態オブジェクトに追加する。状態オブジェク
トが同じトラックオブジェクトを伴うキーオブジェクト
を既に有する場合、キーオブジェクトは新たなキーオブ
ジェクトと置き換えられる。その後、キーオブジェクト
は、キーオブジェクトが変化する場合にいつ変化するか
を状態オブジェクトに通知する。
【0250】「removekey」手続きは、自己と関連する参
照と、キーオブジェクトと関連する参照とを入力パラメ
ータとして取り出す。この「removekey」手続きはキーオ
ブジェクトを状態オブジェクトから除去する。
【0251】「ismemberkey」手続きは、自己と関連する
参照と、キーオブジェクトと関連する参照とを入力パラ
メータとして取り出す。この「ismemberkey」手続きは、
特定のキーオブジェクトが状態オブジェクトのメンバー
であるか否かを戻す。
【0252】「getkey」手続きは、自己と関連する参照
と、トラック定義オブジェクトと関連する参照とを入力
パラメータとして取り出す。この「getkey」手続きは、ト
ラック定義オブジェクトを提供されたときにキーオブジ
ェクトと関連する参照を状態オブジェクトから戻す。
【0253】「getstatemachine」手続きは、自己と関連
する参照と、キーオブジェクトと関連する参照とを入力
パラメータとして取り出す。この「getstatemachine」手
続きは、キーオブジェクトに関わるアニメートステート
マシーンを戻す。
【0254】「gettransition」手続きは、自己と関連す
る参照と、キーオブジェクトと関連する参照とを入力パ
ラメータとして取り出す。この「gettransition」手続き
は、キーオブジェクトにより表現される状態と、引数と
して供給された状態オブジェクトに対する参照との間の
遷移を戻し、それら2つの状態の間にリンクが存在しな
い場合にはNULLを戻す。
【0255】「gettransitions」手続きは、自己と関連す
る参照と、キーオブジェクトと関連する参照とを入力パ
ラメータとして取り出す。この「gettransitions」手続き
は、キーオブジェクトを状態オブジェクトに追加する。
状態オブジェクトが同じ関連トラック定義オブジェクト
を伴うキーオブジェクトを既に有する場合、キーオブジ
ェクトを新たなキーオブジェクトと置き換える。
【0256】遷移クラスは、「addtrack」、「removetrac
k」、「ismembertrack」、「gettrack」、「getstatemachin
e」、「setduration」、「getduration」、「settostate」、「g
ettostate」、「setfromstate」、「getfromstate」、「setbi
directional」、「getbidirectional」、「settime」、「upda
tetrack」及び「updatealltracks」の関連手続きを含む。
【0257】「addtrack」手続きは、トラックオブジェク
トが関連するトラックオブジェクトの遷移持続時間を超
える時間値を持つ関連キーオブジェクトを有していない
場合に、特定の遷移オブジェクトと関連する関連するト
ラックオブジェクトの集合に新たな要素を追加するため
に使用される。遷移オブジェクトに関連トラック定義オ
ブジェクトが既に存在する場合には、関連トラック定義
オブジェクトは変化しないままである。
【0258】トラッククラスは「addkey」、「removeke
y」、「ismemberkey」、「getkeys」、「gettrackdef」及び「ge
tmaxtime」の関連手続きを有する。
【0259】「addkey」手続きは、自己と関連する参照
と、関連するキーオブジェクトと関連する参照とを入力
パラメータとして取り出す。この「addkey」手続きは、サ
ブクラスにより提供される抽象機能である。
【0260】「removekey」手続きは、自己と関連する参
照と、キーオブジェクトと関連する参照とを入力パラメ
ータとして取り出す。この「removekey」手続きは、キー
オブジェクトを状態オブジェクトから除去するように構
成されている。
【0261】「ismemberkey」手続きは、自己と関連する
参照と、キーオブジェクトと関連する参照とを入力パラ
メータとして取り出す。この「ismemberkey」手続きは、
特定のキーオブジェクトが状態オブジェクトと関連する
キーオブジェクトのテーブルのメンバーであるか否かを
指示する引数を戻す。
【0262】「getkeys」手続きは、自己と関連する参照
と、トラック定義オブジェクトと関連する参照とを入力
パラメータとして取り出す。この「getkeys」手続きは、
トラック定義オブジェクトを提供されたときに関連する
状態オブジェクトから状態キーオブジェクトを戻す。
【0263】「gettrackdef」手続きは、自己と関連する
参照と、トラック定義オブジェクトと関連する参照とを
入力パラメータとして取り出す。この「gettrackdef」手
続きは、トラック定義オブジェクトを提供されたときに
状態オブジェクトから状態キーオブジェクトを戻す。
【0264】ここで説明する方法においては、キーオブ
ジェクトは、「gettime」、「settime」、「gettrackdef」、
「trackdefchanged」及び「copy」の関連手続きを有する。
【0265】「gettime」手続きは、自己と関連する参照
を唯一の入力パラメータとして取り出す。この「gettim
e」手続きはキーオブジェクトと関連する現在時間を戻
す。
【0266】「settime」手続きは、自己と関連する参照
と所望の時間とを入力パラメータとして取り出す。この
「settime」手続きは、キーオブジェクトと関連する現在
時間を状態識別子に対応する状態に設定し、且つキーオ
ブジェクトが状態オブジェクトではなく、トラックオブ
ジェクトと関連している場合には関連するトラックオブ
ジェクトに通知する。この「settime」手続きは、状態オ
ブジェクトと関連するキーオブジェクトについては呼び
出されるべきではない。
【0267】「gettrackdef」手続きは、自己と関連する
参照を唯一の入力パラメータとして取り出す。この「get
trackdef」手続きは、キーオブジェクトと関連するトラ
ック定義オブジェクトを戻す。
【0268】以上説明した方法は特定の制御流れを含
む。本発明の趣旨から逸脱することなく、様々に異なる
制御流れを有する上記の方法の変形は他に数多く存在し
ている。更に、好ましい方法のステップのうちの1つ或
いはそれ以上を順次実行するのではなく、並行して実行
しても差し支えない。
【0269】以上、本発明のいくつかの構成のみを説明
したが、それらの構成は単なる例示であって、限定的な
意味をもたず、本発明の趣旨を逸脱することなく上記の
構成に対して変形及び/又は変更を実施することは可能
である。
【図面の簡単な説明】
【図1(a)】、
【図1(b)】特定のコントロールに関して、ソース状
態と目標状態との間の現在経路を判定する方法を示すフ
ローチャートである。
【図2(a)】、
【図2(b)】、
【図2(c)】、
【図2(d)】、
【図2(e)】グラフィカルユーザインターフェースの
コントロールと関連するアニメートステートマシーンに
関して新たな目標状態に至る経路を判定する方法を示す
フローチャートである。
【図3】アニメートステートマシーンの現在アニメート
中の経路の終わりに新たな遷移オブジェクトを追加する
方法を示すフローチャートである。
【図4】図1から図3のアニメートステートマシーンと
関連するグラフィカルオブジェクトの外観を更新する方
法を示すフローチャートである。
【図5(a)】、
【図5(b)】、
【図5(c)】遷移中にグラフィカルオブジェクトの状
態を更新する方法を示すフローチャートである。
【図6】実施の形態の構成を実現する汎用コンピュータ
の概略ブロック図である。
【図7】図1から図5及び図14から図24の方法を使
用して実現されるアプリケーションプログラムに従って
構成された、4つのメニュー項目を有する画面を示す図
である。
【図8】図7のアプリケーションプログラムに従って構
成された、4つのメニュー項目を有する別の画面を示す
図である。
【図9】図7のアプリケーションプログラムに従って構
成された、4つのメニュー項目を有する別の画面を示す
図である。
【図10】図7のアプリケーションプログラムに従って
構成された、4つのメニュー項目を有する別の画面を示
す図である。
【図11】図7のアプリケーションプログラムに従って
構成された、2つのメニュー項目を有する別の画面を示
す図である。
【図12】図7のアプリケーションプログラムに従って
構成された、6つのメニュー項目を有する別の画面を示
す図である。
【図13】図7の画面が表示されている場合に、ユーザ
が図6のキーボードで下向きの矢印キーを押したときに
実行されるプロセスを示すフローチャートである。
【図14(a)】、
【図14(b)】2つの事象ハンドラオブジェクトを結
合する方法を示すフローチャートである。
【図15(a)】、
【図15(b)】2つの事象ハンドラオブジェクトの結
合を分離する方法を示すフローチャートである。
【図16】第1の事象ハンドラオブジェクトから単一の
指定事象ハンドラオブジェクトへメッセージを送信する
方法を示すフローチャートである。
【図17】第1の事象ハンドラオブジェクトのインター
フェースと関連しているあらゆる事象ハンドラオブジェ
クトへ第1の事象ハンドラオブジェクトからメッセージ
を送信する方法を示すフローチャートである。
【図18】第1の事象ハンドラオブジェクトのインター
フェースと関連しているあらゆる事象ハンドラオブジェ
クトへ第1の事象ハンドラオブジェクトからメッセージ
を送信する別の方法を示すフローチャートである。
【図19】第1の事象ハンドラオブジェクトのインター
フェースと関連しているあらゆる事象ハンドラオブジェ
クトへ第1の事象ハンドラオブジェクトからメッセージ
を送信する更に別の方法を示すフローチャートである。
【図20】関連する事象ハンドラオブジェクトからメッ
セージを受信する方法を示すフローチャートである。
【図21(a)】、
【図21(b)】、
【図21(c)】、
【図21(d)】関連する事象ハンドラオブジェクトか
らメッセージを受信する別の方法を示すフローチャート
である。
【図22(a)】、
【図22(b)】関連する事象ハンドラオブジェクトか
らメッセージを受信する更に別の方法を示すフローチャ
ートである。
【図23】関連する事象ハンドラオブジェクトからメッ
セージを受信する更に別の方法を示すフローチャートで
ある。
【図24】グラフィカルユーザインターフェースのコン
トロールと関連するアニメートステートマシーンに関し
て新たな目標状態に至る経路を判定する別の方法を示す
フローチャートである。
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成14年11月7日(2002.11.
7)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】発明の名称
【補正方法】変更
【補正内容】
【発明の名称】 動画生成方法及び装置
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ディビット ジョフリー スラック・スミ ス オーストラリア国 2113 ニューサウス ウェールズ州,ノースライド,トーマス ホルト ドライブ 1 キヤノン インフ ォメーション システムズ リサーチ オ ーストラリア プロプライエタリー リミ テツド内 (72)発明者 アレクサンダー ウィル オーストラリア国 2113 ニューサウス ウェールズ州,ノースライド,トーマス ホルト ドライブ 1 キヤノン インフ ォメーション システムズ リサーチ オ ーストラリア プロプライエタリー リミ テツド内 Fターム(参考) 5B050 AA08 BA08 BA18 CA05 CA07 EA24 FA02 5B076 DB04 DC09 5E501 AC16 AC34 BA12 CA02 FA45

Claims (49)

    【特許請求の範囲】
  1. 【請求項1】 各々の状態がグラフィカルオブジェクト
    をレンダリングする1つのモードに対応し、且つ各々の
    状態が前記状態のうちの少なくとも2つの間における前
    記グラフィカルオブジェクトの遷移を表現する関連状態
    遷移を有する複数の状態を含むアニメートステートマシ
    ーンを有するグラフィカルオブジェクトをグラフィカル
    ユーザインターフェースでレンダリングする方法であっ
    て、 少なくとも、前記グラフィカルオブジェクトを、前記グ
    ラフィカルオブジェクトの第1の状態と第2の状態との
    間の1つ或いはそれ以上の対応する時間に、前記グラフ
    ィカルオブジェクトに対して定義された属性値に従って
    レンダリングするために、前記第1の状態と前記第2の
    状態との間で少なくとも1つの状態遷移を実行する工程
    を有し、 前記少なくとも1つの状態遷移の実行が完了する以前の
    任意の時点で、前記グラフィカルユーザインターフェー
    スに関連して起こる1つの事象に応答して、第3の状態
    に従って前記グラフィカルオブジェクトをレンダリング
    するために、前記少なくとも1つの状態遷移の実行を変
    更することを特徴とする方法。
  2. 【請求項2】 前記グラフィカルオブジェクトを前記第
    3の状態に従ってレンダリングするために、前記少なく
    とも1つの状態遷移の実行を逆転することを特徴とする
    請求項1に記載の方法。
  3. 【請求項3】 前記少なくとも1つの状態遷移の実行を
    変更するとき、前記グラフィカルオブジェクトを前記第
    3の状態に従ってレンダリングするために、前記少なく
    とも1つの状態遷移に1つ或いはそれ以上の別の状態遷
    移が追加されることを特徴とする請求項1に記載の方
    法。
  4. 【請求項4】 前記グラフィカルオブジェクトの前記第
    1の状態と前記第2の状態との間に1つ或いはそれ以上
    の中間状態が存在することを特徴とする請求項3に記載
    の方法。
  5. 【請求項5】 前記グラフィカルオブジェクトを前記第
    3の状態に従ってレンダリングするために、前記中間状
    態のいずれか1つに、1つ或いはそれ以上の別の状態遷
    移が追加されることを特徴とする請求項4に記載の方
    法。
  6. 【請求項6】 前記第1の状態と前記第2の状態の間で
    起こる不必要な状態遷移を除去する工程と、 前記グラフィカルオブジェクトの前記第1の状態と前記
    第3の状態との間の経路を表現するために、1つ或いは
    それ以上の前記状態遷移を選択する工程とを更に有し、 前記経路の少なくとも1つの状態が前記第1の状態と等
    しい場合、前記グラフィカルオブジェクトをレンダリン
    グするために利用される修正経路を生成するために、前
    記状態遷移の実行を逆転し且つ前記経路の第1の状態遷
    移を前記経路から除去し、 それ以外の場合には、前記グラフィカルオブジェクトを
    レンダリングするために前記経路を利用することを特徴
    とする請求項3に記載の方法。
  7. 【請求項7】 前記経路の前記少なくとも1つの状態
    は、前記経路の順序の上で2番目の状態であることを特
    徴とする請求項6に記載の方法。
  8. 【請求項8】 前記経路は、前記グラフィカルオブジェ
    クトを前記第3の状態に従ってレンダリングするために
    要求される最小限の数の前記状態遷移を表現することを
    特徴とする請求項6に記載の方法。
  9. 【請求項9】 各々の状態がグラフィカルオブジェクト
    をレンダリングする1つのモードに対応しており、且つ
    各々の状態が前記状態のうちの少なくとも2つの間にお
    ける前記グラフィカルオブジェクトの遷移を表現する関
    連状態遷移を有する複数の状態を含むアニメートステー
    トマシーンを有するグラフィカルオブジェクトをグラフ
    ィカルユーザインターフェースでレンダリングする装置
    であって、 前記グラフィカルオブジェクトを前記グラフィカルオブ
    ジェクトの第1の状態と第2の状態との間の1つ或いは
    それ以上の対応する時間に、前記グラフィカルオブジェ
    クトに対して定義された属性値に従ってレンダリングす
    るために、前記第1の状態と前記第2の状態との間で少
    なくとも1つの状態遷移を実行する実行手段を具備し、 前記少なくとも1つの状態遷移の実行が完了する以前の
    任意の時点で前記グラフィカルユーザインターフェース
    に関連して起こる1つの事象に応答して、第3の状態に
    従って前記グラフィカルオブジェクトをレンダリングす
    るために、前記少なくとも1つの状態遷移の実行を変更
    することを特徴とする装置。
  10. 【請求項10】 各々の状態がグラフィカルオブジェク
    トをレンダリングする1つのモードに対応しており、且
    つ各々の状態が前記状態のうちの少なくとも2つの間に
    おける前記グラフィカルオブジェクトの遷移を表現する
    関連状態遷移を有する複数の状態を含むアニメートステ
    ートマシーンを有するグラフィカルオブジェクトを、グ
    ラフィカルユーザインターフェースでレンダリングする
    複数のコンピュータ実現プログラムコードを含むプログ
    ラムであって、 前記グラフィカルオブジェクトを前記グラフィカルオブ
    ジェクトの第1の状態と第2の状態との間の1つ或いは
    それ以上の対応する時間に、前記グラフィカルオブジェ
    クトに対して定義された属性値に従ってレンダリングす
    るために、前記第1の状態と前記第2の状態との間で少
    なくとも1つの状態遷移を実行するためのコードを具備
    し、 前記少なくとも1つの状態遷移の実行が完了する以前の
    任意の時点で前記グラフィカルユーザインターフェース
    に関連して起こる1つの事象に応答して、第3の状態に
    従って前記グラフィカルオブジェクトをレンダリングす
    るために、前記少なくとも1つの状態遷移の実行を変更
    することを特徴とするプログラム。
  11. 【請求項11】 1つ或いはそれ以上の関連する状態を
    有し、各々の状態が対応するグラフィカルオブジェクト
    をレンダリングする1つのモードを表現している1つ或
    いはそれ以上のグラフィカルオブジェクトを具備するグ
    ラフィカルユーザインターフェースであって、 前記グラフィカルオブジェクトのうちの少なくとも1つ
    と関連する複数の状態の間の遷移がアニメートステート
    マシーンにより実行されることを特徴とするグラフィカ
    ルユーザインターフェース。
  12. 【請求項12】 前記複数の状態のうちの第1の状態と
    第2の状態との間の少なくとも1つの遷移が完了する以
    前の任意の時間に、前記グラフィカルユーザインターフ
    ェースに関連して起こる1つの事象に応答して、前記グ
    ラフィカルオブジェクトを第3の状態に従ってレンダリ
    ングするために、前記少なくとも1つの遷移が変更され
    ることを特徴とする請求項11に記載のグラフィカルユ
    ーザインターフェース。
  13. 【請求項13】 前記グラフィカルオブジェクトを前記
    第3の状態に従ってレンダリングするために、前記少な
    くとも1つの状態遷移の実行を逆転することを特徴とす
    る請求項12に記載のグラフィカルユーザインターフェ
    ース。
  14. 【請求項14】 前記少なくとも1つの状態遷移の実行
    を変更するとき、前記グラフィカルオブジェクトを前記
    第3の状態に従ってレンダリングするために、前記少な
    くとも1つの状態遷移に1つ或いはそれ以上の別の状態
    遷移を追加することを特徴とする請求項13に記載のグ
    ラフィカルユーザインターフェース。
  15. 【請求項15】 前記グラフィカルオブジェクトの前記
    第1の状態と前記第2の状態との間に1つ或いはそれ以
    上の中間状態が存在することを特徴とする請求項14に
    記載のグラフィカルユーザインターフェース。
  16. 【請求項16】 前記グラフィカルオブジェクトを前記
    第3の状態に従ってレンダリングするために、前記中間
    状態のいずれか1つに、1つ或いはそれ以上の別の状態
    遷移が追加されることを特徴とする請求項15に記載の
    グラフィカルユーザインターフェース。
  17. 【請求項17】 前記第1の状態と前記第2の状態の間
    で起こる不必要な状態遷移を除去する除去手段と、 前記グラフィカルオブジェクトの前記第1の状態と前記
    第3の状態との間の経路を表現するために、1つ或いは
    それ以上の前記状態遷移を選択する選択手段とを更に具
    備し、 前記経路の少なくとも1つの状態が前記第1の状態と等
    しい場合、前記グラフィカルオブジェクトをレンダリン
    グするために利用される修正経路を生成するために、前
    記状態遷移の実行を逆転し、且つ前記経路の第1の状態
    遷移を前記経路から除去し、 そうでない場合には、前記グラフィカルオブジェクトを
    レンダリングするために前記経路を利用することを特徴
    とする請求項14に記載のグラフィカルユーザインター
    フェース。
  18. 【請求項18】 前記経路の前記少なくとも1つの状態
    は、前記経路の順序の上で2番目の状態であることを特
    徴とする請求項17に記載のグラフィカルユーザインタ
    ーフェース。
  19. 【請求項19】 前記経路は、前記グラフィカルオブジ
    ェクトを前記第3の状態に従ってレンダリングするため
    に要求される最小限の数の前記状態遷移を表現すること
    を特徴とする請求項17に記載のグラフィカルユーザイ
    ンターフェース。
  20. 【請求項20】 1つのグラフィカルオブジェクトと関
    連し、各々の状態が前記グラフィカルオブジェクトをレ
    ンダリングする1つのモードに対応し且つ各々の状態が
    前記状態のうちの少なくとも2つの状態の間の前記グラ
    フィカルオブジェクトの遷移を表現する関連状態遷移を
    有する複数の状態を含むアニメートステートマシーンに
    より現在実行されており、第1の連続する複数の前記状
    態遷移を含む経路を更新する方法であって、 前記現在実行中の経路から不必要な状態遷移を除去する
    工程と、 前記グラフィカルオブジェクトの第1の状態と第2の状
    態との間の新たな経路を表現するために、第2の連続す
    る複数の残留状態遷移を選択する工程とを有し、 前記新たな経路の少なくとも1つの状態が前記現在実行
    中の経路の現在実行中の遷移の第1の状態と等しい場
    合、前記現在実行中の経路を更新するために利用される
    修正された新たな経路を生成するために、前記現在実行
    中の遷移を逆転し且つ前記新たな経路から前記新たな経
    路の第1の遷移を除去し、 前記新たな経路の少なくとも1つの状態が前記実行中の
    経路の前記実行中の遷移の第1の状態と等しくない場合
    には、前記新たな経路を、前記現在実行中の経路を更新
    するために利用することを特徴とする方法。
  21. 【請求項21】 前記新たな経路は、前記グラフィカル
    オブジェクトを前記第2の状態に従ってレンダリングす
    るために要求される最小限の数の前記状態遷移を表現す
    ることを特徴とする請求項20に記載の方法。
  22. 【請求項22】 前記新たな経路の前記少なくとも1つ
    の状態は、前記新たな経路の順序の上で2番目の状態で
    あることを特徴とする請求項20に記載の方法。
  23. 【請求項23】 前記方法は前記グラフィカルオブジェ
    クトと関連するユーザ入力事象に応答して実行されるこ
    とを特徴とする請求項20に記載の方法。
  24. 【請求項24】 前記新たな経路は少なくとも1つの中
    間状態を含むことを特徴とする請求項20に記載の方
    法。
  25. 【請求項25】 1つのグラフィカルオブジェクトと関
    連し、各々の状態が前記グラフィカルオブジェクトをレ
    ンダリングする1つのモードに対応し、且つ各々の状態
    が前記状態の間の前記グラフィカルオブジェクトの遷移
    を表現する関連状態遷移を有する複数の状態を含むアニ
    メートステートマシーンにより現在実行されている、第
    1の連続する複数の前記状態遷移を含む経路を更新する
    方法であって、 前記現在実行中の経路から不必要な状態遷移を除去する
    工程と、 前記グラフィカルオブジェクトの第1の状態と第2の状
    態との間の新たな経路を表現するために、連続する複数
    の残留状態遷移を選択する工程と、 前記新たな経路を利用して前記現在実行中の経路を更新
    する工程と、を有することを特徴とする方法。
  26. 【請求項26】 前記新たな経路の少なくとも1つの状
    態が前記現在実行中の経路の現在実行中の遷移の第1の
    状態と等しい場合、前記現在実行中の経路を更新するた
    めに利用される修正された新たな経路を生成するため
    に、前記現在実行中の遷移を逆転し、且つ前記新たな経
    路から前記新たな経路の第1の遷移を除去し、 それ以外の場合には、前記現在実行中の経路を更新する
    ために前記新たな経路を利用することを特徴とする請求
    項25に記載の方法。
  27. 【請求項27】 前記新たな経路の前記少なくとも1つ
    の状態は、前記新たな経路の順序の上で2番目の状態で
    あることを特徴とする請求項25に記載の方法。
  28. 【請求項28】 前記新たな経路は、前記グラフィカル
    オブジェクトを前記第2の状態に従ってレンダリングす
    るために要求される最小限の数の前記状態遷移を表現す
    ることを特徴とする請求項25に記載の方法。
  29. 【請求項29】 前記グラフィカルオブジェクトの前記
    第1の状態と前記第2の状態との間で少なくとも1つの
    中間状態が定義されていることを特徴とする請求項25
    に記載の方法。
  30. 【請求項30】 前記方法は前記グラフィカルオブジェ
    クトと関連するユーザ入力事象に応答して実行されるこ
    とを特徴とする請求項25に記載の方法。
  31. 【請求項31】 ユーザ事象に応答して、1つのグラフ
    ィカルオブジェクトと関連しているアニメートステート
    マシーンを更新する方法であって、 前記ユーザ事象の検出時に、前記アニメートステートマ
    シーンの現在実行中の経路から不必要な遷移を削除する
    工程と、 前記グラフィカルオブジェクトを現在状態及び目標状態
    に従ってレンダリングするために要求される最小限の数
    の状態遷移を表現する新たな経路を形成するために、連
    続する複数の残留状態遷移を選択する工程とを有し、 前記新たな経路の第2の状態が前記現在実行中の経路の
    現在実行中の遷移の第1の状態と等しい場合、前記現在
    実行中の経路を更新するために利用される修正された新
    たな経路を生成するために、前記現在実行中の遷移を逆
    転し、且つ前記新たな経路から前記新たな経路の第1の
    遷移を除去し、 それ以外の場合には、前記現在実行中の経路を更新する
    ために前記新たな経路を利用することを特徴とする方
    法。
  32. 【請求項32】 1つのグラフィカルオブジェクトと関
    連し、各々の状態が前記グラフィカルオブジェクトをレ
    ンダリングする1つのモードに対応し、且つ各々の状態
    が前記状態のうちの少なくとも2つの状態の間の前記グ
    ラフィカルオブジェクトの遷移を表現する関連状態遷移
    を有する複数の状態を含むアニメートステートマシーン
    により現在実行されている、第1の連続する複数の前記
    状態遷移を含む経路を更新する装置であって、 前記現在実行中の経路から不必要な状態遷移を除去する
    除去手段と、 前記グラフィカルオブジェクトの第1の状態と第2の状
    態との間の新たな経路を表現するために、第2の連続す
    る複数の残留状態遷移を選択する選択手段とを具備し、 前記新たな経路の少なくとも1つの状態が前記現在実行
    中の経路の現在実行中の遷移の第1の状態と等しい場
    合、前記現在実行中の経路を更新するために利用される
    修正された新たな経路を生成するために、前記現在実行
    中の遷移を逆転し且つ前記新たな経路から前記新たな経
    路の第1の遷移を除去し、 そうでない場合には、前記現在実行中の経路を更新する
    ために前記新たな経路を利用することを特徴とする装
    置。
  33. 【請求項33】 1つのグラフィカルオブジェクトと関
    連し、各々の状態が前記グラフィカルオブジェクトをレ
    ンダリングする1つのモードに対応し、且つ各々の状態
    が前記状態の間の前記グラフィカルオブジェクトの遷移
    を表現する関連状態遷移を有する複数の状態を含むアニ
    メートステートマシーンにより現在実行されている、第
    1の連続する複数の前記状態遷移を含む経路を更新する
    装置であって、 前記現在実行中の経路から不必要な状態遷移を除去する
    除去手段と、 前記グラフィカルオブジェクトの第1の状態と第2の状
    態との間の新たな経路を表現するために、連続する複数
    の残留状態遷移を選択する選択手段と、 前記新たな経路を利用して前記現在実行中の経路を更新
    する更新手段と、を有することを特徴とする装置。
  34. 【請求項34】 ユーザ事象に応答して、1つのグラフ
    ィカルオブジェクトと関連しているアニメートステート
    マシーンを更新する装置であって、 前記ユーザ事象の検出時に、前記アニメートステートマ
    シーンの現在実行中の経路から不必要な遷移を削除する
    削除手段と、 前記グラフィカルオブジェクトを現在状態及び目標状態
    に従ってレンダリングするために要求される最小限の数
    の状態遷移を表現する新たな経路を形成するために、連
    続する複数の残留状態遷移を選択する選択手段とを具備
    し、 前記新たな経路の第2の状態が前記現在実行中の経路の
    現在実行中の遷移の第1の状態と等しい場合、前記現在
    実行中の経路を更新するために利用される修正された新
    たな経路を生成するために、前記現在実行中の遷移を逆
    転し、且つ前記新たな経路から前記新たな経路の第1の
    遷移を除去し、 そうでない場合には、前記現在実行中の経路を更新する
    ために前記新たな経路を利用することを特徴とする装
    置。
  35. 【請求項35】 1つのグラフィカルオブジェクトと関
    連し、各々状態が前記グラフィカルオブジェクトをレン
    ダリングする1つのモードに対応し、且つ各々の状態が
    前記状態のうちの少なくとも2つの状態の間の前記グラ
    フィカルオブジェクトの遷移を表現する関連状態遷移を
    有する複数の状態を含むアニメートステートマシーンに
    より現在実行されている、第1の連続する複数の前記状
    態遷移を含む経路を更新する装置の記憶媒体に格納され
    ているプログラムであって、 前記現在実行中の経路から不必要な状態遷移を除去する
    ためのコードと、 前記グラフィカルオブジェクトの第1の状態と第2の状
    態との間の新たな経路を表現するために、第2の連続す
    る複数の残留状態遷移を選択するためのコードを具備
    し、 前記新たな経路の少なくとも1つの状態が前記現在実行
    中の経路の現在実行中の遷移の第1の状態と等しい場
    合、前記現在実行中の経路を更新するために利用される
    修正された新たな経路を生成するために、前記現在実行
    中の遷移を逆転し、且つ前記新たな経路から前記新たな
    経路の第1の遷移を除去し、 そうでない場合には、前記新たな経路を前記現在実行中
    の経路を更新するために利用することを特徴とするプロ
    グラム。
  36. 【請求項36】 前記新たな経路は、前記グラフィカル
    オブジェクトを前記第2の状態に従ってレンダリングす
    るために要求される最小限の数の前記状態遷移を表現す
    ることを特徴とする請求項35に記載のプログラム。
  37. 【請求項37】 前記新たな経路の前記少なくとも1つ
    の状態は、前記新たな経路の順序の上で2番目の状態で
    あることを特徴とする請求項35に記載のプログラム。
  38. 【請求項38】 前記新たな経路は、少なくとも1つの
    中間状態を含むことを特徴とする請求項35に記載のプ
    ログラム。
  39. 【請求項39】 1つのグラフィカルオブジェクトと関
    連し、各々状態が前記グラフィカルオブジェクトをレン
    ダリングする1つのモードに対応し、且つ各々の状態が
    前記状態の間の前記グラフィカルオブジェクトの遷移を
    表現する関連状態遷移を有する複数の状態を含むアニメ
    ートステートマシーンにより現在実行されている、第1
    の連続する複数の前記状態遷移を含む経路を更新する装
    置の記憶媒体に格納されているプログラムであって、 前記現在実行中の経路から不必要な状態遷移を除去する
    ためのコードと、 前記グラフィカルオブジェクトの第1の状態と第2の状
    態との間の新たな経路を表現するために、連続する複数
    の残留状態遷移を選択するためのコードと、 前記新たな経路を利用して前記現在実行中の経路を更新
    するためのコードと、を有することを特徴とするプログ
    ラム。
  40. 【請求項40】 前記新たな経路の少なくとも1つの状
    態が前記現在実行中の経路の現在実行中の遷移の第1の
    状態と等しい場合、前記現在実行中の経路を更新するた
    めに利用される修正された新たな経路を生成するため
    に、前記現在実行中の遷移を逆転し、且つ前記新たな経
    路から前記新たな経路の第1の遷移を除去し、 前記新たな経路の少なくとも1つの状態が前記現在実行
    中の経路の現在実行中の遷移の第1の状態と等しくない
    場合には、前記現在実行中の経路を更新するために前記
    新たな経路を利用することを特徴とする請求項39に記
    載のプログラム。
  41. 【請求項41】 前記新たな経路の前記少なくとも1つ
    の状態は、前記新たな経路の順序の上で2番目の状態で
    あることを特徴とする請求項40に記載のプログラム。
  42. 【請求項42】 前記新たな経路は、前記グラフィカル
    オブジェクトを前記第2の状態に従ってレンダリングす
    るために要求される最小限の数の前記状態遷移を表現す
    ることを特徴とする請求項39に記載のプログラム。
  43. 【請求項43】 前記グラフィカルオブジェクトの前記
    第1の状態と前記第2の状態との間で少なくとも1つの
    中間状態が定義されていることを特徴とする請求項39
    に記載のプログラム。
  44. 【請求項44】 ユーザ事象に応答して、1つのグラフ
    ィカルオブジェクトと関連しているアニメートステート
    マシーンを更新する複数のコンピュータ実現プログラム
    コードを含むプログラムであって、 前記ユーザ事象の検出時に、前記アニメートステートマ
    シーンの現在実行中の経路から不必要な遷移を削除する
    ためのコードと、 前記グラフィカルオブジェクトを現在状態及び目標状態
    に従ってレンダリングするために要求される最小限の数
    の状態遷移を表現する新たな経路を形成するために、順
    次続く複数の残留状態遷移を選択するためのコードとを
    具備し、 前記新たな経路の第2の状態が前記現在実行中の経路の
    現在実行中の遷移の第1の状態と等しい場合、前記現在
    実行中の経路を更新するために利用される修正された新
    たな経路を生成するために、前記現在実行中の遷移を逆
    転し、且つ前記新たな経路から前記新たな経路の第1の
    遷移を除去し、 前記新たな経路の第2の状態が前記現在実行中の経路の
    現在実行中の遷移の第1の状態と等しくない場合には、
    前記現在実行中の経路を更新するために前記新たな経路
    を利用することを特徴とするプログラム。
  45. 【請求項45】 1つのグラフィカルオブジェクトと関
    連し、各々状態が前記グラフィカルオブジェクトをレン
    ダリングする1つのモードに対応し、且つ各々の状態が
    前記状態のうちの少なくとも2つの状態の間の前記グラ
    フィカルオブジェクトの遷移を表現する関連状態遷移を
    有する複数の状態を含むアニメートステートマシーンに
    より現在実行されている、第1の連続する複数の前記状
    態遷移を含む経路を更新する方法であって、 前記アニメートステートマシーンの前記現在実行中の経
    路から先に実行された状態遷移を除去する工程と、 前記グラフィカルオブジェクトの現在状態と目標状態と
    の間の、少なくとも1つの中間状態を含む新たな経路を
    表現するために、第2の連続する複数の残留状態遷移を
    選択する工程とを有し、 前記新たな経路の第2の状態が前記現在実行中の経路の
    現在実行中の遷移の第1の状態と等しい場合、前記現在
    実行中の経路を更新するために利用される修正された新
    たな経路を生成するために、前記現在実行中の遷移を逆
    転し、且つ前記新たな経路から前記新たな経路の第1の
    遷移を除去し、 前記新たな経路の第2の状態が前記現在実行中の経路の
    現在実行中の遷移の第1の状態と等しくない場合には、
    前記現在実行中の経路を更新するために前記新たな経路
    を利用することを特徴とする方法。
  46. 【請求項46】 前記新たな経路は、前記グラフィカル
    オブジェクトを前記目標状態に従ってレンダリングする
    ために要求される最小限の数の前記状態遷移を表現する
    ことを特徴とする請求項45に記載の方法。
  47. 【請求項47】 1つのグラフィカルオブジェクトと関
    連し、各々状態が前記グラフィカルオブジェクトをレン
    ダリングする1つのモードに対応し、且つ各々の状態が
    前記状態のうちの少なくとも2つの状態の間の前記グラ
    フィカルオブジェクトの遷移を表現する関連状態遷移を
    有する複数の状態を含むアニメートステートマシーンに
    より現在実行されている、第1の連続する複数の前記状
    態遷移を含む経路を更新する装置であって、 前記アニメートステートマシーンの前記現在実行中の経
    路から先に実行された状態遷移を除去する除去手段と、 前記グラフィカルオブジェクトの現在状態と目標状態と
    の間の、少なくとも1つの中間状態を含む新たな経路を
    表現するために、第2の連続する複数の残留状態遷移を
    選択する選択手段とを具備し、 前記新たな経路の第2の状態が前記現在実行中の経路の
    現在実行中の遷移の第1の状態と等しい場合、前記現在
    実行中の経路を更新するために利用される修正された新
    たな経路を生成するために、前記現在実行中の遷移を逆
    転し、且つ前記新たな経路から前記新たな経路の第1の
    遷移を除去し、 前記新たな経路の第2の状態が前記現在実行中の経路の
    現在実行中の遷移の第1の状態と等しくない場合には、
    前記現在実行中の経路を更新するために前記新たな経路
    を利用することを特徴とする装置。
  48. 【請求項48】 1つのグラフィカルオブジェクトと関
    連し、各々状態が前記グラフィカルオブジェクトをレン
    ダリングする1つのモードに対応し、且つ各々の状態が
    前記状態のうちの少なくとも2つの状態の間の前記グラ
    フィカルオブジェクトの遷移を表現する関連状態遷移を
    有する複数の状態を含むアニメートステートマシーンに
    より現在実行されている、第1の連続する複数の前記状
    態遷移を含む経路を更新する複数のコンピュータ実現プ
    ログラムコードを含むプログラムであって、 前記アニメートステートマシーンの前記現在実行中の経
    路から先に実行された状態遷移を除去するためのコード
    と、 前記グラフィカルオブジェクトの現在状態と目標状態と
    の間の、少なくとも1つの中間状態を含む新たな経路を
    表現するために、第2の順次続く複数の残留状態遷移を
    選択するためのコードとを具備し、 前記新たな経路の第2の状態が前記現在実行中の経路の
    現在実行中の遷移の第1の状態と等しい場合、前記現在
    実行中の経路を更新するために利用される修正された新
    たな経路を生成するために、前記現在実行中の遷移を逆
    転し、且つ前記新たな経路から前記新たな経路の第1の
    遷移を除去し、 そうでない場合には、前記現在実行中の経路を更新する
    ために前記新たな経路を利用することを特徴とするプロ
    グラム。
  49. 【請求項49】 前記新たな経路は、前記グラフィカル
    オブジェクトを前記目標状態に従ってレンダリングする
    ために要求される最小限の数の前記状態遷移を表現する
    ことを特徴とする請求項48に記載のプログラム。
JP2002261322A 2001-09-06 2002-09-06 動画生成方法及び装置 Pending JP2003208310A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
AU0790 1992-02-11
AU7535 2001-09-06
AUPR7535A AUPR753501A0 (en) 2001-09-06 2001-09-06 Animated state machine
AUPS0790A AUPS079002A0 (en) 2002-02-27 2002-02-27 Animated state machine

Publications (1)

Publication Number Publication Date
JP2003208310A true JP2003208310A (ja) 2003-07-25

Family

ID=25646796

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002261322A Pending JP2003208310A (ja) 2001-09-06 2002-09-06 動画生成方法及び装置

Country Status (2)

Country Link
US (1) US20030052919A1 (ja)
JP (1) JP2003208310A (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3755499B2 (ja) * 2002-09-06 2006-03-15 ソニー株式会社 Guiアプリケーション開発支援装置、gui表示装置、および方法、並びにコンピュータ・プログラム
WO2004066200A2 (en) * 2003-01-17 2004-08-05 Yeda Research And Development Co. Ltd. Reactive animation
US7318202B2 (en) * 2003-05-19 2008-01-08 Seiko Epson Corporation User interface device and its display method
US7568161B2 (en) * 2003-08-13 2009-07-28 Melia Technologies, Ltd Overcoming double-click constraints in a mark-up language environment
US8321248B2 (en) * 2003-12-19 2012-11-27 International Business Machines Corporation Method, system and program product for rendering state diagrams for a multi-dimensional enterprise architecture
US7747573B2 (en) * 2004-11-18 2010-06-29 International Business Machines Corporation Updating elements in a data storage facility using a predefined state machine, with serial activation
US10983695B2 (en) * 2005-10-24 2021-04-20 Kinoma, Inc. Focus management system
US7917861B2 (en) * 2007-09-04 2011-03-29 Apple Inc. User interface elements cloning and transitions
AU2007237356A1 (en) * 2007-12-05 2009-06-25 Canon Kabushiki Kaisha Animated user interface control elements
US9201986B1 (en) * 2010-07-16 2015-12-01 The Mathworks, Inc. Managing dynamic state of a physical system
US8380467B1 (en) 2010-07-16 2013-02-19 The Mathworks, Inc. Representing geometry of a system in a modeling environment
US8543611B1 (en) 2010-07-16 2013-09-24 Brian Mirtich Managing dynamic state of a physical system
US8738784B1 (en) * 2010-07-16 2014-05-27 The Mathworks, Inc. Managing dynamic state of a physical system
US8768652B1 (en) 2010-07-16 2014-07-01 The Mathworks, Inc. Managing dynamic state of a physical system
US9600241B2 (en) * 2012-02-15 2017-03-21 The Mathworks, Inc. Unified state transition table describing a state machine model
JP6033891B2 (ja) 2012-02-15 2016-11-30 ザ マスワークス, インクThe Mathworks, Inc. 状態図の生成
US20160071303A1 (en) * 2014-09-04 2016-03-10 Home Box Office, Inc. Styleable transitions
US10656791B2 (en) * 2015-06-11 2020-05-19 Google Llc Methods, systems, and media for navigating a user interface with a toolbar
US20220366810A1 (en) * 2021-05-13 2022-11-17 Autodesk, Inc. Application onboarding tutorial system

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0736683A (ja) * 1993-07-22 1995-02-07 Toshiba Corp ユーザインターフェースの制御方法及び装置
JPH08115107A (ja) * 1994-10-17 1996-05-07 Hitachi Ltd 機器制御プログラム生成方式
JPH09223041A (ja) * 1996-02-16 1997-08-26 Nippon Steel Corp ソフトウェアの開発支援装置
JPH117539A (ja) * 1997-06-16 1999-01-12 Toshiba Corp アニメーション作成装置およびアニメーション作成方法
JPH11149368A (ja) * 1997-11-19 1999-06-02 Nec Corp 図式編集プログラム開発方法および方式
JP2000011199A (ja) * 1998-06-18 2000-01-14 Sony Corp アニメーションの自動生成方法
JP2001076165A (ja) * 1999-09-06 2001-03-23 Fujitsu Ltd アニメーション編集システムおよびアニメーション編集プログラムを記録した記憶媒体
JP2001154833A (ja) * 1999-11-30 2001-06-08 Mitsubishi Electric Corp ナビゲーション装置およびその生成装置
JP2002182914A (ja) * 2000-12-18 2002-06-28 Canon Inc 画面遷移表示装置、画面遷移表示方法および記憶媒体
JP2002229785A (ja) * 2001-01-31 2002-08-16 Toshiba Corp Gui設計支援装置および方法およびプログラム
JP2002244848A (ja) * 2001-02-14 2002-08-30 Mitsubishi Electric Corp ユーザインタフェース設計装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5948040A (en) * 1994-06-24 1999-09-07 Delorme Publishing Co. Travel reservation information and planning system
US5767835A (en) * 1995-09-20 1998-06-16 Microsoft Corporation Method and system for displaying buttons that transition from an active state to an inactive state
US5923337A (en) * 1996-04-23 1999-07-13 Image Link Co., Ltd. Systems and methods for communicating through computer animated images
US20020008704A1 (en) * 2000-07-21 2002-01-24 Sheasby Michael C. Interactive behavioral authoring of deterministic animation

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0736683A (ja) * 1993-07-22 1995-02-07 Toshiba Corp ユーザインターフェースの制御方法及び装置
JPH08115107A (ja) * 1994-10-17 1996-05-07 Hitachi Ltd 機器制御プログラム生成方式
JPH09223041A (ja) * 1996-02-16 1997-08-26 Nippon Steel Corp ソフトウェアの開発支援装置
JPH117539A (ja) * 1997-06-16 1999-01-12 Toshiba Corp アニメーション作成装置およびアニメーション作成方法
JPH11149368A (ja) * 1997-11-19 1999-06-02 Nec Corp 図式編集プログラム開発方法および方式
JP2000011199A (ja) * 1998-06-18 2000-01-14 Sony Corp アニメーションの自動生成方法
JP2001076165A (ja) * 1999-09-06 2001-03-23 Fujitsu Ltd アニメーション編集システムおよびアニメーション編集プログラムを記録した記憶媒体
JP2001154833A (ja) * 1999-11-30 2001-06-08 Mitsubishi Electric Corp ナビゲーション装置およびその生成装置
JP2002182914A (ja) * 2000-12-18 2002-06-28 Canon Inc 画面遷移表示装置、画面遷移表示方法および記憶媒体
JP2002229785A (ja) * 2001-01-31 2002-08-16 Toshiba Corp Gui設計支援装置および方法およびプログラム
JP2002244848A (ja) * 2001-02-14 2002-08-30 Mitsubishi Electric Corp ユーザインタフェース設計装置

Also Published As

Publication number Publication date
US20030052919A1 (en) 2003-03-20

Similar Documents

Publication Publication Date Title
JP2003208310A (ja) 動画生成方法及び装置
US6795089B2 (en) Dynamic, live surface and model elements for visualization and modeling
US8612872B2 (en) Animated user interface control elements
US7661071B2 (en) Creation of three-dimensional user interface
US7398473B2 (en) In situ user interface template editing
JP3602532B2 (ja) 増分コマンド・オブジェクトを有する並行処理装置
JP3341893B2 (ja) 並行フレームワーク・システム
US7995064B2 (en) Computer-implemented chat system having dual channel communications and self-defining product structures
US7598956B2 (en) Blended object attribute keyframing model
JP4812337B2 (ja) フォームタイプを使用してフォームを生成する方法および装置
CA2618862C (en) Extensible visual effects on active content in user interfaces
US8838667B2 (en) Event routing mechanism in a computer system
TWI413933B (zh) 圖形使用者介面之應用程式介面
US20060190808A1 (en) Methods, systems, and processes for the design and creation of rich-media applications via the Internet
JP5820339B2 (ja) 第4世代プログラミングツールを用いて生成されるアプリケーションの属性の拡張
KR20060087995A (ko) 작업 흐름을 모델링하는 방법 및 시스템
AU2005229639A1 (en) Coordinating animations and media in computer display output
JP2002202886A (ja) アプリケーション開発システム、その方法およびアプリケーション開発プログラムおよびアプリケーション生成方法
WO2016036988A1 (en) Styling system
Jiang et al. DEMIS: a dynamic event model for interactive systems
US7225447B2 (en) Method of handling asynchronous events
Ferguson et al. MetaMOOSE—an object-oriented framework for the construction of CASE tools
AU2008261147A1 (en) Hierarchical authoring system for creating workflow for a user interface
AU2002300867B2 (en) Animated State Machine
AU2002300866B2 (en) A Method of Handling Asynchronous Events

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050708

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050906

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050930

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051129

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20051222