のアーカイブ

2010年のアーカイブ

Silverlightのサポートをタッチ

2010年10月8日 2コメント

この記事は、MSDNの記事の修正であるマルチタッチ入力Windowsの電話のためのジェスチャのサポート Silverlightのタッチのサポートの簡単な概要と自分の基準として、。

概要

クラスダイアグラムの下にSilverlightのタッチをサポートするための主要なクラスを示しています。

Silverlight Touch Class Diagram

  • タッチ
    • タッチイベントは非同期です。
    • タッチイベントは、常にアプリケーションレベルを経由して解雇されているタッチFrameReportedイベントが。
    • タッチイベントはグローバルなので、彼らは直接的であり、タッチのキャプチャの必要はありません。
    • マルチタッチがサポートされています。
  • 操作
    • 操作イベントは、UIElementによって公開されています。 彼らはイベントをルーティングされます。
    • 操作イベントは、常にIsManipulationEnabledプロパティがサポートされていない、起動されます。
    • 操作イベントは同期しています。
    • 唯一の翻訳と拡張がサポートされて、回転がないです。
    • 同時複数の操作がサポートされていません。
    • ジェスチャは、直接サポートされていません。 それはによってサポートされているXNAWindowsの携帯電話ツールキット用のSilverlight
  • コントロール:Windows Phone 7の上、ScrollViewerのは、パン&フリックをサポートしているボタンは、タブをサポートしています。

Silverlight 3の

プラットフォーム要件

このようなSilverlightベースのアプリケーションなど、個々のアプリケーションにタッチ入力を伝播することができます(ブラウザなどのホストアプリケーション;プラットフォームおよびオペレーティングシステムデバイス)マルチタッチは、環境が必要です。

Windows 7は、オペレーティングシステムレベルでのマルチタッチ入力をサポートしています。 これは、メッセージ(を介して部分的にサポートされていますWM_TOUCH )。 すでにこのレベルでは、オペレーティングシステムがマウスメッセージにマルチタッチメッセージのプロモーションを提供します。 マルチタッチのユーザーは、マウスの移動やマウスクリックのように置き換えて、タッチやジェスチャーを使用できるようにプロモーションが存在しています。 タッチ認識していない可能性があるアプリケーションとやり取りするときに便利です、そしてアプリケーションは、マウスイベントとメッセージを介してそのすべての空間的な入力処理を行います。 適切な場合、アプリケーションはすべてが増分イベントを生成する中間メッセージのオーバーフローを処理するために必要がないようにWindows 7はまた、メッセージを合わせます。

ブラウザのホストとしてのInternet Explorerバージョン8もマルチタッチを認識しています。 Internet ExplorerのバージョンのInternet Explorer内で実行されているSilverlightなどのプラグイン〜8転送プラットフォームのマルチタッチメッセージ、Silverlightアプリケーションは、マルチタッチ入力と対話できるように。

Silverlightのマルチタッチ入力(IE8ホストのために示した)

Multitouch Input and Platform Input in Silverlight

マルチタッチは、Windows 7上で実行されているFirefoxのホストの現在のバージョンではSilverlightのサポート、およびアウトオブブラウザアプリケーションのためのWindows 7上で実行されています。 しかし、マルチタッチ入力がで実行されているアプリケーションではサポートされていないフルスクリーンモード。

マルチタッチの登録

マルチタッチのためのより広範なプラットフォームのアーキテクチャの一部として、マルチタッチメッセージを受信する各アプリケーションは、(Windows 7のタッチAPIが含まれている、そのHWNDを登録する必要がありますRegisterTouchWindowこの目的のために)。 Silverlight 4のランタイムは、この登録手順の面倒を、そしてランタイムとランタイムとしてSilverlightを使用するすべてのアプリケーションとSilverlightを登録します。 したがって、一般的にはマルチタッチ入力を処理するために、プラットフォームのコードと直接対話する必要はありません。 しかし、Windows 7とSilverlight 4のマルチタッチのタッチAPI内でのマルチタッチの相互作用の特性がかなり固有のものです。

  • Silverlight 4のは、生のタッチ入力ではなく、ジェスチャーのために登録されています。 要件は、ジェスチャーを含める場合は、Silverlightのコンテキスト内で、独自のアプリケーションのコードを使ってジェスチャーにタッチ入力を処理する必要があります。 あなたがプラットフォームからジェスチャーに登録されたマルチタッチである別のHWNDを含めると、Silverlightコンテンツ領域と相互運用できるように別の方法としては、大規模な相互運用の設計が必要になることがあります。

  • 一般的には、Silverlight 4は、マウスイベントに生のタッチ入力を推進しています。 (但し、単位touchframeごとに、あなたは、このトピックの以降のセクションに記載されているように、プロモーションを無効にすることができます。)

  • ホスト内で、特定のジェスチャーは、MouseDown / MouseMoveイベント/ MouseUpイベント以外のイベントになるためにブラウザのホストによって促進される可能性があります。

