(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムの制御方法であって、仮想エンジンとアプリケーションプログラムとがインストールされた端末に適用され、前記アプリケーションプログラムは、前記仮想エンジンに基づいて開発されたプログラムであり、前記アプリケーションプログラムは、外層プログラムと内層プログラムとを含み、前記方法は、
前記仮想エンジンが、操作座標と圧力値とを含む圧力タッチイベントをインターセプトし、
前記仮想エンジンが、前記圧力タッチイベントを前記外層プログラムに伝達し、
前記外層プログラムが、前記圧力タッチイベントを前記内層プログラムに伝達し、
前記内層プログラムが、前記圧力タッチイベントに応じて所定の操作を実行する、ことを含む方法。
【請求項２】
前記外層プログラムは、第１のプログラミング言語を用いて開発されたプログラムであり、前記内層プログラムは、第２のプログラミング言語を用いて開発されたプログラムであり、
前記外層プログラムが、前記圧力タッチイベントを前記内層プログラムに伝達することは、
前記外層プログラムが、前記圧力タッチイベントを前記内層プログラムのメインスレッドに送信し、
前記内層プログラムのメインスレッドが前記圧力タッチイベントを前記内層プログラムの入力コントローラに伝達する、ことを含み、
前記入力コントローラは、外部入力信号を処理するためのプログラムモジュールである請求項１に記載の方法。
【請求項３】
前記端末は、第１のオペレーティングシステムを用い、前記端末にさらにプリセットプログラムがインストールされており、
前記仮想エンジンが、前記圧力タッチイベントを前記外層プログラムに伝達する前に、さらに、
前記アプリケーションプログラムの起動の際に、前記プリセットプログラムが前記仮想エンジンにおけるメッセージ転送コードのメッセージ受信側を前記内層プログラムから前記外層プログラムに変更することを含み、
前記仮想エンジンが、前記圧力タッチイベントを前記外層プログラムに伝達することは、
前記仮想エンジンにおいて前記プリセットプログラムによって修正された前記メッセージ転送コードに従って、前記圧力タッチイベントを前記外層プログラムに伝達することを含む請求項１または２に記載の方法。
【請求項４】
前記アプリケーションプログラムの起動の際に、前記プリセットプログラムが前記仮想エンジンにおけるメッセージ転送コードのメッセージ受信側を前記内層プログラムから前記外層プログラムに変更することは、
前記アプリケーションプログラムの起動の際に、前記プリセットプログラムが前記仮想エンジンのメモリにおけるベースアドレスを取得し、
前記プリセットプログラムが前記ベースアドレスと、プリセットオフセットアドレスに従って前記メッセージ転送コードに対応するコード位置を位置決めし、
前記プリセットプログラムが位置決めされた前記コード位置に応じて前記メッセージ転送コードのメッセージ受信側アドレスを前記内層プログラムから前記外層プログラムに変更する、ことを含む請求項３に記載の方法。
【請求項５】
前記端末は第２のオペレーティングシステムを用い、
前記外層プログラムが、前記圧力タッチイベントを前記内層プログラムのメインスレッドに送信する前に、さらに、前記内層プログラムが前記外層プログラムへ呼び出し要求を送信することを含み、
前記呼び出し要求は、前記外層プログラムが前記圧力タッチイベントを受信した場合に前記内層プログラムに転送するように指示するために用いられる請求項２に記載の方法。
【請求項６】
前記第２のオペレーティングシステムは、システムレベルのユーザーインターフェースＵＩフレームワークを含み、
前記仮想エンジンが、圧力タッチイベントをインターセプトすることは、
前記仮想エンジンが、前記システムレベルのＵＩフレームワークにおいて前記圧力タッチイベントをインターセプトすることを含む請求項５に記載の方法。
【請求項７】
前記内層プログラムが、前記圧力タッチイベントに応じて所定の操作を実行することは、
前記内層プログラムが、前記圧力タッチイベントから前記操作座標と前記圧力値とを解析し、
前記内層プログラムが、前記操作座標に対応する入力コントロールを確定し、
前記圧力値が予定の閾値よりも大きいと、前記内層プログラムが前記入力コントロールに対応する第１の操作を実行し、
前記圧力値が前記予定の閾値よりも小さいと、前記内層プログラムが前記入力コントロールに対応する第２の操作を実行する、ことを含む請求項１〜６のいずれか一項に記載の方法。
【請求項８】
アプリケーションプログラムの制御装置であって、一つ又は複数のプロセッサー、およびプログラムユニットを記憶する一つ又は複数のメモリを含み、前記プログラムユニットは前記プロセッサーによって実行され、前記プログラムユニットは、仮想エンジンモジュールとアプリケーションプログラムモジュールとを含み、前記アプリケーションプログラムは前記仮想エンジンモジュールに基づいて開発されたプログラムモジュールであり、前記アプリケーションプログラムモジュールは、外層プログラムモジュールと内層プログラムモジュールとを含み、
前記仮想エンジンモジュールは、操作座標と圧力値とを含む圧力タッチイベントをインターセプトするように設置され、
前記仮想エンジンモジュールは、前記圧力タッチイベントを前記外層プログラムモジュールに伝達するように設置され、
前記外層プログラムモジュールは、前記圧力タッチイベントを前記内層プログラムモジュールに伝達するように設置され、
前記内層プログラムモジュールは、前記圧力タッチイベントに応じて所定の操作を実行するように設置される装置。
【請求項９】
前記外層プログラムモジュールは、前記圧力タッチイベントを前記内層プログラムモジュールのメインスレッドに送信するように設置され、
前記内層プログラムモジュールは、前記メインスレッドにより前記圧力タッチイベントを前記内層プログラムモジュールの入力コントローラに伝達するように設置され、
前記入力コントローラは、前記内層プログラムモジュールにおいて外部入力信号を処理するためのプログラムモジュールである請求項８に記載の装置。
【請求項１０】
前記装置は第１のオペレーティングシステムを用い、前記プログラムユニットはプリセットプログラムモジュールをさらに含み、
前記プリセットプログラムモジュールは、前記アプリケーションプログラムの起動の際に、前記仮想エンジンにおけるメッセージ転送コードのメッセージ受信側を前記内層プログラムモジュールから前記外層プログラムモジュールに変更するように設置され、
前記仮想エンジンモジュールは、前記プリセットプログラムモジュールによって変更された前記メッセージ転送コードに従って、前記圧力タッチイベントを前記外層プログラムモジュールに伝達するように設置される請求項８または９に記載の装置。
【請求項１１】
前記プリセットプログラムモジュールは、前記アプリケーションプログラムの起動の際に、前記仮想エンジンモジュールのメモリにおけるベースアドレスを取得し、前記ベースアドレスとプリセットオフセットアドレスに従って前記メッセージ転送コードに対応するコード位置を位置決めし、位置決めされた前記コード位置に応じて前記メッセージ転送コードのメッセージ受信側アドレスを前記内層プログラムモジュールから前記外層プログラムモジュールに変更する、ように設置される請求項１０に記載の装置。
【請求項１２】
前記内層プログラムモジュールは、さらに、前記外層プログラムモジュールへ呼び出し要求を送信するように設置され、前記呼び出し要求は、前記外層プログラムモジュールが前記圧力タッチイベントを受信した場合に前記内層プログラムモジュールに転送するように指示するために用いられる請求項９に記載の装置。
【請求項１３】
前記内層プログラムモジュールは、前記圧力タッチイベントから前記操作座標と前記圧力値を解析し、前記操作座標に対応する入力コントロールを確定し、前記圧力値が予定の閾値よりも大きいと、前記入力コントロールに対応する第１の操作を実行し、前記圧力値が前記予定の閾値よりも小さいと、前記入力コントロールに対応する第２の操作を実行する、ように設置される請求項８〜１２のいずれか一項に記載の装置。
【請求項１４】
端末であって、プロセッサーとメモリとを含み、前記メモリに少なくとも一つのコマンドが記憶され、前記コマンドは前記プロセッサーによってロードされ実行されて請求項１〜７のいずれか一項に記載のアプリケーションプログラムの制御方法を実現する端末。
【請求項１５】
コンピュータ読み取り可能な記憶媒体であって、前記記憶媒体にプロセッサーにロードされ実行されて請求項１〜７のいずれか一項に記載のアプリケーションプログラムの制御方法を実現する少なくとも一つのコマンドが記憶されているコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１７年０７月１４日に中国専利局に提出した、出願番号が２０１７１０５７３７２５.３であって、発明の名称が「アプリケーションプログラムの制御方法、装置、および機器」である中国特許出願の優先権を主張し、本願で、その全ての内容を援用するものとする。
【０００２】
本願の実施例は、ヒューマンコンピュータインタラクションの分野に関し、特に、アプリケーションプログラムの制御方法、装置、端末、および記憶媒体に関する。
【背景技術】
【０００３】
携帯端末において、仮想エンジンを用いて開発されたアプリケーションプログラムが多く存在し、特に、３次元仮想エンジンを用いて開発されたアプリケーションプログラムが多く存在し、例えば、仮想現実アプリケーションプログラム、３次元地図プログラム、ファーストパーソン・シューティングゲーム(Ｆｉｒｓｔ-ｐｅｒｓｏｎ ｓｈｏｏｔｉｎｇ ｇａｍｅ、ＦＰＳ)、マルチプレイヤーオンラインバトルアリーナゲーム(Ｍｕｌｔｉｐｌａｙｅｒ Ｏｎｌｉｎｅ Ｂａｔｔｌｅ Ａｒｅｎａ Ｇａｍｅｓ、ＭＯＢＡ)がある。
【０００４】
現在、よく使用されている３次元仮想エンジンは、Ｕｎｉｔｙエンジンであり、アプリケーションプログラムがＵｎｉｔｙエンジンに基づいて開発されたＦＰＳゲームアプリケーションプログラムを例にとって、ユーザーが当該ＦＰＳゲームアプリケーションプログラムを使用する場合に、ユーザーインタフェースにいくつかの仮想キーが表示され、ユーザーが仮想キーを押すことでゲームキャラクターを制御して前進、後退、振り向き、火発射などのアクションを行わせる。
【０００５】
圧力タッチスクリーンが配置されている携帯端末があるが、現在のＵｎｉｔｙエンジンは圧力タッチ機能を直接にサポートすることはできないので、圧力タッチ技術を用いてＵｎｉｔｙエンジンに基づいて開発されたアプリケーションプログラムを制御することができない。
【発明の概要】
【課題を解決するための手段】
【０００６】
圧力タッチ技術を用いてＵｎｉｔｙエンジンに基づいて開発されたアプリケーションプログラムを制御することができない問題を解決するために、本願の実施例は、アプリケーションプログラムの制御方法、装置、端末、および記憶媒体を提供する。前記技術案は以下のようである。
【０００７】
第１の方面によれば、アプリケーションプログラムの制御方法を提供し、仮想エンジンとアプリケーションプログラムとがインストールされた端末に適用され、前記アプリケーションプログラムは前記仮想エンジンに基づいて開発されたプログラムであり、前記アプリケーションプログラムは外層プログラムと内層プログラムとを含み、前記方法は、
前記仮想エンジンが操作座標と圧力値とを含む圧力タッチイベントをインターセプトし、
前記仮想エンジンが前記圧力タッチイベントを前記外層プログラムに伝達し、
前記外層プログラムが前記圧力タッチイベントを前記内層プログラムに伝達し、
前記内層プログラムが前記圧力タッチイベントに応じて所定の操作を実行する、ことを含む方法。
【０００８】
第２の方面によれば、アプリケーションプログラムの制御装置を提供し、一つ又は複数のプロセッサー、およびプログラムユニットを記憶する一つ又は複数のメモリを含み、前記プログラムユニットは前記プロセッサーによって実行され、前記プログラムユニットは仮想エンジンモジュールとアプリケーションプログラムモジュールとを含み、前記アプリケーションプログラムは前記仮想エンジンモジュールに基づいて開発されたプログラムモジュールであり、前記アプリケーションプログラムモジュールは外層プログラムモジュールと内層プログラムモジュールとを含み、
前記仮想エンジンモジュールは、操作座標と圧力値とを含む圧力タッチイベントをインターセプトするように設置され、
前記仮想エンジンモジュールは、前記圧力タッチイベントを前記外層プログラムモジュールに伝達するように設置され、
前記外層プログラムモジュールは、前記圧力タッチイベントを前記内層プログラムモジュールに伝達するように設置され、
前記内層プログラムモジュールは、前記圧力タッチイベントに応じて所定の操作を実行するように設置される。
【０００９】
本願の実施例の他の局面によれば、端末を提供し、前記端末はプロセッサーとメモリとを含み、前記メモリに少なくとも一つのコマンドが記憶され、前記コマンドは前記プロセッサーによってロードされ実行されて本願のアプリケーションプログラムの制御方法を実現する。
【００１０】
本願の実施例の他の局面によれば、さらに記憶媒体を提供し、当該記憶媒体にコンピュータプログラムが記憶され、当該コンピュータプログラムは実行中に本願のアプリケーションプログラムの制御方法を実行するように設置される。
【００１１】
本願の実施例で提供される技術案は以下の有益な効果をもたらす。
圧力タッチイベントをアプリケーションプログラムの外層プログラムに伝達してから、アプリケーションプログラムの外層プログラムからアプリケーションプログラムの内層プログラムに伝達し、内層プログラムが圧力タッチイベントに応じて所定の操作を実行することにより、アプリケーションプログラムの内層プログラムがオペレーティングシステム内で直接に実行することができず、正常に実行するためには外部プログラムを追加する必要があり、外層プログラムが存在するため、アプリケーションプログラムが圧力タッチイベントに直接に処理することができないという問題を解決し、これにより、３次元仮想エンジンに基づいて開発されたアプリケーションプログラムでは、圧力タッチ技術を用いて入力制御を行うことを実現し、携帯端末の限られた画面領域で複数の制御コマンドのトリガーを実現し、これによりヒューマンコンピュータインタラクションの効率を向上させる。
【図面の簡単な説明】
【００１２】
本願の実施例における技術案をより明確に説明するために、以下で実施例の記述において使用する必要がある図面を簡単に紹介し、もちろん、以下に記述の図面は本願のいくつかの実施例に過ぎず、当業者にとって、創造的な労力をしない前提で、これらの図面に応じて他の図面を得ることもできる。
【００１３】
【図１】本願の一つの例示的な実施例で提供される端末の構成概略図である。
【図２】本願の一つの例示的な実施例で提供されるアプリケーションプログラムの制御方法のフローチャートである。
【図３】本願の一つの例示的な実施例で提供されるアプリケーションプログラムの制御方法の実施中のインタフェース概略図である。
【図４】本願の他の一つの例示的な実施例で提供されるアプリケーションプログラムの制御方法のフローチャートである。
【図５】本願の他の一つの例示的な実施例で提供される端末の構成概略図である。
【図６】本願の他の一つの例示的な実施例で提供されるアプリケーションプログラムの制御方法のフローチャートである。
【図７】本願の他の一つの例示的な実施例で提供される端末の構成概略図である。
【図８】本願の他の一つの例示的な実施例で提供されるアプリケーションプログラムの制御方法のフローチャートである。
【図９】本願の他の一つの例示的な実施例で提供される端末の構成概略図である。
【図１０】本願の他の一つの例示的な実施例で提供されるアプリケーションプログラムの制御方法のフローチャートである。
【図１１】本願の他の一つの例示的な実施例で提供される端末の構成概略図である。
【図１２】本願の他の一つの例示的な実施例で提供されるアプリケーションプログラムの制御方法のフローチャートである。
【図１３】本願の他の一つの例示的な実施例で提供されるアプリケーションプログラムの制御方法のフローチャートである。
【図１４】本願の一つの例示的な実施例で提供されるアプリケーションプログラムの制御装置のブロック図である。
【発明を実施するための形態】
【００１４】
本発明の実施例の目的、技術案、及び利点をより明確にするために、以下では添付の図面を参照しながら本発明の実施形態をさらに詳細に記述する。
【００１５】
よく使用する仮想エンジンは、Ｕｎｉｔｙエンジンであり、Ｕｎｉｔｙエンジンに基づいて開発されたアプリケーションプログラムは、一般的にＣ#プログラミング言語を用いて作成される。Ｕｎｉｔｙエンジンに基づいて開発されたアプリケーションプログラムを、異なるオペレーティングシステムにリリースする場合に、異なるオペレーティングシステムは異なるプログラミング言語をサポートするので、アプリケーションプログラムに対して適応的に修正する必要がある。例えば、ＡｎｄｒｏｉｄオペレーティングシステムはＪａｖａ（登録商標、以下同じ）プログラミング言語で開発されたアプリケーションプログラムをサポートし、Ａｎｄｒｏｉｄオペレーティングシステムにおいて正常に実行するためにはＣ#プログラミング言語に基づいて作成されたアプリケーションプログラムに対してＪａｖａプログラミング言語で作成された一つの外層プログラムを追加する必要がある。また、例えば、ＩＯＳオペレーティングシステムは、Ｏｂｊｅｃｔ-Ｃプログラミング言語で開発されたアプリケーションプログラムをサポートし、ＩＯＳオペレーティングシステムにおいて正常に実行するためには、Ｃ#プログラミング言語に基づいて作成されたアプリケーションプログラムに対してＯｂｊｅｃｔ-Ｃプログラミング言語で作成された一つの外層プログラムを追加する必要がある。
【００１６】
外層プログラムが存在するため、Ｃ#プログラミング言語に基づいて作成されたアプリケーションプログラムは、オペレーティングシステムの下層の圧力タッチイベントを取得することができないので、圧力タッチ技術をサポートしない。そのために、本願の実施例は以下の実施例を提供し、当該技術問題を解決する。
【００１７】
図１は、本願の一つの例示的な実施例で提供される端末の構成概略図である。図１に示すように、当該端末は、プロセッサー１１と、タッチスクリーン１２と、メモリ１３とを含む。
【００１８】
プロセッサー１１は、シングルコアプロセッサー、マルチコアプロセッサー、組み込みチップ、およびコマンド実行性能を有するプロセッサーのうちの少なくとも１つであってもよい。
【００１９】
タッチスクリーン１２は、感圧タッチスクリーンであり、感圧タッチスクリーンは、タッチスクリーン１２に掛けられた押圧強度を測定することができる。
【００２０】
メモリ１３は、プロセッサー１１の実行可能プログラムを記憶している。例示的に、メモリ１３には、アプリケーションプログラムＡ、アプリケーションプログラムＢ、アプリケーションプログラムＣ、仮想エンジン１７、感圧モジュール１８、オペレーティングシステムのカーネル層１９を記憶している。例示的に、アプリケーションプログラムＡは、アプリケーションプログラムＡの外層プログラム１４１と、アプリケーションプログラムＡの内層プログラム１４２とを含む。なお、アプリケーションプログラムＡは、仮想エンジン１７に基づいて開発されたアプリケーションプログラムであり、アプリケーションプログラムＡの外層プログラムは、第１のプログラミング言語を用いて開発され、アプリケーションプログラムＡの内層プログラムは第２のプログラミング言語を用いて開発される。選択的に、第１のプログラミング言語は、オペレーティングシステムのアプリケーション層によって直接にサポートされる開発言語であり、第２のプログラミング言語はアプリケーションプログラムの初期開発に使用されるプログラミング言語であり、第１のプログラミング言語と、第２のプログラミング言語とは、二つの異なるプログラミング言語であり、そして、アプリケーションプログラムＡの外層プログラムがない場合に、アプリケーションプログラムＡの内層プログラムはオペレーティングシステムで直接に実行することができない。アプリケーションプログラムＡの外層プログラムには、アプリケーションプログラムＡの内層プログラムを含む。選択的に、アプリケーションプログラムＡは、仮想エンジン１７によって開発されたゲームプログラム、仮想現実プログラム、３次元地図プログラム、３次元デモプログラムのうちの少なくとも１つを含むがこれらに限定されない。例えば、端末のオペレーティングシステムはがＡｎｄｒｏｉｄオペレーティングシステムを採用する場合に、アプリケーションプログラムＡの外層プログラムはＪａｖａプログラミング言語を用いて開発され、アプリケーションプログラムＡの内層プログラムはＣ#言語を用いて開発され、また、例えば、端末のオペレーティングシステムはＩＯＳオペレーティングシステムを用いる場合に、アプリケーションプログラムＡの外層プログラムはＯｂｊｅｃｔ-Ｃプログラミング言語を用いて開発され、アプリケーションプログラムＡの内層プログラムはＣ#言語を用いて開発される。
【００２１】
仮想エンジン１７は、複数のオペレーティングシステムプラットフォームをサポートするインタラクティブエンジンであり、例示的に、仮想エンジンは、ゲーム開発分野、仮想現実(Ｖｉｒｔｕａｌ Ｒｅａｌｉｔｙ、ＶＲ)分野、３次元地図分野などの複数の分野のプログラム開発に適用され得る。仮想エンジンは、３次元仮想エンジン、二次元仮想エンジンなどを含むが、これらに限定されない。本願の実施例では、仮想エンジン１７の具体的なタイプが限定されず、以下の実施例において、仮想エンジン１７が３次元仮想エンジン、特にＵｎｉｔｙエンジンであることを例に説明する。
【００２２】
感圧モジュール１８は、タッチスクリーンドライバ１９１によって報告される圧力タッチイベントを受信するように設置されるモジュールである。圧力タッチイベントは、圧力タッチイベントの圧力値、および座標値を含む。当該座標値は、表示スクリーン上の圧力タッチ操作のタッチ位置を指示するために用いられる。選択的に、表示スクリーンの水平方向を横軸として、表示スクリーンの垂直方向を縦軸として二次元座標系を得る。
【００２３】
例示的に、カーネル層１９は、タッチスクリーンドライバ１９１、および他のドライバ１９２を含む。タッチスクリーンドライバ１９１は、圧力タッチイベントを検出するように設置されるモジュールであり、タッチスクリーンドライバ１９１は、圧力タッチイベントを検出すると、圧力タッチイベントを感圧モジュール１８に伝達する。
【００２４】
他のドライバ１９２は、プロセッサー１１に関するドライバ、メモリ１３に関するドライバ、ネットワークコンポーネントに関するドライバ、サウンドコンポーネントに関するドライバなどであってもよい。
【００２５】
当業者は、上記が端末の構造の例示であることを理解できる。 異なる実施形態では、端末は、より多いまたはより少ないコンポーネントを有してもよい。 例えば、端末は、重力加速度センサー、ジャイロセンサー、および電源をさらに含んでもよい。
【００２６】
図２は、本願の一つの例示的な実施例で提供されるアプリケーションプログラムの制御方法のフローチャートである。本実施例は、当該アプリケーションプログラムの制御方法を図１に示す端末に適用する例を挙げて説明する。当該方法は、以下のステップを含む。
【００２７】
ステップ１０１において、仮想エンジンは、圧力タッチイベントをインターセプトする。
【００２８】
圧力タッチイベントは、圧力タッチ技術を用いたタッチスクリーンでトリガーされるタッチイベントである。本実施例において、仮想エンジンはアプリケーションプログラムＡによって使用されるエンジンである。
【００２９】
ユーザーがアプリケーションプログラムＡを使用すると、端末のタッチスクリーン１２にアプリケーションプログラムＡのユーザーインタフェースを表示し、当該ユーザーインタフェースにヒューマンコンピュータインタラクションに用いられるコントロール、例えば、仮想ボタンを含む。ユーザーがタッチスクリーンに圧力タッチ操作をかける場合に、端末のタッチスクリーンドライバ１９１は圧力タッチイベントを生成し、感圧モジュール１８に報告する。感圧モジュール１８は、圧力タッチイベントをメッセージの形で、少なくとも一つのアプリケーションプログラムに送信する。
【００３０】
なお、仮想エンジンは、圧力タッチイベントをインターセプトする。
【００３１】
ステップ１０２において、仮想エンジンは圧力タッチイベントをアプリケーションプログラムの外層プログラムに伝達する。
【００３２】
アプリケーションプログラムの外層プログラムは、第１のプログラミング言語を用いて開発され、選択的に、第１のプログラミング言語はオペレーティングシステムのアプリケーション層によって直接にサポートされる開発言語であり、例えば、Ａｎｄｒｏｉｄオペレーティングシステムのアプリケーション層によってサポートされる開発言語はＪａｖａであり、ｉＯＳオペレーティングシステムのアプリケーション層によってサポートされる開発言語はＯｂｊｅｃｔ-Ｃなどであり、本実施例においてこれは限定されない。
【００３３】
本実施例において、アプリケーションプログラムＡは仮想エンジンに基づいて開発されたアプリケーションプログラムであり、仮想エンジンが、圧力タッチイベントをインターセプトすると、圧力タッチイベントをアプリケーションプログラムＡの外層プログラムに伝達し、圧力タッチイベントは当該イベントの圧力値と、座標値とを含む。
【００３４】
ステップ１０３において、アプリケーションプログラムの外層プログラムは、圧力タッチイベントを受信する。
【００３５】
当該圧力タッチイベントは、当該イベントの圧力値と、座標値とを含む。
【００３６】
ステップ１０４において、アプリケーションプログラムの外層プログラムは、圧力タッチイベントをアプリケーションプログラムの内層プログラムに伝達する。
【００３７】
アプリケーションプログラムの内層プログラムは、第２のプログラミング言語を用いて開発され、選択的に、第２のプログラミング言語はアプリケーションプログラムの最初の開発の際のプログラミング言語であり、当該プログラミング言語は、Ｃ言語、Ｊａｖａ言語、Ｃ#言語、Ｃ++言語、Ｐｙｔｈｏｎ言語のうちの少なくとも１つを含むが、これらに限定されない。本実施例は、第２のプログラミング言語がＣ#言語である例を挙げて説明するが、これに限定されない。
【００３８】
ステップ１０５において、アプリケーションプログラムの内層プログラムは圧力タッチイベントを受信する。
【００３９】
ステップ１０６において、アプリケーションプログラムの内層プログラムは、圧力タッチイベントに応じて所定の操作を実行する。
【００４０】
例示的に、圧力タッチイベントにおける圧力値がプリセット閾値よりも大きいと、第１の予定の操作を実行し、圧力タッチイベントにおける圧力値がプリセット閾値よりも小さいと、第２の予定の操作を実行する。
【００４１】
以上のように、本願の実施例で提供されるアプリケーションプログラムの制御方法によれば、圧力タッチイベントをアプリケーションプログラムの外層プログラムに伝達してから、アプリケーションプログラムの外層プログラムからアプリケーションプログラムの内層プログラムに伝達し、内層プログラムが圧力タッチイベントに応じて所定の操作を実行することにより、アプリケーションプログラムの内層プログラムがオペレーティングシステム内で直接に実行することができず、正常に実行するために外層プログラムを追加する必要があり、外層プログラムが存在するため、アプリケーションプログラムは圧力タッチイベントを直接に処理できないという問題を解決し、これにより、仮想エンジンに基づいて開発されたアプリケーションプログラムで、圧力タッチ技術を用いて入力制御を行うことができ、携帯端末の限られた画面領域で複数の操作コマンドのトリガーを実現し、ヒューマンコンピュータインタラクションの効率を向上させる。
【００４２】
図３は、本願の一つの例示的な実施例で提供されるアプリケーションプログラムの制御方法の具体的な実施中のインタフェース概略図である。一つの具体的な例において、図３に示すように、端末においてフォアグラウンドで実行されるアプリケーションプログラムはファーストパーソン・シューティングゲームであり、当該アプリケーションプログラムは仮想エンジンに基づいて開発されたゲームアプリケーションプログラムであり、フォアグラウンドで実行されるユーザーインタフェースはゲーム中にプレーヤの第１の視角で射撃を行うインタフェースであり、当該インタフェースは、キャラクター位置を移動させるように設置される第１のコントロール３３１と、視角位置を移動させるように設置される第２のコントロール３３２とを含む。
【００４３】
第１のコントロール３３１は、キャラクター位置を移動させるように設置されるコントロールであり、ゲームキャラクターは３次元仮想環境に位置する仮想キャラクターであり、ユーザーは第１のコントロール３３を介して仮想キャラクターを制御して３次元仮想環境において前後左右に移動させることができる。例示的に、ユーザーは第１のコントロール３３１を垂直に上方へスライドさせると、端末は３次元仮想環境における仮想キャラクターを前方へ移動させ、ユーザーは第１のコントロール３３１を垂直に下方へスライドさせると、端末は３次元仮想環境における仮想キャラクターを後方へ移動させ、ユーザーは第１のコントロール３３１を水平に左方へスライドさせると、端末は３次元仮想環境における仮想キャラクターを左方へ移動させ、ユーザーは第１のコントロール３３１を水平に右方へ移動させると、端末は３次元仮想環境における仮想キャラクターを右方へ移動させる。
【００４４】
第２のコントロール３３２は、第１の視角の視角方向を制御するように設置されるコントロールであり、例示的に、ユーザーは軽い圧力で第２のコントロール３３２をスライドさせながら第２のコントロール３３２を水平に左方へスライドさせ、アプリケーションプログラムの内層プログラムは、圧力値が予定の閾値を超えないと判断し、アプリケーションプログラムはゲームにおける第１の視角を左方へ回転させ、第１のコントロール３３１を水平に右方へスライドさせ、ユーザーはゲームにおける第１の視角を右へ回転させ、第１のコントロールを垂直に上方へスライドさせ、ゲームにおけるユーザーの主観的視角は上方へ回転され、第２のコントロール３３２を垂直に下方へスライドさせ、ゲームにおけるユーザーの主観の視角は下方へ回転される。
【００４５】
同時に、第２のコントロール３３２はさらに、火発射操作をトリガすることができる。ユーザーが重い圧力で第２のコントロール３３２を押すと、アプリケーションプログラムの内層プログラムは、圧力値が予定の閾値を超えると判断し、アプリケーションプログラムはゲームキャラクターを制御して火発射操作を行わせる。つまり、ユーザーは、異なる圧力値の圧力タッチ操作を通じて、第２のコントロール３３２で異なる二つの制御操作を実現することができる。
【００４６】
いくつかの実施例において、仮想エンジンはメッセージ転送コードを提供し、当該メッセージ転送コードはデフォルトで圧力タッチイベントを内層プログラム２３２に転送する。しかし、外層プログラム２３１が存在するため、当該メッセージ転送コードの伝送は失敗し、効果的に実行できない。この場合、仮想エンジンのメッセージ転送コードを修正する必要がある。そのために、本願は、さらに、以下の実施例を提供する。
【００４７】
図４は、本願の他の一つの例示的な実施例で提供される端末の構成概略図である。例示的に、端末が利用する第１のオペレーティングシステムを例に、当該第１のオペレーティングシステムは、タッチスクリーンドライバが圧力タッチイベントをグラフィカルユーザインタフェースコンポーネントを介さずアプリケーション層に直接に送信するオペレーティングシステムであり、当該第１のオペレーティングシステムはＡｎｄｒｏｉｄオペレーティングシステムを含むがこれに限定されない。
【００４８】
プロセッサー２１は、シングルコアプロセッサー、マルチコアプロセッサー、組み込みチップ、およびコマンド実行性能を有するプロセッサーのうちの少なくとも１つであってもよい。
【００４９】
タッチスクリーン２２は、感圧タッチスクリーンであり、感圧タッチスクリーンはタッチスクリーン１２に掛けられた押圧強度を測定することができる。
【００５０】
メモリ２３は、プロセッサー２１の実行可能プログラムを記憶している。例示的に、メモリ２３は、アプリケーションプログラムＡ、アプリケーションプログラムＢ、アプリケーションプログラムＣ、Ｃ++ダイナミックリンクライブラリ２６、仮想エンジン２６１、感圧モジュール２６２、オペレーティングシステムのカーネル層２７を記憶している。例示的に、アプリケーションプログラムＡはアプリケーションプログラムＡの外層プログラム２３１とアプリケーションプログラムＡの内層プログラム２３２とを含む。なお、アプリケーションプログラムＡは仮想エンジン２６１に基づいて開発されたアプリケーションプログラムであり、アプリケーションプログラムＡの外層プログラムは第１のプログラミング言語を用いて開発され、アプリケーションプログラムＡの内層プログラムは第２のプログラミング言語を用いて開発される。選択的に、第１のプログラミング言語はオペレーティングシステムのアプリケーション層によって直接にサポートされる開発言語であり、第２のプログラミング言語はアプリケーションプログラムの初期開発に使用されるプログラミング言語であり、第１のプログラミング言語と第２のプログラミング言語とは異なる二つのプログラミング言語であり、アプリケーションプログラムＡの外層プログラムがない場合に、アプリケーションプログラムＡの内層プログラムは直接にオペレーティングシステムで実行することができない。アプリケーションプログラムＡの外層プログラムはアプリケーションプログラムＡの内層プログラムを含む。選択的に、アプリケーションプログラムＡは仮想エンジン２６１によって開発されたゲームプログラム、仮想現実プログラム、３次元地図プログラム、３次元デモプログラムのうちの少なくとも１つを含むがこれらに限定されない。例えば、端末のオペレーティングシステムがＡｎｄｒｏｉｄオペレーティングシステムを用いる場合に、アプリケーションプログラムＡの外層プログラムはＪａｖａプログラミング言語を用いて開発され、アプリケーションプログラムＡの内層プログラムがＣ#言語を用いて開発され、また、例えば、端末のオペレーティングシステムがＩＯＳオペレーティングシステムを用いる場合に、アプリケーションプログラムＡの外層プログラムはＯｂｊｅｃｔ-Ｃプログラミング言語を用いて開発され、アプリケーションプログラムＡの内層プログラムはＣ#言語を用いて開発される。
【００５１】
例示的に、カーネル層２７は、タッチスクリーンドライバ２７１、および他のドライバ２７２を含む。タッチスクリーンドライバ２７１は圧力タッチイベントを検出するように設置されるモジュールであり、タッチスクリーンドライバ２７１は、圧力タッチイベントを検出すると、圧力タッチイベントを感圧モジュール２６２に伝達する。
【００５２】
他のドライバ２７２は、プロセッサー２１に関するドライバ、メモリ２３に関するドライバ、ネットワークコンポーネントに関するドライバ、サウンドコンポーネントに関するドライバなどであってもよい。
【００５３】
図４に示す端末は第１のオペレーティングシステムを用いると、アプリケーションプログラムＡの内層プログラム２３２は、また、内層プログラムのメインスレッドモジュール２３３、および入力マネージャ２３４を含み、Ｃ++ダイナミックリンクライブラリ２６は、また、仮想エンジン２６１と、感圧モジュール２６２とを含む。
【００５４】
Ｃ++ダイナミックリンクライブラリは、共有関数ライブラリ概念を実現する一形態であり、ダイナミックリンクライブラリは、プロセスがその実行可能なコードに属しない関数を呼び出すことを許可し、ダイナミックリンクライブラリは、プログラムの他の部分に影響を及ぼすことなく更新機能をアプリケーションプログラムの各モジュールに適用することができる。つまり、アプリケーションプログラムＡは、Ｃ++ダイナミックリンクライブラリ２６における各モジュールを呼び出すことができるが、Ｃ++ダイナミックリンクライブラリ２６における各モジュールはアプリケーションプログラムＡ自身の実行可能なコードに属しないと見なすことができる。
【００５５】
感圧モジュール２６２は、プリセットプログラムを含んでおり、当該プリセットプログラムは仮想エンジンにおけるメッセージ転送コードを修正するためのプログラムである。
【００５６】
図５は、本願の他の一つの例示的な実施例で提供されるアプリケーションプログラムの制御方法のフローチャートである。本実施例は、当該アプリケーションプログラムの制御方法を図４に示す端末に適用する例を挙げて説明する。当該方法は、以下のステップを含む。
【００５７】
ステップ３０１において、プリセットプログラムは、仮想エンジンのメモリにおけるベースアドレスを取得する。
【００５８】
アプリケーションプログラムＡが起動した後、Ｃ++ダイナミックリンクライブラリ２６におけるプリセットプログラムは、仮想エンジンがメモリで実行する際のベースアドレスを取得する。プリセットプログラムは、逆アセンブルの形で仮想エンジンのメモリにおけるベースアドレスを取得してもよい。
【００５９】
メモリアドレス指定とは、メモリにおいてデータ又はコマンドのコード位置を見つけることを指し、メモリアドレス指定は、ベースアドレス+オフセットアドレスによってコマンドまたはコード位置を位置決めする必要がある。
【００６０】
ステップ３０２において、プリセットプログラムは、ベースアドレスとプリセットオフセットアドレスとに従ってメッセージ転送コードに対応するコード位置を位置決めする。
【００６１】
メッセージ転送コードは、仮想エンジンに予め設定されているメッセージ転送コードである。当該メッセージ転送コードはインターセプトされた圧力タッチイベントを内層プログラムに転送する。
【００６２】
プリセットプログラムは、取得したベースアドレス、および予め設定されたオフセットアドレスに応じて、メッセージ転送コードのメモリにおけるコード位置を位置決めする。
【００６３】
ステップ３０３において、プリセットプログラムは位置決めされたコード位置に応じてメッセージ転送コードのメッセージ受信側を内層プログラムから外層プログラムに変更する。
【００６４】
圧力タッチイベントを外層プログラムに伝達してから、外層プログラムから内層プログラムに伝達する必要があるので、プリセットプログラムはメッセージ転送コードのコード位置を位置決めした後に、メッセージ転送コードにおけるメッセージ受信側を内層プログラムから外層プログラムに変更する。
【００６５】
ステップ３０４において、仮想エンジンは圧力タッチイベントをインターセプトする。
【００６６】
ユーザーがアプリケーションプログラムを使用すると、端末のタッチスクリーンにアプリケーションプログラムのユーザーインタフェースが表示され、当該ユーザーインタフェースに、ヒューマンコンピュータインタラクションに設置されたコントロール、例えば、仮想ボタンが含まれる。ユーザーがタッチスクリーンに圧力タッチ操作をかける場合に、端末のタッチスクリーンドライバは圧力タッチイベントを生成し、感圧モジュールに報告し、仮想エンジンは当該圧力タッチイベントをインターセプトする。
【００６７】
ステップ３０５において、仮想エンジンは、プリセットプログラムによって修正されたメッセージ転送コードに応じて、圧力タッチイベントをプリケーションプログラムの外層プログラムに伝達する。
【００６８】
修正されたメッセージ転送コードにおいて圧力タッチイベントの宛先アドレスを内層プログラムから外層プログラムに変更したので、仮想エンジンが圧力タッチイベントをインターセプトした場合に、修正されたメッセージ転送コードに応じて圧力タッチイベントをアプリケーションプログラムの外層プログラムに伝達する。
【００６９】
ステップ３０６において、外層プログラムは圧力タッチイベントを内層プログラムのメインスレッドに送信する。
【００７０】
ステップ３０７において、内層プログラムは、メインスレッドにより圧力タッチイベントを内層プログラムにおける入力マネージャに伝達する。
【００７１】
入力マネージャは、内層プログラムにおいて外部処理信号の処理を担当するプログラムモジュールである。例示的に、入力マネージャは、ユーザーインタフェースに表示されている仮想キーにてトリガーされる圧力タッチイベントを管理するように設置され、図３を参照して分かるように、入力マネージャは第１のコントロール３１と第２のコントロール３２に対して圧力タッチイベントの管理を行うことができる。
【００７２】
ステップ３０８において、内層プログラムは入力マネージャにより圧力タッチイベントに応じて所定の操作を実行する。
【００７３】
選択的に、入力マネージャは圧力タッチイベントから操作座標と圧力値を解析し、入力マネージャは操作座標に対応する入力コントロールを確定し、圧力値が予定の閾値よりも大きいと、入力マネージャは入力コントロールに対応する第１の操作を実行し、圧力値が予定の閾値よりも小さいと、入力マネージャは入力コントロールに対応する第２の操作を実行する。
【００７４】
以上のように、本実施例で提供するアプリケーションプログラム制御方法によれば、プリセットプログラムを用いて仮想エンジン内のオリジナルメッセージ転送コードを修正することにより、仮想エンジンは圧力タッチイベントをインターセプトした後に、まず圧力タッチイベントを外層プログラムに伝達してから、外層プログラムにより内層プログラムに伝達するようにし、これにより、アプリケーションプログラムの内層プログラムがオペレーティングシステムで直接に実行することができず、正常に実行するためには外部プログラムを追加する必要があり、外層プログラムが存在するため、アプリケーションプログラムが圧力タッチイベントを直接に処理できないという問題を解決し、これにより、内層プログラムも圧力タッチイベントを受信でき、内層プログラムにおける入力マネージャも圧力タッチイベントを処理することができ、圧力タッチ操作によるアプリケーションプログラムの制御をサポートし、携帯端末の限られた画面領域で複数の制御コマンドのトリガーを実現し、これによりヒューマンコンピュータインタラクションの効率を向上させる。
【００７５】
一つの具体的例子において、図４に示すように、端末が用いる第１のオペレーティングシステムはＡｎｄｒｏｉｄオペレーティングシステムである。図６は、本願の他の一つの例示的な実施例で提供される端末の構成概略図を示している。端末がＡｎｄｒｏｉｄオペレーティングシステムを用いる場合に、アプリケーションプログラムＡの外層プログラムはＪａｖａ層５７であり、アプリケーションプログラムＡの内層プログラムはＣ#層５７２であり、なお、アプリケーションプログラムＡのＪａｖａ層はＵＩスレッドモジュール５７１をさらに含み、Ｃ++ダイナミックリンクライブラリ５８における仮想エンジンはＵｎｉｔｙエンジン５８１であり、感圧モジュール５８２は、圧力タッチイベントをインターセプトするように設置され、且つ、感圧モジュール５８２はプリセットプログラムを含んでおり、当該プリセットプログラムは、Ｕｎｉｔｙエンジンのメッセージ転送メカニズムを変更し、Ａｎｄｒｏｉｄオペレーティングシステムは、Ｊａｖａ仮想マシン５９をさらに含んでいる。Ｊａｖａ仮想マシン５９は、アプリケーションプログラムＡ、アプリケーションプログラムＢ、およびアプリケーションプログラムＣにＪａｖａ実行環境を提供する。
【００７６】
選択的に、Ｊａｖａ言語はＡｎｄｒｏｉｄオペレーティングシステムのアプリケーション層によってサポートされるプログラミング言語であるので、アプリケーションプログラムＡの外層プログラムはＪａｖａ層のプログラムモジュールであり、選択的に、Ｃ#言語はアプリケーションプログラムＡのオリジナル開発言語であるので、アプリケーションプログラムＡの内層プログラムはＣ#層のプログラムモジュールである。
【００７７】
仮想マシンは、仮想化、抽象化されたコンピュータであり、Ｊａｖａ仮想マシンは完全なハードウェアアーキテクチャ、例えばプロセッサ、スタック、およびレジスタ等を有し、対応する命令システムを有し、Ｊａｖａ仮想マシンは、Ｊａｖａプログラムが、Ｊａｖａ仮想マシン上で実行されるターゲットコードを生成するだけで、、修正なしに複数のプラットフォーム上で実行することを可能にする。 本実施例において、Ｊａｖａ仮想マシンは、アプリケーションプログラムＡの外部プログラムの各種機能を実行する。
【００７８】
上記したプリセットプログラムは、アドレスマッピング性能を有する。アドレスマッピングとは、アプリケーションプログラムにおける論理アドレスを、実行中にマシンによって直接にアドレス指定される物理アドレスに変換するプロセスである。
【００７９】
図７は、本願の一つの例示的な実施例で提供されるアプリケーションプログラムの制御方法のフローチャートである。本実施例は、当該アプリケーションプログラムの制御方法を図６に示すＡｎｄｒｏｉｄオペレーティングシステムに適用する例を挙げて説明する。当該方法は、以下のステップを含む。
【００８０】
ステップ５０１において、アプリケーションプログラムが起動されると、Ｃ#層はアプリケーションプログラムの初期化を行う。
【００８１】
ユーザーがアプリケーションプログラムＡのアイコンをクリックし、アプリケーションプログラムＡは起動される。アプリケーションプログラムＡのＣ#層は初期化を行い、初期化は、Ｃ#層におけるメインスレッドを起動すること、画像リソース、オディオリソース、ロジックコードなどをロードすることを含むがこれらに限定されない。
【００８２】
ステップ５０２において、Ｕｎｉｔｙエンジンは、Ｊａｖａ層のＵＩスレッドを呼び出す。
【００８３】
アプリケーションプログラムは３次元仮想環境に関するＵＩを表示する必要がある場合に、ＵｎｉｔｙエンジンによりＵＩインタフェースを生成し、Ｊａｖａ層のＵＩスレッドを呼び出して表示する。
【００８４】
ステップ５０３において、Ｊａｖａ層のＵＩスレッドはＣ++ダイナミックリンクライブラリにおける感圧モジュールをロードする。
【００８５】
Ｊａｖａ層のＵＩスレッドは、ＵＩインタフェースを表示する過程で、動的に感圧モジュールをロードする。当該感圧モジュールはプリセットプログラムを含む。
【００８６】
ステップ５０４において、プリセットプログラムは、Ｕｎｉｔｙエンジンのメモリにおけるベースアドレスを取得する。
【００８７】
プリセットプログラムは、Ａｎｄｒｏｉｄオペレーティングシステムから、Ｕｎｉｔｙエンジンがメモリで実行する際のベースアドレスを取得する。プリセットプログラムは、逆アセンブルの形でＵｎｉｔｙエンジンのメモリにおけるベースアドレスを取得してもよい。
【００８８】
ステップ５０５において、プリセットプログラムは、ベースアドレスとプリセットオフセットアドレスとに従ってメッセージ転送コードに対応するコード位置を位置決めする。
【００８９】
メッセージ転送コードは、Ｕｎｉｔｙエンジンに予め設定されたメッセージ転送コードである。当該メッセージ転送コードは、インターセプトされた圧力タッチイベントを内層プログラムに転送する。
【００９０】
プリセットプログラムは取得したベースアドレス、および予め設定されたオフセットアドレスに応じて、メッセージ転送コードのメモリにおけるコード位置を位置決めする。
【００９１】
ステップ５０６において、プリセットプログラムは、位置決めされたコード位置に応じてメッセージ転送コードのメッセージ受信側をＣ#層からＪａｖａ層のＵＩスレッドに変更する。
【００９２】
アプリケーションプログラムＡの内層プログラムはＣ#層であり、つまり、アプリケーションプログラムＡによって使用される開発言語はＣ#言語であり、外層プログラムの開発言語はＪａｖａ言語であり、Ｊａｖａ層を介さない場合に、Ｃ#層は圧力タッチイベントを取得することはできないので、まず、圧力タッチイベントをＪａｖａ層のＵＩスレッドに伝達してから、Ｊａｖａ層のＵＩスレッドによりＣ#層に伝達する必要がある。
【００９３】
プリセットプログラムは、メッセージ転送コードのコード位置を位置決めした後に、メッセージ転送コードにおけるメッセージ受信側をＣ#層からＪａｖａ層のＵＩスレッドに変更する。
【００９４】
ステップ５０７において、圧力タッチ操作を受信した場合に、タッチスクリーンドライバは圧力タッチイベントを生成する。
【００９５】
ステップ５０８において、Ｕｎｉｔｙエンジンは圧力タッチイベントをインターセプトする。
【００９６】
ユーザーがアプリケーションプログラムＡを使用すると、端末のタッチスクリーンにアプリケーションプログラムＡのユーザーインタフェースが表示され、当該ユーザーインタフェースには、ヒューマンコンピュータインタラクションに用いられるコントロール、例えば、仮想ボタンが含まれる。ユーザーがタッチスクリーンに圧力タッチ操作をかけた場合に、端末のタッチスクリーンドライバは圧力タッチイベントを生成し、感圧モジュールに報告し、Ｕｎｉｔｙエンジンは当該圧力タッチイベントをインターセプトする。
【００９７】
ステップ５０９において、Ｕｎｉｔｙエンジンは、変更されたメッセージ転送コードに応じて、圧力タッチイベントをＪａｖａ層のＵＩスレッドに伝達する。
【００９８】
本実施例において、修正されたメッセージ転送コードにおいて圧力タッチイベントの宛先アドレスをＣ#層からＪａｖａ層に変更したので、Ｕｎｉｔｙエンジンは、当該メッセージ転送コードにより、圧力タッチイベントをＪａｖａ層のＵＩスレッドに伝達する。
【００９９】
ステップ５１０において、Ｊａｖａ層のＵＩスレッドは、圧力タッチイベントを受信する。
【０１００】
ステップ５１１において、Ｊａｖａ層のＵＩスレッドは、圧力タッチイベントをＣ#層のメインスレッドに送信する。
【０１０１】
アプリケーションプログラムＡがゲームアプリケーションプログラムである場合に、当該メインスレッドは、ゲームアプリケーションプログラムのうちの主な実行ロジックを実現するためのメインスレッドである。
【０１０２】
ステップ５１２において、Ｃ#層のメインスレッドは、圧力タッチイベントをＣ#層の入力マネージャに伝達する。
【０１０３】
入力マネージャは、Ｃ#層のうち外部処理信号の処理を担当するプログラムモジュールである。例示的に、入力マネージャは、ユーザーインタフェースに表示されている仮想キーにてトリガーされた圧力タッチイベントを管理するように設置され、図３を参照して分かるように、入力マネージャは第１のコントロール３１と第２のコントロール３２とに対して圧力タッチイベントの管理を行うことができる。
【０１０４】
ステップ５１３において、入力マネージャは圧力タッチイベントに応じて制御コマンドを生成する。
【０１０５】
選択的に、入力マネージャは、圧力タッチイベントから操作座標と圧力値を解析し、入力マネージャは操作座標に対応する入力コントロール (例えば、第２のコントロール) を確定し、圧力値が予定の閾値よりも大きいと、入力マネージャは入力コントロールに対応する第１の操作コマンドを生成し、例えば、第１の視角の視角方向を変更し、圧力値が予定の閾値よりも小さいと、入力マネージャは入力コントロールに対応する第２の操作、例えば、火発射を生成し、図８に示すようである。
【０１０６】
ステップ５１４において、キャラクターコントローラは制御コマンドを実行する。
【０１０７】
選択的に、アプリケーションプログラムがゲームアプリケーションプログラムである場合に、内層プログラムには、ゲームキャラクターを制御するように設置されるキャラクターコントローラをさらに含む。入力マネージャは第１の操作コマンドを生成すると、キャラクターコントローラは第１の操作コマンドを実行し、入力マネージャは第２の操作コマンドを生成すると、キャラクターコントローラは第２の操作コマンドを実行する。
【０１０８】
他のいくつかの実施例において、端末は第２のオペレーティングシステムを用いる。第１のオペレーティングシステムとの違いは、第２のオペレーティングシステムは１セットのネイティブグラフィカルユーザーインターフェース(Ｇｒａｐｈｉｃａｌ Ｕｓｅｒ Ｉｎｔｅｒｆａｃｅ、ＧＵＩ)コンポーネントを有するシステムであることにあり、当該ＧＵＩコンポーネントは、１セットの完全なメッセージディスパッチモジュールを有し、当該ＧＵＩコンポーネントは、圧力タッチイベントをタッチスクリーンドライバにより当該ＧＵＩコンポーネントに報告した後に、当該圧力タッチイベントをアプリケーション層に報告するように設置され、当該第２のオペレーティングシステムは、ｉＯＳオペレーティングシステムを含むがこれに限定されない。この場合、仮想エンジンは、当該ＧＵＩコンポーネントにおけるメッセージディスパッチモジュールから圧力タッチイベントをインターセプトする必要がある。
【０１０９】
図９は、本願の他の一つの例示的な実施例で提供される端末の構成概略図である。例示的に、端末が第２のオペレーティングシステムを用いる例を挙げる。当該端末は、プロセッサー３１と、タッチスクリーン ３２と、メモリ３３とを含む。メモリ３３は、少なくとも一つのプログラムコマンドを記憶している。
【０１１０】
プロセッサー３１は、シングルコアプロセッサー、マルチコアプロセッサー、組み込みチップ、およびコマンド実行性能を有するプロセッサーのうちの少なくとも１つであってもよい。
【０１１１】
タッチスクリーン３２は、感圧タッチスクリーンであり、感圧タッチスクリーンは、タッチスクリーン３２にかけられた押圧強度を測定することができる。
【０１１２】
メモリ３３は、プロセッサー３１の実行可能プログラムを記憶している。例示的に、メモリ３３に記憶されているプログラムコマンドは、カーネル層３４、ＵＩフレームワーク３５、Ｃ++ダイナミックリンクライブラリ３６、およびアプリケーション層３７を含むが、これらに限定されない。
【０１１３】
カーネル層３４は、タッチスクリーンドライバ３４１と他のドライバ３４２とを含む。タッチスクリーンドライバ３４１は、タッチスクリーン３２で圧力タッチ操作を受けた場合に、圧力タッチイベントを生成するように設置される。当該圧力タッチイベントは操作座標と圧力値とを含む。タッチスクリーンドライバ３４１は、さらに、圧力タッチイベントをＵＩフレームワーク３５に報告するように設置される。
【０１１４】
ＵＩフレームワーク３５はオペレーティングシステムによって提供されるフレームワークであり、ヒューマンコンピュータインタラクションを実現するインタフェース表示フレームワークとして配置される。ＵＩフレームワーク３５では、メッセージディスパッチモジュールを提供している。ＵＩフレームワーク３５が圧力タッチイベントを受けると、圧力タッチイベントを、相応するアプリケーションプログラムにディスパッチする。
【０１１５】
Ｃ++ダイナミックリンクライブラリ３６は、仮想エンジン３６１と、メッセージインターセプトモジュール３６２とを含む。仮想エンジン３６１は、３次元仮想環境の構築および表示を実現するように設置され、メッセージインターセプトモジュール３６２は、ＵＩフレームワーク３５から圧力タッチイベントをインターセプトするように設置される。選択的に、メッセージインターセプトモジュール３６２は仮想エンジン３６１の一部である。仮想エンジン３６１は、メッセージインターセプトモジュール３６２により圧力タッチイベントをインターセプトした後に、圧力タッチイベントをアプリケーションプログラムＡの外層プログラムに伝達する。
【０１１６】
アプリケーションプログラムＡは、仮想エンジンに基づいて開発されたアプリケーションプログラムである。アプリケーションプログラムＡは外層プログラム３７１と、内層プログラム３７２とを含む。なお、内層プログラム３７２は、メインスレッドモジュール３７３と入力マネージャ３７４とを含む。入力マネージャ３７４は、外部処理信号(例えば、圧力タッチイベント)を処理するように設置されるプログラムモジュールである。
【０１１７】
図１０は、本願の一つの例示的な実施例で提供されたアプリケーションプログラムの制御方法のフローチャートを示している。本実施例は、当該アプリケーションプログラムの制御方法を図９に示す端末に適用する例を挙げて説明する。当該方法は、以下のステップを含む。
【０１１８】
ステップ６０１において、内層プログラムは外層プログラムへ呼び出し要求を送信し、当該呼び出し要求は、前記外層プログラムが圧力タッチイベントを受信した場合に内層プログラムに転送することを指示するために用いられる。
【０１１９】
ステップ６０２において、ＵＩフレームワークは圧力タッチイベントを受信する。
【０１２０】
ユーザーがアプリケーションプログラムＡを使用すると、端末のタッチスクリーンにアプリケーションプログラムＡのユーザーインタフェースが表示され、当該ユーザーインタフェースには、ヒューマンコンピュータインタラクションに用いられるコントロール、例えば、仮想ボタンが含まれる。ユーザーがタッチスクリーンに圧力タッチ操作をかけた場合に、端末のタッチスクリーンドライバは圧力タッチイベントを生成し、ＵＩフレームワークに報告する。
【０１２１】
それに対応して、ＵＩフレームワークは圧力タッチイベントを受信する。
【０１２２】
ステップ６０３において、仮想エンジンはＵＩフレームワークから圧力タッチイベントをインターセプトする。
【０１２３】
ステップ６０４において、仮想エンジンは圧力タッチイベントを外層プログラムに伝達する。
【０１２４】
ステップ６０５において、外層プログラムは圧力タッチイベントを内層プログラムに伝達する。
【０１２５】
ステップ６０６において、内層プログラムは圧力タッチイベントに応じて所定の操作を実行する。
【０１２６】
例示的に、圧力タッチイベントにおける圧力値がプリセット閾値よりも大きいと、第１の予定の操作を実行し、圧力タッチイベントにおける圧力値がプリセット閾値よりも小さいと、第２の予定の操作を実行する。
【０１２７】
以上のように、本実施例で提供されるアプリケーションプログラム制御方法によれば、予め内層プログラムから外層プログラムへ呼び出し要求を送信することにより、外層プログラムが圧力タッチイベントを受信した場合に内層プログラムに転送してから、内層プログラムが圧力タッチイベントに応じて所定の操作を実行し、アプリケーションプログラムの内層プログラムがオペレーティングシステム内で直接実行することができず、正常に実行するためには外部プログラムを追加する必要があり、外層プログラムが存在するため、アプリケーションプログラムは圧力タッチイベントを直接に処理できないという問題を解決し、これにより、仮想エンジンに基づいて開発されたアプリケーションプログラムで、圧力タッチ技術を用いて入力制御を行うことを実現し、携帯端末の限られた画面領域で複数の操作コマンドのトリガーを実現し、これによりヒューマンコンピュータインタラクションの効率を向上させる。
【０１２８】
図１１は、本願の他の一つの例示的な実施例で提供される端末の構成概略図である。例示的に、端末によって用いられる第２のオペレーティングシステムがｉＯＳオペレーティングシステムであることを例に、当該端末は、プロセッサー６１と、タッチスクリーン６２と、メモリ６３とを含む。メモリ６３は少なくとも一つのプログラムコマンドを記憶している。
【０１２９】
プロセッサー６１は、シングルコアプロセッサー、マルチコアプロセッサー、組み込みチップ、およびコマンド実行性能を有するプロセッサーのうちの少なくとも１つであってもよい。
【０１３０】
タッチスクリーン６２は、感圧タッチスクリーンであり、感圧タッチスクリーンは、タッチスクリーン６２にかけられた押圧強度を測定することができる。
【０１３１】
メモリ６３は、プロセッサー６１の実行可能プログラムを記憶している。例示的に、メモリ６３に記憶されているプログラムコマンドは、カーネル層６４、ＵＩ Ｋｉｔ ６５、Ｃ++ダイナミックリンクライブラリ６６、およびアプリケーション層６７を含むが、これらに限定されない。
【０１３２】
カーネル層６４は、タッチスクリーンドライバ６４１と、他のドライバ６４２とを含む。タッチスクリーンドライバ６４１は、タッチスクリーン６２で圧力タッチ操作を受信した場合に、圧力タッチイベントを生成する。当該圧力タッチイベントは操作座標と圧力値とを含む。タッチスクリーンドライバ６４１は、さらに、圧力タッチイベントをＵＩ Ｋｉｔ ６５に報告する。
【０１３３】
ＵＩ Ｋｉｔ ６５は、ＩＯＳオペレーティングシステムによって提供されるフレームワークであり、ヒューマンコンピュータインタラクションのインタフェース表示フレームワークを実現するように設置される。ＵＩ Ｋｉｔ ６５においてメッセージディスパッチモジュールを提供する。ＵＩ Ｋｉｔ ６５が圧力タッチイベントを受信した場合に、圧力タッチイベントを、相応するプログラムモジュールにディスパッチする。
【０１３４】
Ｃ++ダイナミックリンクライブラリ６６は、Ｕｎｉｔｙエンジン６６１と、メッセージインターセプトモジュール６６２とを含む。Ｕｎｉｔｙエンジン６６１は、３次元仮想環境の構築および表示を実現するように設置され、メッセージインターセプトモジュール６６２はＵＩ Ｋｉｔ６５から圧力タッチイベントをインターセプトするように設置される。選択的に、メッセージインターセプトモジュール６６２はＵｎｉｔｙエンジン６６１の一部である。Ｕｎｉｔｙエンジン６６１はメッセージインターセプトモジュール６６２により圧力タッチイベントをインターセプトした後に、圧力タッチイベントをアプリケーションプログラムＡの外層プログラムに伝達する。
【０１３５】
アプリケーションプログラムＡは、Ｕｎｉｔｙエンジンに基づいて開発されたアプリケーションプログラムである。アプリケーションプログラムＡは、Ｏｂｊｅｃｔ-Ｃ層６７１とＣ#層６７２とを含む。なお、Ｏｂｊｅｃｔ-Ｃ層６７１はＵＩスレッドモジュール６７３とＵｎｉｔｙスレッドモジュール６７４とを含み、Ｃ#層６７２は、メインスレッドモジュール６７５、入力マネージャ ６７６、アプリケーションフレームワーク(Ｆｒａｍｅ Ｗｏｒｋ)６７７、ネイティブメッセージハブ(ＮａｔｉｖｅＭｓｇＨｕｂ)６７８、およびキャラクターコントローラ６７９を含む。入力マネージャ６７６は、外部処理信号(例えば、圧力タッチイベント)を処理するように設置されるプログラムモジュールであり、アプリケーションフレームワーク(Ｆｒａｍｅ Ｗｏｒｋ)６７７は、アプリケーションプログラムＡの主な実行ロジックを実現するように設置され、アプリケーションプログラムＡがゲームアプリケーションである場合に、アプリケーションフレームワーク６７７はゲームアプリケーションフレームワークであり、ネイティブメッセージハブ６７８はＯｂｊｅｃｔ-Ｃ層６７１との呼び出しを実現するように設置され、キャラクターコントローラ６７９は入力マネージャ６７６によって生成された制御コマンドを実行し、ゲームキャラクターを制御するように設置される。
【０１３６】
図１２は、本願の一つの例示的な実施例で提供されるアプリケーションプログラムの制御方法のフローチャートである。本実施例は、当該アプリケーションプログラムの制御方法を、図１１に示す端末に適用する例を挙げて説明する。当該方法は、以下のステップを含む。
【０１３７】
ステップ７０１において、Ｃ#層はＯｂｊｅｃｔ-Ｃ層へ呼び出し要求を送信し、当該呼び出し要求は、Ｏｂｊｅｃｔ-Ｃ層が圧力タッチイベントを受信した場合にＣ#層に転送することを指示する。
【０１３８】
アプリケーションプログラムが起動した後に、Ｃ#層のメインスレッドモジュール(Ｕｎｉｔｙ Ｍｏｎｏ Ｃ#スレッドとも称される)はＯｂｊｅｃｔ-Ｃ層へ呼び出し要求を送信する。当該呼び出し要求は、端末が圧力タッチ機能をサポートするかどうかを照会するために用いられ、当端末が圧力タッチ機能をサポートすると、Ｏｂｊｅｃｔ-Ｃ層は、圧力タッチイベントを受信した場合にＣ#層に転送する必要がある。
【０１３９】
選択的に、Ｃ#層における入力マネージャはネイティブメッセージハブによりＯｂｊｅｃｔ-Ｃ層のＵｎｉｔｙスレッドへ呼び出し要求を送信する。Ｕｎｔｉｙスレッドはスレッドセーフ非同期呼び出しにより呼び出し要求をＵＩスレッドに転送する。ＵＩスレッドは、圧力タッチイベントを受信した場合にＣ#層におけるアプリケーションフレームワークに転送し、図１３に示すようである。
【０１４０】
ステップ７０２において、圧力タッチ操作を受信した場合に、タッチスクリーンドライバは圧力タッチイベントを生成する。
【０１４１】
ユーザーがアプリケーションプログラムＡを使用すると、端末のタッチスクリーンにアプリケーションプログラムＡのユーザーインタフェースを表示し、当該ユーザーインタフェースにヒューマンコンピュータインタラクションするように設置されるコントロール、例えば、仮想ボタンが含まれる。ユーザーがタッチスクリーンに圧力タッチ操作をかけると、端末のタッチスクリーンドライバは圧力タッチイベントを生成する。
【０１４２】
ステップ７０３において、タッチスクリーンドライバは、圧力タッチイベントをＵＩ Ｋｉｔに報告する。
【０１４３】
ステップ７０４において、ＵＩ Ｋｉｔは圧力タッチイベントを受信する。
【０１４４】
ステップ７０５において、ＵｎｉｔｙエンジンはＵＩ Ｋｉｔから圧力タッチイベントをインターセプトする
【０１４５】
Ｕｎｉｔｙエンジンは、メッセージインターセプトモジュールにより、ＵＩ Ｋｉｔから圧力タッチイベントをインターセプトする。
【０１４６】
ステップ７０６において、Ｕｎｉｔｙエンジンは圧力タッチイベントをＯｂｊｅｃｔ-Ｃ層のＵＩスレッドに伝達する。
【０１４７】
ステップ７０７において、Ｏｂｊｅｃｔ-Ｃ層のＵＩスレッドは圧力タッチイベントをＣ#層のゲームアプリケーションフレームワークに伝達する。
【０１４８】
ステップ７０８において、Ｃ#層のゲームアプリケーションフレームワークは圧力タッチイベントをＣ#層の入力マネージャに転送する。
【０１４９】
ステップ７０９において、Ｃ#層の入力マネージャは圧力タッチイベントに応じて制御コマンドを生成する。
【０１５０】
選択的に、入力マネージャは圧力タッチイベントから操作座標と圧力値を解析し、入力マネージャは操作座標に対応する入力コントロール (例えば、第２のコントロール) を確定し、圧力値が予定の閾値よりも大きいと、入力マネージャは入力コントロールに対応する第１の操作コマンドを生成し、例えば、第１の視角の視角方向を変更し、圧力値が予定の閾値よりも小さいと、入力マネージャは入力コントロールに対応する第２の操作、例えば、火発射を生成し、図８に示すようである。
【０１５１】
ステップ７１０において、Ｃ#層のキャラクターコントローラは制御コマンドを実行する。
【０１５２】
選択的に、アプリケーションプログラムがゲームアプリケーションプログラムである場合に、内層プログラムは、ゲームキャラクターを制御するように設置されるキャラクターコントローラをさらに含む。入力マネージャが第１の操作コマンドを生成した場合に、キャラクターコントローラは第１の操作コマンドを実行し、入力マネージャが第２の操作コマンドを生成した場合に、キャラクターコントローラは第２の操作コマンドを実行する。
【０１５３】
図１４は、本開示の一つの例示的な実施例で提供されるアプリケーションプログラムの制御装置のブロック図を示し、当該アプリケーションプログラムの制御装置は、端末の全部または一部を、ソフトウェア、ハードウェアおよび/または両方の組み合わせによって実現でき、当該装置には、オペレーティングシステムとアプリケーションプログラムとがインストールされ、当該装置は一つ又は複数のプロセッサー、およびプログラムユニットを記憶している一つ又は複数メモリを含み、なお、前記プログラムユニットは前記プロセッサーにより実行され、前記プログラムユニットは以下のモジュールを含む。
【０１５４】
仮想エンジンモジュール８０１は、操作座標と圧力値とを含む圧力タッチイベントインターセプトするように設置される。
【０１５５】
前記仮想エンジンモジュールは、前記圧力タッチイベントを前記外層プログラムモジュールに伝達するように設置される。
【０１５６】
アプリケーションプログラムモジュール８０２は、外層プログラムモジュールと内層プログラムモジュールとを含むように設置される。
【０１５７】
外層アプリケーションプログラムモジュール８０３は、圧力タッチイベントを内層プログラムモジュールに伝達するように設置される。
【０１５８】
内層アプリケーションプログラムモジュール８０４は、前記圧力タッチイベントに応じて所定の操作を実行するように設置される。
【０１５９】
好適な実施例において、前記外層プログラムモジュールは、前記圧力タッチイベントを前記内層プログラムモジュールのメインスレッドに送信するように設置され、
前記内層プログラムモジュールは、前記メインスレッドにより前記圧力タッチイベントを前記内層プログラムモジュールの入力コントローラに伝達するように設置され、
前記入力コントローラは、前記内層プログラムモジュールにおいて外部入力信号を処理するように設置されたプログラムモジュールである。
【０１６０】
好適な実施例において、前記プログラムユニットはプリセットプログラムモジュールをさらに含み、
前記プリセットプログラムモジュールは、前記アプリケーションプログラムの起動の際に、前記仮想エンジンにおけるメッセージ転送メカニズムのメッセージ受信側を前記内層プログラムモジュールから前記外層プログラムモジュールに変更するように設置され、
前記仮想エンジンモジュールは、前記プリセットプログラムモジュールによって変更された前記メッセージ転送メカニズムに従って、前記圧力タッチイベントを前記外層プログラムモジュールに伝達するように設置される。
【０１６１】
好適な実施例において、前記プリセットプログラムモジュールは、前記アプリケーションプログラムの起動の際に、前記仮想エンジンモジュールのメモリにおけるベースアドレスを取得し、前記ベースアドレスとプリセットオフセットアドレスに従って前記メッセージ転送メカニズムに対応するコード位置を位置決めし、位置決めされた前記コード位置に応じて前記メッセージ転送メカニズムのメッセージ受信側アドレスを前記内層プログラムモジュールから前記外層プログラムモジュールに変更する、ように設置される。
【０１６２】
好適な実施例において、前記内層プログラムモジュールは、さらに、前記外層プログラムモジュールへ呼び出し要求を送信するように設置され、前記呼び出し要求は、前記外層プログラムモジュールが前記圧力タッチイベントを受信した場合に前記内層プログラムモジュールに転送するように指示するために用いられる。
【０１６３】
好適な実施例において、前記プログラムユニットは、システムレベルのＵＩフレームワークをさらに含み、
前記仮想エンジンモジュールは、前記システムレベルのＵＩフレームワークで前記圧力タッチイベントをインターセプトするように設置される。
【０１６４】
好適な実施例において、前記内層プログラムモジュールは、前記圧力タッチイベントから前記操作座標と前記圧力値を解析し、前記操作座標に対応する入力コントロールを確定し、前記圧力値が予定の閾値よりも大きいと、前記入力コントロールに対応する第１の操作を実行し、前記圧力値が前記予定の閾値よりも小さいと、前記入力コントロールに対応する第２の操作を実行する、ように設置される。
【０１６５】
なお、上記実施例で提供されるアプリケーションプログラムの制御装置がインテリジェントネットワークサービスをトリガーする場合に、上記各機能モジュールの分割を例に挙げて説明し、実際の応用において、必要に応じて、上記機能を異なる機能モジュールに割り当て完成させ、即ち、装置の内部構造を異なる機能モジュールに分割し、以上で記述された機能の全部または一部を完成させることができる。また、上記実施例で提供されるアプリケーションプログラムの制御装置と、アプリケーションプログラムの制御方法実施例とは、同一の思想に属し、その具体的な実現プロセスの詳細については、方法実施例を参照し、ここで再度記述されない。
【０１６６】
本願の実施例は、さらに、端末を提供し、前記端末はプロセッサーとメモリとを含み、前記メモリに少なくとも一つのコマンドを記憶しており、前記コマンドは前記プロセッサーによってロードされ実行され上記いずれかの実施例に記載のアプリケーションプログラムの制御方法を実現する。
【０１６７】
本願の実施例は、さらに、プロセッサーにロードされ実行されて上記いずれかの実施例に記載のアプリケーションプログラムの制御方法を実現する少なくとも一つのコマンドが記憶されているコンピュータ読み取り可能な記憶媒体を提供する。
【０１６８】
上記した本願の実施例の番号は単に記述のためのものであり、実施例の優劣を代表するものではない。
【０１６９】
当業者であれば、上記実施例のステップの全部または一部をハードウェアにより実現してもよく、プログラムにより関連するハードウェアに命令することで実現してもよいことを理解できる。上記のプログラムはコンピュータ可読記憶媒体に格納されてもよい。以上で言及された記憶媒体は、読み出し専用メモリ、磁気ディスク、光ディスクなどであってもよい。
【０１７０】
以上は、本願の好ましい実施例に過ぎず、本出願を限定することを意図するものではない。本願の実施例の精神および原理の範囲内で行われるいかなる修正、同等の置換え、または改良も本願の保護範囲内に入るものとする。
【符号の説明】
【０１７１】
１１  プロセッサー
１２  タッチスクリーン
１３  メモリ
１７  仮想エンジン
１８  感圧モジュール
１９  カーネル層
２１  プロセッサー
２２  タッチスクリーン
２３  メモリ
２６  Ｃ++ダイナミックリンクライブラリ
２７  カーネル層
３１  第１のコントロール
３２  第２のコントロール
３３  メモリ
３４  カーネル層
３５  ＵＩフレームワーク
３６  Ｃ++ダイナミックリンクライブラリ
５８  Ｃ++ダイナミックリンクライブラリ
５９  Ｊａｖａ仮想マシン
６３  メモリ
６４  カーネル層
６５  ＵＩ Ｋｉｔ
６６  Ｃ++ダイナミックリンクライブラリ
６７  アプリケーション層
１４１  外層プログラム
１４２  内層プログラム
１９１  タッチスクリーンドライバ
１９２  他のドライバ
２３１  外層プログラム
２３２  内層プログラム
２３３  メインスレッドモジュール
２３４  入力マネージャ
２６１  仮想エンジン
２６２  感圧モジュール
２７１  タッチスクリーンドライバ
２７２  他のドライバ
３３１  第１のコントロール
３３２  第２のコントロール
３４１  タッチスクリーンドライバ
３４２  他のドライバ
３６１  仮想エンジン
３６２  メッセージインターセプトモジュール
３７１  外層プログラム
３７２  内層プログラム
３７３  メインスレッドモジュール
３７４  入力マネージャ
５７１  ＵＩスレッドモジュール
５７２  Ｃ#層
５８１  Ｕｎｉｔｙエンジン
５８２  感圧モジュール
６６１  Ｕｎｉｔｙエンジン
６６２  メッセージインターセプトモジュール
６７２  Ｃ#層
６７３  ＵＩスレッドモジュール
６７４  Ｕｎｉｔｙスレッドモジュール
６７５  メインスレッドモジュール
６７６  入力マネージャ
６７７  アプリケーションフレームワーク
６７８  ネイティブメッセージハブ
６７９  キャラクターコントローラ
８０１  仮想エンジンモジュール
８０２  アプリケーションプログラムモジュール
８０３  外層アプリケーションプログラムモジュール
８０４  内層アプリケーションプログラムモジュール
【図１】
0006768243.tif 000002
【図２】
0006768243.tif 000003
【図３】
0006768243.tif 000004
【図４】
0006768243.tif 000005
【図５】
0006768243.tif 000006
【図６】
0006768243.tif 000007
【図７】
0006768243.tif 000008
【図８】
0006768243.tif 000009
【図９】
0006768243.tif 000010
【図１０】
0006768243.tif 000011
【図１１】
0006768243.tif 000012
【図１２】
0006768243.tif 000013
【図１３】
0006768243.tif 000014
【図１４】
0006768243.tif 000015