(57)【特許請求の範囲】
【請求項１】
サーバコンピュータ（３０２、５００）と、前記サーバコンピュータと通信する少なくとも１つの型のクライアントコンピュータ（３０４、４００、１０８、１１０、１１２、１１４）とを有するシステム（３００）であって、
前記サーバコンピュータ（３０２）は、クロスコンパイラ（３０８、５２０）を実施し、前記サーバコンピュータは、ベクターグラフィックスまたはアニメーションのバイナリ表現のフォーマットで、フォーマットされたマルチメディアオブジェクトを格納し、
前記少なくとも１つの型のクライアントコンピュータ（３０４、４００）は、関連付けられた表示部（４０８）を有し、少なくとも１つの対象のウェブブラウザ（３１２、４３０）を実施でき、前記少なくとも１つの対象のウェブブラウザは、ランタイムスクリプト（３１４、４２８）を実行でき、
前記クロスコンパイラ（３０８、５２０）は、前記フォーマットされたマルチメディアオブジェクト（６０６）を構文解析し、タグ付けされたデータブロックオブジェクト（６１０）を生成し、前記マルチメディアオブジェクト（６１２）に包含されるマルチメディアデータに再コード化することを実行して、前記少なくとも１つの対象のウェブブラウザ（３１２、４３０）のためにフォーマットされた数値の対のキーの集まりである中間オブジェクト（６１８）を生成し、
前記再コード化は、前記マルチメディアオブジェクトにおける複数の異形を有する少なくとも１つのタグを、前記中間オブジェクトにおける単一のタグに変換し、
前記ランタイムスクリプト（３１４、４２８）は、前記対象のウェブブラウザ（３１２、４３０）によってマルチメディアコンテンツ（８０６）を描画するために、前記中間オブジェクト（８０２）を用いて、スケアラブルベクターグラフィックスのタグ（８０４）を動的に生成し、修正する、システム。
【請求項２】
携帯表示装置（３０４、４００、１０８、１１０、１１２、１１４）であって、
ランタイムスクリプト（３１４、４２８）を格納するための記憶メディア（４２４）と、中間データ構造（３１０）と、ブラウザ（３１２、４３０）とを備え、前記中間データ構造は、クロスコンパイルを介して、フォーマットされたメルチメディアオブジェクト（３０６）に基づいて前記ブラウザのために生成され、前記フォーマットされたマルチメディアオブジェクトは、ベクターグラフィックスまたはアニメーションのバイナリ表現のフォーマットであり、前記中間データ構造は、数値の対のキーの集まりであり、前記クロスコンパイルは、前記フォーマットされたマルチメディアオブジェクトにおける複数の異形を有する少なくとも１つのタグを、前記中間オブジェクトにおける単一のタグに再コード化し、
ディスプレイ（４０８）と、
前記中間データ構造を得るための（８０２）、前記ブラウザ（３１２、４３０）による解釈のために、スケアラブルベクターグラフィックスのコードを動的に生成および修正するために（８０４）、前記ランタイムスクリプトを実行するための、ならびに、前記スケアラブルベクターグラフィックスのコードに基づくマルチメディア画像を前記携帯表示装置の前記ディスプレイ上に描画するため（８０６）のプロセッサ（４０６）とを備える、携帯表示装置。
【請求項３】
前記スケアラブルベクターグラフィックスのコードは、ハイパーテキストマークアップ言語文書の文書オブジェクトモデルに挿入される（１００２）、請求項２に記載の携帯表示装置。
【請求項４】
前記プロセッサ（４０６）は、構造化されたタグを作成すること（１００２）と、属性値の対を前記タグのために設定すること（１００４）と、フレームレートを設定すること（１００６）と、辞書構造を作成すること（１０１０）と、ムービークリップを作成すること（１０１２）とによってグラフィックスのコードを生成および修正するために（８０４）、前記ランタイムスクリプト（４２８）を実行する、請求項２に記載の携帯表示装置。
【請求項５】
前記ムービークリップは、タイムラインを構成する複数のフレームを有し、前記ディスプレイにアニメーションとして描画される（１３０２、１３０４、１３０６、１３０８）、請求項４に記載の携帯表示装置。
【請求項６】
前記プロセッサ（４０６）は、前記中間データ構造において遭遇した各データ定義タグおよび制御コードタグのためにグラフィックス定義コードを作成することによって（１２１４、１２１６、１２４０、１２４２、１２４４、１２４６、１２４８、１２８０、１２８２）前記アニメーションを実行するために前記ランタイムスクリプト（４２８）を処理し、前記制御コードタグに基づいて少なくとも１つの表示オブジェクトを表示リストに書き込み（１４１２）、前記少なくとも１つの表示オブジェクトを表示リストに書き込むことは、前記ムービークリップのフレームを再生するために、スケアラブルベクターグラフィックスのコードに基づいて表示するための表示オブジェクトを作成すること（１４１０）、または、表示オブジェクトのためにスケアラブルベクターのコードを修正すること（１４０８）を含む、請求項５に記載の携帯表示装置。
【請求項７】
前記プロセッサ（４０６）は、前記ランタイムスクリプトを実行して、前記ムービークリップにおける次の各フレームのためにグラフィックスの定義コードを更新する（１３０４）、請求項６に記載の携帯表示装置。
【請求項８】
前記記憶メディア（４２４）は、親マルチメディアオブジェクトのために親中間データ構造を格納し、複数の子マルチメディアオブジェクトのために複数の子中間データ構造を格納し、前記プロセッサ（４０６）は、前記子中間データ構造を前記親中間データ構造に動的に読み込んで、合成したムービークリップを作成する、請求項２に記載の携帯表示装置。
【請求項９】
前記記憶メディア（４２４）は、対象のブラウザによって処理され得るフォーマットに再コード化された少なくとも１つの画像、ビデオ、およびオーディオを格納する、請求項２に記載の携帯表示装置。
【請求項１０】
前記プロセッサ（４０６）は、前記再コード化されたフォーマットに基づいて前記画像、ビデオ、およびオーディオを選択する、請求項９に記載の携帯表示装置。
【請求項１１】
前記システム（３００）は、複数のクライアントコンピュータの型（１０８、１１０、１１２、１１４）を備え、前記複数のクライアントコンピュータの型（１０８、１１０、１１２、１１４）は、それぞれ異なる対象のウェブブラウザ（３１２、４３０）を実施でき、前記クロスコンパイラ（３０８）は、前記対象のウェブブラウザの各々のために、中間オブジェクト（３１０）を生成する、請求項１に記載のシステム。
【請求項１２】
前記クライアントコンピュータ（３０４）は、複数の対象のウェブブラウザ（３１２）を備え、前記クロスコンパイラ（３０８）は、前記対象のウェブブラウザの各々のために、中間オブジェクト（３１０）を生成する、請求項１に記載のシステム。
【請求項１３】
前記クロスコンパイラ（３０８）は、フォーマットされたマルチメディアオブジェクトのうち、タグ付けされたデータブロックオブジェクトとして生成できない部分のために警告メッセージを生成する、請求項１に記載のシステム。
【請求項１４】
階層的な構造化された文書のためにマルチメディアのコンテンツを表示する方法であって、
タグ付けされたデータブロックオブジェクトを生成するためにバイナリのマルチメディアオブジェクトを構文解析すること（６０８）と、前記バインリのマルチメディアオブジェクトは、ベクターグラフィックスまたはアニメーションのバイナリ表現のフォーマットであり、
前記タグ付けされたデータブロックオブジェクトを包含する中間オブジェクトを、クロスコンパイルを介して、生成すること（６１８）とを備え、前記中間データ構造は、数値の対のキーの集まりであり、前記クロスコンパイルは、前記フォーマットされたマルチメディアオブジェクトにおける複数の異形を有する少なくとも１つのタグを、前記中間オブジェクトにおける単一のタグに再コード化し、
ランタイムスクリプトを実行するために、表示部を有するコンピュータによってブラウザを実施することと、
前記ランタイムスクリプトが前記中間オブジェクトを得ること（８０２）と、
スケアラブルベクターグラフィックスのコードを有するオブジェクトモデルを生成すること（８０４）と、
表示オブジェクトを生成すること（１４１０）および表示オブジェクトを前記オブジェクトモデルに挿入すること（１４１２）と、
前記表示部のために前記オブジェクトモデルを描画すること（８０６）と、
前記オブジェクトモデルに基づいて前記表示部にシーンを表示すること（８０６）と、
タイムラインに従って前記オブジェクトモデルにおける前記表示オブジェクトを修正すること（１４０８）と、
前記タイムラインに沿って修正されるように前記表示オブジェクトを動的に描画すること（８０６）と、
前記修正された表示オブジェクトに基づいて、修正されたシーンを前記表示部に表示すること（８０６）とを備える、方法。
【請求項１５】
前記バイナリのマルチメディアオブジェクトは、子マルチメディアオブジェクトを組み込むための命令を含む、請求項１４に記載の方法。
【請求項１６】
前記表示オブジェクトを修正するステップは、表示オブジェクトが存在しない場合（１４０６）、新たな表示オブジェクトを作成すること（１４１０）を含む、請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
以下は、携帯装置でＳＷＦのコンテンツを再生するための代替的な提案である。
【背景技術】
【０００２】
代替的な提案は、ＳＶＧおよびＨＴＭＬ５のようなウェブ技術のためにコードを生成する。ＳＷＦプレーヤは、Windows（登録商標）、Macintosh OSX、Linux（登録商標）、およびSolarisを含むデスクトップのプラットフォームと、Internet Explorer、Firefox、Mozilla、Netscape、Opera、Safari、SeaMonkey、およびChromeを含むそれらのプラットフォームのためのブラウザとに使用可能である。しかしながら、全ての携帯電話のプラットフォームが現在のところこのフォーマットをサポートしているわけではない。さらに、ＳＷＦプレーヤの処理能力の問題が、携帯電話およびデスクトップの両方のプラットフォームでの、これらの所有者プレーヤの望ましさを制限する可能性がある。
【０００３】
プラットフォームの数が増加することで、ＳＶＧのようなベクターグラフィックス（vector graphics）を処理するためのウェブ技術がサポートされる。ＳＷＦフォーマットで開発されたグラフィックおよびアニメーションを処理できる実用性が必要とされている。ＳＷＦファイルをＳＶＧおよびJavaScript（登録商標）に直接的にコンパイルするという提案は複数の欠点を有する。ＳＶＧ処理は、２つの場所に、すなわち、静的なＳＶＧを生成するコンパイラ自体に、および、クライアントの動的なＳＶＧのアニメーションのためのJavaScript（登録商標）に実装される。
【０００４】
JavaScript（登録商標）を用いてＳＷＦファイルそれ自体を解釈するに他の代替手段も、演算負荷がクライアントに課されるというような欠点を有するだろう。ビデオおよびオーディオの、再コード化またはコード変換のような複雑な形式変換は、ユーザがブラウザでページに訪れるたびに実行される必要があるだろう。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要
階層的な構造化された文書のためにマルチメディアのコンテンツを描画するためのデータ処理装置および方法が説明され、フォーマットされたマルチメディアオブジェクトを構文解析し、フォーマットされたオブジェクトに包含されるビデオデータおよびオーディオデータでの変換を実行し、データを表す中間オブジェクトを、フォーマットされたマルチメディアオブジェクトから生成するクロスコンパイラと、中間オブジェクトを受け、ウェブブラウザによってマルチメディアコンテンツを描画するために階層的な、構造化された文書においてスケアラブルベクターグラフィック（ＳＶＧ）ノードを動的に生成し、修正するランタイムスクリプト（runtime-script）とを含む。
【０００６】
これらおよび他の局面が図面に関連して詳細に説明される。
図面の簡単な説明
添付の図面は本明細書の一部を構成する。
【図面の簡単な説明】
【０００７】
【図１】ネットワーク環境の一例を示す図である。
【図２】ＳＷＦファイルを中間フォーマットに変換することに含まれるプロセスと、アニメーションの生成時における中間フォーマットの使用とを示すブロック図である。
【図３】図２のプロセスを実行するアーキテクチャの一例を示すブロック図である。
【図４】携帯装置の一例を示すブロック図である。
【図５】サーバコンピュータのブロック図である。
【図６】クロスコンパイラによって実行されるプロセスのフローチャートである。
【図７Ａ】警告メッセージの例を示す図である。
【図７Ｂ】警告メッセージの例を示す図である。
【図８】中間コードランタイムによって実行される上位プロセスのフローチャートである。
【図９】中間コードランタイムを初期化するためのＨＴＭＬ文書の一部を示す図である。
【図１０】シーンを構成するプロセスのフローチャートである。
【図１１】ムービークリップ（MovieClip）を作成するプロセスのフローチャートである。
【図１２Ａ】ムービークリップを構成するプロセスのフローチャートである。
【図１２Ｂ】ムービークリップを構成するプロセスのフローチャートである。
【図１２Ｃ】ムービークリップを構成するプロセスのフローチャートである。
【図１３】アニメーションを実行するプロセスのフローチャートである。
【図１４】図１３における制御タグハンドラのステップの実施の詳細を示すフローチャートである。
【図１５】図１３におけるアクションタグハンドラのステップの実施の詳細を示すフローチャートである。
【図１６】ＳＷＦファイルの一例を示す図である。
【図１７】中間コードオブジェクトの一例を示す図である。
【図１８】ＳＶＧコードの一例を示す図である。
【図１９】図１６におけるＳＷＦファイルに基づく表示の一例を示す図である。
【図２０】ＳＷＦにコンパイルされたActionScript2.0の一例を説明する図である。
【発明を実施するための形態】
【０００８】
詳細な説明
ＳＷＦファイルは、ＳＷＦプレーヤを用いて再生され得る。Adobe（登録商標）は、多数のプラットフォームでＳＷＦファイルを再生するためにAdobe（登録商標）Flash（登録商標）プレーヤを提供する。ＳＷＦファイルの説明は、２００８年１１月のバージョン１０のＳＷＦの仕様に見出すことができる。それらのプラットフォームで用いられるクロスコンパイラおよび再生ユーティリティ（playback utility）が公開されているが、それらのプラットフォームでは、ＳＷＦプレーヤが入手できない。再生ユーティリティは、スケアラブルベクターグラフィックス（ＳＶＧ）（スケアラブルベクターグラフィックス1.1の仕様、２００３年１月１４日のＷ３Ｃ勧告を参照のこと）とＨＴＭＬ５とを含む広くサポートされるウェブ技術を用いる。
【０００９】
クロスコンパイラは、中間構造を作り出し、コンピュータによる集中的な形式変換を実行する。再生ユーティリティは、中間構造をウェブブラウザによって解釈され得るＳＶＧタグに変換し、ＳＷＦアニメーションに関連付けられた必要な動作も生成する。再生ユーティリティは、全てのＳＶＧ処理に対処する。クロスコンパイラおよび再生ユーティリティのさらに他の局面は、コンピュータによる集中的なタスクと、たとえば、制限されたメモリおよび処理能力を有する小さな手のひらサイズの装置上のマルチメディアのデータを描画するのに必要なタスクとの間の作業を分割することである。
【００１０】
図１は、ネットワーク環境１００の一例を示し、ネットワーク環境１００において、様々な携帯装置が、インターネット１０４、および他の無線通信ネットワークに無線で接続され得る。たとえば、ノート型コンピュータ１０８は、無線ＬＡＮ、若しくはＷｉＦｉ（ＩＥＥＥ  ８０２．１１−２００７）を含む２つ以上の通信プロトコルを介して、または携帯電話会社（cellular carrier）１１６を介してウェブサーバ１０２に接続できる。スマートフォン１１２は、携帯電話会社１１６を介して、またはＷｉＦｉネットワーク１０６を介してウェブサーバ１０２と通信できる。タブレット型コンピュータ１１４は、ＷｉＦｉネットワーク１０６を介して、または携帯電話会社１１６を介してウェブサーバ１０２に接続できる。携帯音楽プレーヤ１１０は、ＷｉＦｉネットワーク１０６を介して、またはホストコンピュータ（示されない）を介してウェブサーバ１０２と通信できる。
【００１１】
システムアーキテクチャ
ＳＷＦファイルは、グラフィックまたはアニメーションのバイナリ表現である。図２は、ＳＶＧおよびＨＴＭＬ５のようなウェブ技術を扱うことができるウェブブラウザのために、ＳＷＦファイルを描画するプロセス２００のブロック図である。ウェブブラウザは、ＳＶＧタグを有するＨＴＭＬ５を描画可能でなければならない。プロセス２００は、クロスコンパイラ２０４と、中間コードランタイム２１０とを含む。クロスコンパイラ２０４は、ＳＷＦファイル２０２を中間構造２０８に変換する。クロスコンパイラ２０４によって与えられる中間構造２０８は、ＪＳＯＮオブジェクト（JavaScript（登録商標） Object Notationを表す）、またはＸＭＬ文書であってもよい。中間構造２０８は、クロスコンパイラ２０４によって生成されるデータを構造化するデータ構造である。中間コードランタイム３１４は、中間構造２０８におけるデータからＳＶＧノードを生成し、フレームまたはアニメーションの再生操作を実行するJavaScript（登録商標）プログラムであってもよい。ＳＶＧノードは、ＨＴＭＬ５およびＳＶＧを描画可能なウェブブラウザ３１２によって解釈される。
【００１２】
図２におけるプロセスは、図３に示されるような配置で実行されてもよい。図３は、サーバ３０２およびクライアント３０４を有するアーキテクチャ３００を示す。図１において示されていたように、サーバは、複数の、および様々な型の携帯装置と通信する。図３は、簡単にするために１つのクライアント装置を有する配置を示す。さらに、図３はサーバコンピュータ３０２を示すが、サーバ３０２は、サーバシステム、および、データベースシステムのバックエンド（backend）などのその他のサポート装置であってもよい。
【００１３】
サーバコンピュータ３０２上で、クロスコンパイラ３０８は、様々なプラットフォームの各々のためにＪＳＯＮオブジェクトを生成し得る。クロスコンパイラ３０８は、携帯装置上で動かすウェブブラウザとの互換性のために、ベクトル変換と、画像形式の変換と、フォントの変換と、ビデオおよびオーディオの再コード化またはコード変換とを含む形式変換を実行することもできる。さらに、クロスコンパイラ３０８は、エラーチェックを実行してもよく、変換に関する警告およびエラーメッセージを生成する。図３に示されるように、クライアント装置３０４上で、中間コードランタイム３１４は、クロスコンパイラ３０８から得られる中間コードオブジェクトに基づいて残りの処理を実行する。中間コードランタイ３１４は、ウェブブラウザ３１２で実施される。
【００１４】
図４は、携帯装置の一例をクライアント３０４として示すブロック図である。携帯装置４００は、バス４１６を経由してホストプロセッサ４０６と通信するマイクロコントローラ４０４を含む。ホストプロセッサ４０６は、データを通信モジュール４１２に伝送でき、それにより、外部ネットワークを介した通信が可能になる。
【００１５】
さらに、ホストプロセッサ４０６は、処理をビデオアダプタ４０８およびオーディオ装置４１０に与える。主要なバス４１８は、ホストプロセッサ４０６と周辺装置４１４との間の通信を可能にする。ウェブブラウザ４３０および中間コードランタイム４２８は、不揮発性メモリ４２４のような、携帯装置４００の内部メモリに格納され得る。代替的には、中間コードランタイムは、安全なデジタルメモリ装置（示されない）のような取り外し可能なメモリ装置上に提供されてもよい。
【００１６】
図５から分かるように、サーバコンピュータ５００は、キャッシュ５０６と、読み出し専用メモリ（ＲＯＭ）５０８と、揮発性メモリ（ＲＡＭ）５１０と、１つ以上の大容量ストレージ装置（不揮発性メモリ）５１２とを備えたマイクロプロセッサ５０４を含んでもよく、これらのメモリ装置はバス５０２を介してデータを伝える。サーバコンピュータ５００は、ディスプレイ装置５１４と、ディスプレイコントローラおよび入出力コントローラ５１６装置を経由してマイクロプロセッサ５０４と通信する入出力装置５１８ともまた含んでもよい。クロスコンパイラ５２０は、ＲＡＭ５１０において変換操作を実行し、不揮発性メモリ５１２に格納される中間コードオブジェクトを生成してもよい。代替的には、中間コードオブジェクトは、ウェブサーバ５１８によって伝送するためにＲＡＭ５１０に保持されてもよい。
【００１７】
クロスコンパイラ
ＳＶＧの仕様によってサポートされない、ＳＷＦで定義される構造およびメソッドがある。さらに、ＳＷＦは、代替のバージョンとして修正されたタグを含む。クロスコンパイラ２０４は、ＳＷＦとＳＶＧとの間の差異を整合する変換操作を実行する。クロスコンパイラ２０４は、単一バージョンのタグに集約することによって、ＳＷＦタグのバージョン間の差異を簡素化する。その後、クロスコンパイラ２０４は、元のＳＷＦファイルよりも、より少ないタグを有するとともに、より少ないタグの型を有する中間コードオブジェクトを作り出すことができる。
【００１８】
ＳＷＦベクターグラフィックスは、ＳＶＧでは十分にサポートされない。ＳＷＦファイル内のベクターグラフィックスは、ＳＷＦ特有のフォーマットで（たとえば、DefineShapeタグで）定義される。ＳＷＦにより、各エッジのための、すなわち、１つは左側のエッジのための、１つは右側のエッジのための、２つのfillstyleが可能になる。一方、ＳＶＧの仕様は、各エッジのための２つのfillstyleをサポートしていない。クロスコンパイラ２０４は、各構成要素が多くとも単一のfillstyleおよびlinestyleを有するように、パスを構成要素ごとに分けることができる。さらに、クロスコンパイラ２０４は、パスの定義をＳＶＧベクターデータとして生成する。
【００１９】
さらに、ＳＷＦにおいて、現在のfillstyleおよびlinestyleは、パスの中間において変化し得る。たとえば、DefineShapeタグは、linestyleを青に設定するＳＷＦのStyleChangeRecordに続いて、赤のlinestyleを有する２つのエッジと、そして、青に塗られた２つ以上のエッジとを定義し得る。ＳＶＧにおいて、１つのパスに対する全てのエッジは、同じfillstyleまたはlinestyleを有する。クロスコンパイラ２０４は、ＳＷＦパスを構成要素に分け、各構成要素が有効なＳＶＧパスであることを確実にする。
【００２０】
クロスコンパイラ２０４は、ＳＷＦにおいて複数の異形を有する複数のタグを単一のタグに置き換える。ＳＷＦにおける、DefineShape、DefineShape2、DefineShape3、および、DefineShape4タグは、全て単一のDefineShapeにマッピングされる。簡素化されたＳＷＦタグは、PlaceObject、RemoveObject、DefineFontInfo、DefineFont、DefineButton、DefineBitsJPEG、DefineBitsLossLess、および、DefineTextを含む。
【００２１】
DefineFontInfoの場合では、中間コードオブジェクトにおけるそのタグの表現はない。クロスコンパイラ２０４は、DefineFontInfoに存在するフォント情報を、DefineFontInfoタグが（その文字ＩＤによって）参照するフォント定義に付加する。その後、DefineFontInfoおよびDefineFont(2/3)の対の情報は、１つのDefineFontタグに組み合わされる。
【００２２】
同様の方法で、DefineButtonCxformでは、DefineButtonCxformにおける色の形式変換が、中間コードのDefineButtonに付加される。同様の場合がDefineBitsおよびJPEGTablesについても現れる。JPEGTablesタグにおける情報は、DefineBitsタグからＪＰＥＧ画像を構成するために用いられる。JPEGTablesのデータ自体は、中間コードにおいて別個のタグとして表されない。
【００２３】
クロスコンパイラ２０４によって実行される処理のフローチャートが図６において示される。クロスコンパイラ２０４は、中間コードの中間表現を作り出すための前工程６０２と、中間コードオブジェクトを作り出すためにシリアライズするための後工程６０４とを有する。前工程６０２において、クロスコンパイラは、ステップ６０８で、ＳＷＦファイル６０６の構文解析を行なう。ＳＷＦファイル６０６は、バイナリフォーマットである。クロスコンパイラの構文解析の区分で、ＳＷＦファイル６０６におけるバイナリデータが分析され、タグ付けされたデータブロックが特定される。タグ付けされたデータブロックの型は、ＳＷＦの仕様で定義される。その後、各データブロックのために、構文解析ツールはＳＷＦタグを作成する。データブロックの１つは、ヘッダ情報を包含する。クロスコンパイラは、次に、ステップ６１０で、階層構造でＳＷＦタグを表す、中間コードでタグ付けされたデータブロックオブジェクトを生成する。ステップ６１２で、ステップ６１４におけるタグは、中間表現（中間コードＩＲ）で、当該タグと同等のものに形式変換される。
【００２４】
数値の対であるＪＳＯＮキーに形式変換されたＳＷＦタグに加えて、クロスコンパイラ２０４は、ＨＴＭＬ５と互換性のある要素を作り出すために形式変換を実行する。クロスコンパイラ２０４は、DefineImageオブジェクトを作り出す。タグの形式変換のステップ６１４は、画像の形式変換と、ビデオ／オーディオの再コード化およびコード変換と、チェックのサポートと、ベクターグラフィックス変換とを含むプロセスもまた含む。クロスコンパイラ２０４は、遭遇した各ＳＷＦタグに対するサポートがあるか否かを判断し、もしタグがサポートされていない場合には、クロスコンパイラは、警告メッセージを与えるであろう。メッセージにより、Adobe（登録商標）Flash（登録商標）プレーヤを含まないブラウザにおいて、どの特徴が提供されないであろうかを開発者が判断するのに役立つ。
【００２５】
画像の形式変換の場合には、ＳＷＦファイルは、DefineBitsLossLessおよびDefineBitsLossLess2タグへの符号化を包含してもよい。一部のブラウザは、ＪＰＥＧ、ＰＮＧ、およびＧＩＦ画像をサポートするにすぎないかもしれない。クロスコンパイラ２０４は、ＳＷＦファイルの画像をブラウザによってサポートされる画像フォーマットに再コード化する。
【００２６】
オーディオの場合には、ＳＷＦファイルは、圧縮されていない、ＡＤＰＣＭ、ＭＰ３、Nellymoser、およびSpeexを含む複数のフォーマットのオーディオを包含してもよい。ほとんどのブラウザは、ＭＰ３のみをサポートする。クロスコンパイラ２０４は、ＳＷＦファイルにおけるオーディオを、ＭＰ３のような、ブラウザによってサポートされるフォーマットに再コード化する。
【００２７】
同様に、ビデオの場合には、コンテンツは、複数の異なるフォーマットに再コード化されてもよい。ＳＷＦファイルは、ｈ．２６３またはＶＰ６フォーマットでビデオを包含してもよい。クロスコンパイラ２０４は、ビデオを、ｉＯＳによって用いられるｈ．２６４、またはGoogle Chrome、Firefox、およびOperaによって用いられるＷｅｂＭに再コード化してもよい。
【００２８】
中間コードランタイム２１０は、プラットフォームおよびブラウザに応じて読み込むべき画像、オーディオ、およびビデオのどのフォーマットが携帯装置で用いられているかを判断できる。
【００２９】
ステップ６１６で中間表現はシリアライズされ、ステップ６１８で中間コードオブジェクトを作り出す。シリアライズされている間に、中間表現における各タグは、数値の対および配列であるキーを含むＪＳＯＮオブジェクトとして出力される。全てのＪＳＯＮオブジェクトは、全てのタグを表す単一のＪＳＯＮオブジェクトに統合される。
【００３０】
［警告およびエラー］
クロスコンパイラ２０４は、３つの分類の警告メッセージを生成する。第１の分類は、ＳＷＦファイルノエラー（たとえば、仕様に対して誤ったビットマップデータ、予期されない特性、誤ったタグ）である。第２の分類は、サポートされないＳＷＦファイルにおける特徴についての警告である。第３の分類は、サポートされているが、全てのプラットフォームでは機能しない可能性のある特徴についての警告である。
【００３１】
図７Ａおよび図７Ｂは、警告メッセージの例である。
中間コードオブジェクト
クロスコンパイラ２０４によって生成される中間コードオブジェクトは、シリアライズされた中間表現の形式である。中間コードオブジェクトは、ＪＳＯＮオブジェクトであってもよい。ＪＳＯＮオブジェクトは、コンマで分けられ、波括弧で囲まれた数値の対であるキーの集まりである。ＪＳＯＮオブジェクトは、配列を含んでもよい。配列は、コンマで分けられ、角括弧で囲まれた、順序付けられた連続の数値として表される。
【００３２】
結果として生じた中間コードオブジェクトは、中間コードランタイムによって処理するために携帯装置に伝送されてもよい。ＪＳＯＮに基づいて生成される中間コードオブジェクトの例は、操作例において与えられ、以下で説明される。
【００３３】
中間コードランタイム
中間コードランタイム２１０は、ＨＴＭＬ文書において含まれるJavaScript（登録商標）プログラムであってもよい。以下で説明される実施例において、JavaScript（登録商標）のオブジェクト指向の型が用いられる。Stageおよびムービークリップは、オブジェクト指向の協約に基づいて、インスタンス化処理で作成され、メソッドを実施するために構成されたオブジェクトである。中間コードランタイム２１０は、（オープンソースのJavaScript（登録商標）ライブラリで一般的に手に入れることができる）Google Closureライブラリを付加的に組み込んでもよい。中間コードランタイム２１０は、ＨＴＭＬ文書のためにドキュメントオブジェクトモデル（ＤＯＭ）におけるＳＶＧノードを動的に付加し、除去し、修正し、ウェブブラウザを用いてアニメーションを実行する。図８から分かるように、中間コードランタイムは、ステップ８０２で、入力として中間コードオブジェクトを受け付けるＡＰＩを用いて初期化される。ステップ８０４で、中間コードランタイムは、中間コードオブジェクトからのデータを用い、ＳＶＧシーンを構成し、アニメーションを実行する（ステップ８０６）。
【００３４】
実施例では、開発者は、たとえば図９で示されるように、スクリプトと、関連付けられたＪＳＯＮオブジェクトとをＨＴＭＬ文書に挿入する。図９から分かるように、スクリプトは、入力パラメータとしてＪＳＯＮオブジェクトを受け付ける新しいStageオブジェクトを作成し、Stageオブジェクトのための"play"機能を実行する。
【００３５】
図１０は、ＳＶＧのシーンを構成する処理をより詳細に示す。実施例において、この処理は、Stageオブジェクトの作成時に実行される。ステップ１００２で、Stageオブジェクトは、入力として中間コードオブジェクトを受け付け、ＳＶＧ  ＤＯＭ要素を生成する。ＳＶＧ  ＤＯＭ要素は、属性と、横幅と、縦幅と、スタイルと、viewBoxとを含み得る<svg>タグ要素である。ステップ１００４において、中間コードランタイムは、<svg>タグ属性を設定する。Stageオブジェクトは、中間コードオブジェクトからbackgoundColorを取得し、backgoundColorを数値としてスタイル属性に適用する。ステップ１００６で、Stageオブジェクトは、フレームサイズ（frameSize）を中間コードオブジェクトから取得し、フレームサイズをviewBoxの数値として適用する。
【００３６】
中間コードランタイム２１０は、ＳＶＧ構造を保持するＤＯＭを生成する。
Stageオブジェクトは、ムービークリップを用いるアニメーションを実行するためにクロック（clock）および辞書を組み込む。ステップ１００８で、クロックは、フレームレート（frameRate）の数値に設定され、当該数値は中間コードオブジェクトから取得される。ステップ１０１０で、Stageオブジェクトは、辞書を初期化する。
【００３７】
辞書は、表示（display）オブジェクトのインスタンスの経過をそれらインスタンスの文字ＩＤによって追跡する。辞書は、タグＩＤフィールドおよびタグハンドラフィールドを有するデータ構造の形式であってもよい。メインのムービークリップが作成されると、メインのムービークリップは、遭遇した全ての表示オブジェクト定義を辞書に書き込む。新しくネストされたムービークリップが、制御タグハンドラによって作成可能であり、以下でDefineSprite表示オブジェクトとして説明される。ネストされたムービークリップは、主なムービークリップ内のムービークリップである。ＳＷＦの仕様に一致して、ネストされたムービークリップは、メインのムービークリップ内で作成され（中間コードDefineSpriteタグに基づいて作成され）、他の定義（definition）タグを包含することはない。
【００３８】
ステップ１０１２で、Stageオブジェクトは、メインのタイムラインを表すムービークリップの構造を作成し、メインのタイムラインにおいて、タイムラインは、１つ以上のフレームから成る。図１１から分かるように、ムービークリップの作成は、フレームＩＤを制御ハンドラにマッピングするステップ１１０２と、フレームＩＤをアクション（action）ハンドラにマッピングするステップ１１０４と、フレームカウント（frameCount）を設定するステップ１１０６と、辞書を設定するステップ１１０８とを包含する。
【００３９】
中間コードオブジェクトは、ＪＳＯＮオブジェクトとして形成される、ステップ１０１４の場合には、ムービークリップは、ＪＳＯＮオブジェクトに包含されるＪＳＯＮタグに基づいて構成される。ムービークリップは、ＳＶＧの<defs>タグとして設定される。図１２Ａ、図１２Ｂ、および図１２Ｃは、ムービークリップを構成するフローチャートである。最上位の<defs>タグがステップ１２０２で形成された後、ＪＳＯＮタグを分析して、タグの型を判断し、そのタグの型を前提として、動作がJavaScript（登録商標）ランタイムによって実行される。ＪＳＯＮタグは、定義タグ、制御タグ、アクションタグとして分類される。定義タグは、コンテンツを定義し、定義された各コンテンツは、文字ＩＤを割り当てられる。中間コードランタイムは、定義されたコンテンツおよび関連付けられた文字ＩＤをムービークリップのために辞書に格納する。制御タグは、文字ＩＤにより辞書における定義を参照でき、定義された文字についての一部の動作を実行する。アクションタグは、実施例において後述されるように、ActionScriptのバイトコードを包含し得る。
【００４０】
中間コードランタイム２１０は、辞書から得られる表示オブジェクトの表示リストを保持し、ＤＯＭにおいて動的に、作成し、修正したＳＶＧノードによってＳＶＧを使用する表示リストから表示オブジェクトを表示する。ムービークリップタイムラインを再生している間、表示リストは、新しい各フレームのために更新される。表示リストは、積み上げた順に表示オブジェクトを管理し、クリップ層の機能の実施を担う。表示オブジェクトは、表示リスト上の要素に一致する。表示オブジェクトは、文字定義のインスタンスであり、ある深さに配置される。表示オブジェクトは、ＤＯＭツリーの正しい位置にＳＶＧの<use>タグを作成するためのコードを包含する。クリップの深さは、表示オブジェクトに設定されてもよく、この場合、オブジェクト自体は表示されないであろう。代わりに、オブジェクトのアウトラインが表示リスト上の他のオブジェクトをクリップするために用いられる。クリップ層をＳＶＧで機能させるために、もたらされた全ての表示オブジェクトは、それらの<use>タグのクリップの深さ特性を設定することによって修正される。ＳＶＧは、１つのクリップの深さ特性をタグごとに許可するだけであるので、<use>タグは、クリップの深さ特性を有するグループにラップされる。特に、<use>タグは、もしそれが複数のクリップ層によって影響を受けるのであれば、複数のＳＶＧの<g>タグの内側にネストされてもよい。
【００４１】
中間コードランタイムは、DisplayObjectBuilderとして呼ばれるインタフェースクラスの定義を含む。DisplayObjectBuilderは、定義から表示オブジェクトのインスタンスを構築することができるビルダーのインタフェースを表す。spriteの場合では、spriteが表示リストに書き込まれるたびに、新しいムービークリップインスタンスが、DisplayObjectBuilderを用いて構成される。
【００４２】
図１２Ａ、図１２Ｂ、および図１２Ｃは、一連の決定ステップを示し、そこでは、中間コードオブジェクトは、具体例においてＪＳＯＮタグであるタグ（IC_tags）についてチェックされる。ムービークリップの作成時に分析されるＪＳＯＮタグは、IC_tag DefineFont１２０４、IC_tag DefineImage１２０６、IC_tag DefineButton１２３０、IC_tag DefineEditText１２３２、IC_tag DefineShape１２３４、IC_tag DefineText１２３６、IC_tag MovieDefinition１２３８、IC_tag DefineSound１２７０、IC_tag DoAction１２７２、IC_tag PlaceObject１２７４、IC_tag RemoveObject１２７６、および、IC_tag StartSound１２７８、および、IC_tag ShowFrame１２７９を含む。IC_tags DefineButton、DefineEditText、DefineFont、および、DefineTextは、定義タグである。制御タグは、IC_tag StartSoundタグ、IC_tag PlaceObjectタグ、および、IC_tag RemoveObjectタグを含む。
【００４３】
各定義タグおよび制御タグのそれぞれは、中間コードタグハンドラと呼ばれる関連付けられた操作を有する。定義および制御タグのために中間コードランタイム２１０によって実行される操作は、ＳＶＧノードを付加すること、または制御タグの場合においてＳＶＧノードを修正することを含む。制御タグは、特定のフレームに連結され、フレームが表示されるたびに実施される。アクションタグは、IC_tag doActionタグを含む。アクションタグもまた、特定のフレームに連結され、フレームが表示されるたびに実施される。
【００４４】
定義および制御タグは、ＤＯＭツリーに組み込むためにＳＶＧタグを作成する。ＤＯＭツリーのＳＶＧタグは、他のＨＴＭＬタグとともにウェブブラウザによって扱われる。
【００４５】
IC_tag DefineFontの場合には（１２０４）、DefineFontタグハンドラは、ステップ１２１４で作成される。DefineFontタグハンドラが構成されると、フォントのグラフ定義を包含できる、ＳＶＧの<font>ノードまたは<font-face>ノードが作成される。ＳＶＧの<font>ノードまたは<font-face>ノードは、ＤＯＭに付け加えられる。ＳＶＧの<font-face>ノードは、font-familyの属性を含み得る。そのため、作成されたフォントは、このfont-familyを参照することによって後に用いられ得る。ＳＶＧの<font-face>ノードは、上昇および下降の属性を含んでもよい。ＳＶＧの<font>ノードは、ＥＭ方形サイズの値とともに設定される"horiz-adv-x"属性を含んでもよい。ＳＶＧの<glyph>ノードは、グラフデータの値を有する属性ｄとユニコード属性とを設定できる。
【００４６】
IC_tag DefineImageの場合では（１２０６）、DefineImageタグハンドラは、ステップ１２１６で作成される。DefineImageタグハンドラが構成されると、ＳＶＧの<image>ノードが作成され、それは、横幅と縦幅とハイパーリンクとの属性を有してもよい。ＳＶＧの<image>ノードはＤＯＭに付け加えられる。
【００４７】
IC_tag DefineButtonの検出の場合には（１２３０）、中間コードランタイムは、DefineButtonタグハンドラをステップ１２４０で作成し、タグＩＤおよびDefineButtonタグハンドラをステップ１２５０で辞書に書き込むであろう。
【００４８】
IC_tag DefineEditTextの検出の場合には（１２３２）、中間コードランタイムは、DefineEditTextタグハンドラをステップ１２４２で作成し、ＳＶＧの<text>ノードを作り出すDefineEditTextタグハンドラをステップ１２５２で構成するであろう。ＳＶＧの<text>ノードはＤＯＭに付け加えられる。さらに、タグＩＤおよびDefineEditTextタグハンドラはステップ１２６２で辞書に書き込まれる。<text>ノードに設定され得る属性は、font-family、font-size、x、y、fill-rule、fill、fill-opacity、およびtext-anchorを含む。ＳＶＧは余白をつぶす一方でＳＷＦはそれを保護するので、"style"属性は余白を保護するための値に設定される。
【００４９】
IC_tag DefineShapeの検出の場合には（１２３４）、中間コードランタイムは、DefineShapeタグハンドラを作成するステップ１２４４と、DefineShapeタグハンドラを構成するステップ１２５４とを実行する。DefineShapeタグハンドラの構成により、形状が一致するパスノードを包含するＳＶＧグループが作り出され、形状を描くために必要な全てのfillstyleの定義を作成する。ＳＶＧグループは、ＳＶＧの<g>タグおよび一組のＳＶＧの<path>ノードとして形成される。ＳＶＧグループは、ＤＯＭに付け加えられる。さらに、ステップ１２６４で、タグＩＤおよびDefineShapeタグハンドラは、辞書に書き込まれる。
【００５０】
IC_tag DefineTextタグを検出して（１２３６）実行される操作は、DefineTextタグハンドラを作成するステップ１２４６、および、ステップ１２５６でDefineTextタグハンドラを構成することを含む。DefineTextタグハンドラを構成する際に、ＳＶＧの<g>ノードおよび一組の<text>ノードが作成される。テキストグループのためのＳＶＧの<g>ノードは、形式変換行列の値を有する形式変換の属性を含み得る。上述したように、ＳＶＧの<text>ノードは、font-family、font-size、x、y、fill-rule、fill、および、fill-opacityを含む属性を有してもよい。さらに、ステップ１２６６で、タグＩＤおよびDefineTextタグハンドラは辞書に書き込まれる。
【００５１】
IC_tag MovieDefinitionタグが検出される場合には（１２３８）、DefineSpriteタグハンドラを作成する操作がステップ１２４８で実行され、ステップ１２５８で、タグＩＤおよびDefineSpriteタグハンドラは辞書に書き込まれる。
【００５２】
IC_tag DefineSoundタグの検出（１２７０）に関連付けられた操作は、DefineSoundタグハンドラを作成するステップ１２８０と、DefineSoundタグハンドラをサウンドマネージャに登録するステップ１２９０とを含む。
【００５３】
IC_tag DoActionタグが検出される場合には（１２７２）、ステップ１２８２で、DoActionタグハンドラが作成され、ステップ１２９２で、DoActionタグハンドラがフレームのactionハンドラとして付加される。
【００５４】
PlaceObjectタグハンドラおよびRemoveObjectタグハンドラは、表示オブジェクトをフレームのための表示リストに書き込み、除去する責任を負う。IC_tag PlaceObjectタグが検出されると（１２７４）、PlaceObjectタグハンドラはステップ１２８４で作成され、ステップ１２９４で、PlaceObjectタグハンドラは、フレームのための制御タグハンドラとして付加される。IC_tag RemoveObjectタグが検出されると（１２７６）、RemoveObjectタグハンドラはステップ１２８６で作成され、ステップ１２９６で、RemoveObjectタグハンドラはフレームのための制御タグハンドラとして付加される。
【００５５】
IC_tag StartSoundタグが検出されると（１２７８）、ステップ１２８８で、StartSoundタグハンドラが作成され、ステップ１２９８で、StartSoundタグハンドラはフレームのための制御タグハンドラとして付加される。
【００５６】
IC_tag ShowFrameタグは、フレームの終わりを示す。IC_tag ShowFrameタグが検出されると（１２７９）、フレームカウンタは値を増加させる。
【００５７】
図１２Ａ、図１２Ｂ、および図１２Ｃの判断ステップは、全てのタグがＪＳＯＮオブジェクトにおいて検出されるまで繰り返される。
【００５８】
図８で示されるように、ＳＶＧシーンを構成するステップ８０４の後で、アニメーションがステップ８０６で実行される。図１２Ａ、図１２Ｂ、および図１２Ｃで、ムービークリップオブジェクトが構成されることにより、ムービークリップオブジェクトのために辞書に書き込まれる定義タグハンドラと、ＳＶＧノードの配置を有する初期のＤＯＭと、関連付けられたフレームのために定義された制御タグハンドラと、関連付けられたフレームのために定義されたアクションハンドラとがもたらされる。アニメーションは、クロックを開始することと、MovieObjectのために再生メソッドを実行することとにより、中間コードランタイムによって実行される。図１３、図１４、および図１５は、再生リストからアニメーションを作り出す実施例において含まれるステップを説明する。
【００５９】
アニメーションは、ＳＶＧノードをＤＯＭに動的に付加することと修正することとを含む。ＳＶＧノードを動的に付加することと修正することとに関係するステップは図１３のフローチャートに示される。アニメーションを開始させるために、クロックがステップ１３００で開始される。クロックは、登録された各ムービークリップの計時メソッドを呼び出すことによって開始し、設定されたフレームレートでこのメソッドの呼び出しを続けるであろう。次に、それぞれのムービークリップのために再生メソッドが呼び出される。再生メソッドにより、ムービークリップは、クロックに従ってステップ１３０２で次のフレームに進むことができる。各フレームで、それぞれのフレームのためにインデックスを付けられた一組の制御タグハンドラがステップ１３０４で実施される。また、各フレームで、それぞれのフレームのためにインデックスを付けられた一組のアクションハンドラがステップ１３０８で実施される。ステップ１３０８において、停止メソッドがムービークリップに呼び出されるまでムービークリップにおけるフレームが周期的に繰り返される。
【００６０】
図１４は、制御タグハンドラの実施に含まれるステップをさらに詳細に示す。フレームに関連付けられ得る一組の制御タグハンドラは、StartSoundタグハンドラ、PlaceObjectタグハンドラ、およびRemoveObjectタグハンドラを含む。StartSoundタグハンドラが実施された場合（１４００）、音がサウンドマネージャによってステップ１４０２で開始される。PlaceObjectタグハンドラの実施（１４０４）は、表示リストに表示オブジェクトを書き込み、それにより、フレームに表示されるシーンが修正される。ステップ１４０６で、もし表示オブジェクトが表示リストに存在すれば、表示オブジェクトは、設定された形式変換メソッドにより、および、任意には、設定されたカラー形式変換により、既存のカラー形式変換行列のためにステップ１４０８で修正される。ステップ１４０６で、もし表示オブジェクトが表示リストに存在しなければ、新しい表示オブジェクトがステップ１４１０で作成され、クリップの深さに設定される。新しい表示オブジェクトは、ステップ１４１２で表示リストに書き込まれ、ＤＯＭに付加され、表示オブジェクトのための形式変換行列がステップ１４１４で設定される。もし表示オブジェクトがカラー形式変換行列を有すれば、カラー形式変換行列が設定されるであろう。いずれの場合にも、形式変換行列およびカラー形式変換行列の設定により、表示オブジェクトは現在の表示フレームで表示されるか、または修正されるだろう。表示されたオブジェクトは、RemoveObjectタグハンドラが実行されたときに（１４１６）、ステップ１４１８で表示リストから除去されるであろう。一組の制御タグハンドラにおける他の制御タグハンドラが実施されるであろう（１４２０）。
【００６１】
button表示オブジェクトを作成する場合に置いて、表示オブジェクトを作成するステップで（１４１０）、ボタンは、グループの状態として形成され、ＳＶＧの<g>タグによって指し示される。形成される各ボタンは、アップ（通常）とオーバーとダウンとの３つの状態を有する。各ボタンの状態は、予め定義された異なる文字の表示リストとして形成される。それゆえに、ボタンは、クロスコンパイラによって与えられる通常の形状定義として作成される。ボタンは、全てのイベントハンドラが結び付けられるヒット状態も有する。ボタンのイベントハンドラは、中間コードランタイムによって処理される。イベントハンドラは、'マウスオーバ（mouseover）'、'マウスアップ（mouseup）'、'マウスダウン（mousedown）'、および、'マウスアウト（mouseout）'を含む。
【００６２】
図１５は、アクションハンドラの実施に含まれるステップを示す。アクションハンドラが遭遇したとき（１５００）、そのハンドラに関連付けられた動作が、ステップ１５０２で実施されるであろう。それらのステップは、記録された各アクションハンドラのためにステップ１５０４で繰り返される。
【００６３】
対話方式の映画が、JavaScript（登録商標）のようにオブジェクト指向プログラム言語になったActionScript（登録商標）を用いて実現され得るが、AdobeのFlashのアプリケーションを開発するために付加された用途を用いてもよい。対話方式、および、他のＳＷＦファイルを読み込むような複雑なタスクは、ActionScript（登録商標）を用いて実行され得る。
【００６４】
Adobeは、ActionScript（登録商標）のソースコードをActionScript（登録商標）のバイトコードにコンパイルするコンパイラを提供する。もしActionScript（登録商標）がアニメーションを制御するために開発されるのであれば、ActionScript（登録商標）のバイトコードは、たとえばDoActionタグおよびDefineButtonタグの形式でＳＷＦファイルに含まれるであろう。Adobe（登録商標）Flash（登録商標）プレーヤは、ActionScript（登録商標）のバイトコードを解釈するための性能を提供する。
【００６５】
クロスコンパイラ２０４は、ActionScript（登録商標）のバイトコードを中間コードオブジェクトに伝達する。その伝達は、ＳＷＦのDoActionタグを、ActionScript（登録商標）のバイトコードを包含する、中間オブジェクトのDoActionタグに変換することによって達成される。類似の変換がボタンに含まれるActionScript（登録商標）のバイトコードのために実行される。その後、クロスコンパイラ２０４は、ActionScript（登録商標）のバイトコードを介して伝達する。中間コードランタイムは、中間コードオブジェクトに包含されるActionScript（登録商標）のバイトコードの解釈プログラムとして稼働する。
【００６６】
操作例１
操作例の入力および出力が図１６〜図１９に示される。図１６のＳＷＦファイルは、１つのDefineShapeタグにおける２つの隣接する矩形、すなわち、赤色の矩形および緑色の矩形を描くであろう。この定義は、PlaceObjectタグによってステージ（stage）に書き込まれ、フレームは、ShowFrameタグによって表示される。ＳＷＦファイルは、'End'タグで終わる。図１６は、テキストとして表されるＳＷＦファイルを示す。ＳＷＦのバイナリフォーマットのテキスト表現は、クロスコンパイラ２０４の構文解析ツールを用いることで得られる。図１６から分かるように、ＳＷＦファイルは、ヘッダと一組のタグ付けされたデータブロックとから成る。ＳＷＦのヘッダは、ファイルのバージョンと、ファイルの長さと、フレームサイズと、フレームレートと、フレームカウントとを示す。図１６で示される例は、バージョン（Version）と、フレームサイズ（FrameSize）と、フレームレート（FrameRate）と、フレームカウント（FrameCount）とを有するヘッダを示す。タグ付けされたデータブロックにおいて、各タグはタグの型で特定される。図１６に示される例では、タグの型は、[09:SetBackgroundColor]と、[02:DefineShape]と、[26:PlaceObject]と、[01:ShowFrame]と、[00:End]とである。DefineShapeタグは、FillStylesの配列と、ShapeRecordsの配列とを含む。
【００６７】
図１７Ａおよび図１７Ｂは、ＪＳＯＮオブジェクトの一例を、クロスコンパイラを用いて作り出した中間表現として示す。
【００６８】
クロスコンパイラは、図１６のＳＷＦの抽象構文木（ＡＳＴ）を構文解析し、それを中間表現に変換する。ＡＳＴの概要は同様であるが、多くの点で元のＳＷＦのＡＳＴと異なる。
【００６９】
元のＳＷＦファイルにおける（DefineShapeタグに包含される）ベクターグラフィックスがＳＷＦ仕様のフォーマットで定義される一方で、クロスコンパイラは、これをＳＶＧのベクターグラフィックスの中間表現に変換する。たとえば、ＳＷＦは、各エッジのための、すなわち１つは左側のエッジのための、１つは右側のエッジのための、２つのfillstyleを可能にする。ＳＶＧは、その振る舞いをサポートしないので、クロスコンパイラは、自動的にパスを２つの構成要素、すなわち、赤色の矩形を描くものと緑色の矩形を描くものとに分ける。さらに、クロスコンパイラは、パス定義をＳＶＧのベクターデータ（ストリングは"M2479"から開始する）の中間表現として生成する。
【００７０】
上述したように、ＪＳＯＮのＡＳＴは、ＳＷＦのＡＳＴよりも簡潔である。つまり、より少数の異なるタグが存在する。ＳＷＦの仕様では、複数の様々な特有のタグが存在し得る（たとえば、DefineShape、DefineShape2、DefineShape3、およびDefineShape4）。クロスコンパイラは、それらを全て、中間コードのDefineShapeにマッピングし、中間コードランタイムをより簡潔にする。複数のバージョンを有する他のＳＷＦタグにも同じことがいえる。
【００７１】
図１７Ａおよび図１７Ｂには示されないが、クロスコンパイラは、複数の他のＳＷＦ仕様の特徴を即応のウェブフォーマットに変換する。たとえば、画像、オーディオ、ビデオ、およびフォント定義は、全て、ブラウザで容易に使用できるフォーマットに変換される。
【００７２】
上述したように、ＪＳＯＮオブジェクトは、波括弧で囲まれた数値の対、および角括弧で囲まれた配列であるキーで作り上げられる。図１７Ａ、図１７Ｂに示されるＪＳＯＮオブジェクトは、第１の角括弧内の要素の配列を有するＪＳＯＮのDefineShapeタグから成る。"paths"および"fillstyles"は、DefineShapeタグ内の配列として表される。DefineShapeタグの後に、ＳＶＧの形式変換行列に変換されたＳＷＦの形式変換行列がある。形式変換行列の下に、ＪＳＯＮのPlaceObjectタグ、その後にShowFrameタグがある。ＳＷＦのヘッダから得られる"backgroundColor"と、"frameSize"と、"frameCount"と、"frameRate"は、キー、すなわち数値の対として与えられる。
【００７３】
図１８は、図１７Ａ、図１７ＢのＪＳＯＮオブジェクトを用いて中間コードランタイムによって生成され得るＳＶＧコードの一例を示す。中間コードランタイムは、ＳＶＧタグおよびＨＴＭＬ５を描画するためにウェブブラウザによって与えられる表示操作を用い、ムービークリップを再生するために各フレームのためにＳＶＧを更新するような動作を実行する。
【００７４】
中間コードランタイムによって生成されたムービークリップの出力例が図１９に示される。説明のために、赤色の矩形は斜め線のハッシュマーク模様を用いて示され、緑色の矩形がクロスハッチ模様を用いて示される。
【００７５】
操作例２
他の操作例が相互に作用する複数のＳＷＦファイルを含む。Adobe（登録商標）Flash（登録商標）プレーヤの特徴として、他の子アニメーションを呼び出すというアニメーション性能が挙げられる。操作例は、この特徴をもたらすために中間コードランタイムの使用を説明する。
【００７６】
Adobe Flash IDEを用いる開発者は、"loadMovie"の呼び出しを含む、ソースレベルのActionScriptを生成できる。Adobe Flash IDEは、ActionScriptをコンパイルし、ActionScriptバイトコードを包含するＳＷＦのDoActionタグをもたらす。ActionScriptバイトコードは、（ActionScriptにおけるloadMovie機能に相当する）ActionGetURL2命令を含むであろう。Adobe（登録商標）Flash（登録商標）プレーヤは、ＳＷＦファイルを実施し、ActionScriptバイトコードを解釈できる。ActionGetURL2命令に遭遇すると、プレーヤは、子ＳＷＦファイルを取り出す。
【００７７】
操作例２において、各アニメーションは、Adobe Flash IDEを用いてそれぞれのＳＷＦファイルにコンパイルされる。親アニメーションは、ActionScript2.0のloadMovie機能を含む。図２０は、ActionScript2.0のloadMovie機能、すなわちloadMovie("child.swf', _root)を有する親ＳＷＦファイルの一例を示す。ActionScript2.0の"loadMovie"機能を有する親Flashファイルは、ActionGetURL2命令を含むActionScriptバイトコードを作り出すためにコンパイルされる。任意の子アニメーションは、それぞれのＳＷＦファイルにコンパイルされる。
【００７８】
クロスコンパイラ２０４は親ＳＷＦファイルをコンパイルする。ＨＴＭＬページは、上述したように、親ＳＷＦファイルをStageオブジェクトとして組み込む。さらに、任意の子ＳＷＦファイルがクロスコンパイルされる。その後、フレームの表示中、またはボタンイベントの処理中のような親映画のタイムラインの実施中に、親映画は、ActionGetURL2のActionScript命令に遭遇し得る。ActionGetURL2命令は、doActionのＪＳＯＮタグに含まれるActionScripバイトコードの形式である。ActionGetURL2機能に遭遇した場合に、中間コードランタイムは、ＪＳＯＮオブジェクトの形式で、XmlHttpRequestを用いる、クロスコンパイラされた子ＳＷＦファイルを読み込むであろう。ＪＳＯＮオブジェクトは、ActionGetURL2機能において規定された位置に書き込まれる。子映画を表すＪＳＯＮオブジェクトを受けた後に、そのオブジェクトは、ムービークリップとして解釈され、親タイムライン内でネストされたムービークリップとして描画される。
【図９】
0005815114.tif 000002
【図１６】
0005815114.tif 000003
【図１７Ａ】
0005815114.tif 000004
【図１７Ｂ】
0005815114.tif 000005
【図１８】
0005815114.tif 000006
【図１９】
0005815114.tif 000007
【図２０】
0005815114.tif 000008
【図１】
0005815114.tif 000009
【図２】
0005815114.tif 000010
【図３】
0005815114.tif 000011
【図４】
0005815114.tif 000012
【図５】
0005815114.tif 000013
【図６】
0005815114.tif 000014
【図７Ａ】
0005815114.tif 000015
【図７Ｂ】
0005815114.tif 000016
【図８】
0005815114.tif 000017
【図１０】
0005815114.tif 000018
【図１１】
0005815114.tif 000019
【図１２Ａ】
0005815114.tif 000020
【図１２Ｂ】
0005815114.tif 000021
【図１２Ｃ】
0005815114.tif 000022
【図１３】
0005815114.tif 000023
【図１４】
0005815114.tif 000024
【図１５】
0005815114.tif 000025