マウスイベントに昇格

マルチタッチのユーザーは、マウスの移動やマウスクリックのように置き換えて、タッチやジェスチャーを使用できるように、マウスイベントのプロモーションが存在する。 旧式になったり、アプリケーションがマルチタッチAPIが昇格を実行するために呼び出すを知ることができないでしょう考慮していないため、プラットフォームはほとんどの場合マウスのプロモーションを行うので、概念的にはこれは、デフォルトです。 Silverlight 4は、ほぼ同じ理由により、マウスイベントのプロモーションの一般的な概念を永続させる。 任意の既存のSilverlightコントロールは、マウスイベントのハンドラを持っているが、特にマルチタッチのイベントのためかもしれません。 ユーザーがそれと対話するマルチタッチデバイスを使用するとき、例えば、ボタンがクリックされたかのように行動することが予想される。

マウスイベントのプロモーションには、マルチタッチフレームとそのタッチポイントの意図的な処理がある場合にはイベントの二元論のための潜在的可能性があるので。 Silverlightのマルチタッチイベントのハンドラの本体内で、あなたがダウンして一次接触の期間中、マウスイベントのプロモーションを中断することができます。 あなたのボタンは通常の"クリック"動作に促進しないようにたとえば、タッチの特性に基づいて異なるアクションを実行したタッチに対応したボタンを作成したい場合には、プロモーションを中断できず、代わりにあなたのディスクリートロジックに行きました入力を処理する方法について。 これを行うには、呼び出しSuspendMousePromotionUntilTouchUpをあなたのハンドラの最初の操作のいずれかとして。

それは、プラットフォームの特性であるため、マウスプロモーションの正確な性質は、ここに記載されていません。 一般的に言えば、メカニズムは、メッセージからメッセージのプロモーションです。

ジェスチャーにタッチ

Silverlightは、その後のSilverlightのAPIとして公開されている生のレベルでのタッチポイントの特性を捉えることができる他のAPIへのアクセスとともに、プラットフォームのWM_TOUCHに似て、生のメッセージのレベルでのマルチタッチメッセージを処理します。 Silverlightは、ネイティブのジェスチャー、その旨をプラットフォーム機能を使用する、またはプロセスへのタッチを処理しませんWM_GESTURE (処理WM_GESTUREは、Silverlight 4はにオプトインしていないというプラットフォームでの登録状態が必要となります。)

あなたがジェスチャーのメタファーを使ってマルチタッチを処理したい場合、あなたのコードは、タッチイベントを処理する必要がありますし、あるいはジェスチャーのためのプラットフォームのAPIを使用せずに、ジェスチャーにSilverlight 4の下に公​​開されたAPIとプロセスを使用してください。 これは簡単ではありません。

タッチAPI

マルチタッチ入力とSilverlightでサポートされている他の入力技術(マウス、キーボード、スタイラス)の重要な違いの1つはあなたができない特定の入力要素(にハンドラを追加することによって、アプリケーション全体でのマルチタッチイベントを登録することですのUIElementオブジェクト)。 これは、全体としてのSilverlightがプラットフォームに登録された"アプリケーション"であることをメタファーと一致している。

  • マルチタッチのイベントハンドラを割り当てるには、静的イベントのハンドラに割り当てるTouch.FrameReportedをSystem.Windows.Input.Touchは 、この目的のためだけに存在する静的なサービスクラスであるTouch.FrameReportedその唯一のAPIとして。

  • あなたのために書くハンドラTouch.FrameReportedが基づいているTouchFrameEventHandlerのデリゲート。

  • 典型的なUIデザインで、あなたは内の特定のマルチタッチアクション、そしてそれはマウスの昇進を使用し、必ずしもマルチタッチなどの入力を処理しない方が良いだろう、他の領域をサポートしようとしているUIの領域を持っているかもしれません。 プライマリータッチポイントがどこにあるかを判断するには、マルチタッチ対応の要素の位置、およびその境界に対する全体的な座標を評価する必要があります。 参照してくださいGetPrimaryTouchPointの詳細とコード例については。

  • 前述したように、あなたの一環として、マウスイベントのプロモーションを一時停止することができますTouchFrameEventHandlerのロジック。 これを行うには、呼び出しSuspendMousePromotionUntilTouchUpを最初に操作の一つとして。

  • としてのSilverlight 4に報告されるタッチメッセージは通常、プライマリ"ダウン"タッチポイントで開始フレームとして結合されます。 時々あるが、最初のタッチポイントと最初の"up"に興味を持っていますが、フレームが他のタッチポイントと"移動"アクションを含めることができます。 あなたのハンドラ内のフレーム内の点の完全なコレクションにアクセスするには、呼び出しGetTouchPointsを 特定のタッチポイントの場合は、おそらく最も重要な情報は、そのですの位置

  • 他のAPIは、プラットフォームのAPIにTOUCHINPUTの構造に見られるという情報を公開。 そのようなAPIの例は、次のとおりです。 TouchFrameEventArgs.TimestampTouchDevice.DirectlyOverTouchPoint.Size ; TouchPoint.TouchDevice 自分のシナリオに応じて、常にこのレベルの情報を必要としない場合があります。

Silverlightのバージョン4の操作API

Silverlight 4のUIElementのクラスは、いくつかの操作に関連するイベントだけでなく、次のようなイベントのサポートクラスがあるManipulationStartedEventArgsを しかし、これらのAPIおよび関連する操作の概念は、実行時にSilverlight 4の下に完全にサポートしていません。 これらのイベントを処理するために、アプリケーションはWindows Phone用のSilverlightをターゲットにする必要があります。 イベントは、Windows Phone用のSilverlight 4およびSilverlightの両方に共通のデザイナーのサポートを提供するために、Silverlight 4のアセンブリに存在している。

    Windows Phone 7のためのSilverlight

Silverlightのフレームワークにおけるジェスチャーのサポート

サポートされているWindows携帯電話のSilverlightのジェスチャーの完全なリストについては、 UIのデザインとインタラクションガイド

Windowsの携帯電話向けのSilverlightは、操作イベントを使用して、タッチ入力を処理することができます。 これらのイベントを使用することで、タッチとマルチタッチ入力に応答してオブジェクトを移動して拡張することができます。 イベントは、次の表に記載されています。


イベント

説明

ManipulationStarted

ユーザーが画面上に指や指を置くことによって直接操作を開始したときにこのイベントが発生します。

のManipulationDelta

ユーザーが画面上に指や指を動かしている間このイベントが繰り返し発生します。

ManipulationCompleted

ユーザーが画面から自分の指や指を削除すると、このイベントが発生します

Note 注:

のWindows PhoneでサポートされているSilverlightコントロールは、ジェスチャーに対応しており、タップ、パン、とフリックなどのサポートのジェスチャー。 このようなタップ、ダブルタップ、およびマウスイベントを使用してタップ&ホールドなどの簡単なジェスチャーを処理することができます。 詳細については、 Windowsの電話の入力のトピックを。

XNA Frameworkにおけるジェスチャーのサポート

XNAフレームワークは、アプリケーションを開発するための堅牢なタッチジェスチャのシステムを提供しています。 開発者は、最初からいずれかを実装するのではなく、活用するこの組み込みのジェスチャーのシステムをすることができます。 以下のXNAのジェスチャーは、Windowsの携帯電話でサポートされています。


GestureType

説明

タップ

指で画面とリリースに触れる。

DoubleTap

このジェスチャーは、連続する二つのタップを表します。

ホールド

指で画面に触れると短時間のための場所でそれを保持しています。

FreeDrag

指は、任意の方向に画面と動きに触れる。

VerticalDrag

指で画面と上下方向に移動するに触れる。

HorizontalDrag

指は、左または右方向に画面と動きに触れる。

DragComplete

VerticalDrag、またはジェスチャーをHorizontalDrag、FreeDragの終わりを示します。

フリック

指で画面上をドラッグし、停止せずに持ち上げられる。

ピンチ

二本の指が画面上に押すと動き回る。

PinchComplete

このジェスチャーは、ピンチジェスチャーの終わりを示します。

以下のリストは、XNAアプリケーションでジェスチャーのサポートを実装するための有用なトピックや記事を提供しています。

Tags: , , カテゴリー: シルバー タグ: