タッチ可能なコンポーネントのプロパティ
タッチ可能なコンポーネントは、タッチまたはポインターイベントからの入力を受け取り、カスタムのタッチ動作をサポートするハンドラーを呼び出します。
onPress
以外のすべてのタッチ可能なコンポーネントのプロパティには、APL 1.4以降が必要です。これよりも古いバージョンのAPLを実行しているデバイスには、別のエクスペリエンスを提供してください。タッチ可能なコンポーネント
タッチ可能なコンポーネントは、次のとおりです。
プロパティ
すべてのタッチ可能なコンポーネントには、次のプロパティがあります。
- すべてのアクション可能なコンポーネントのプロパティ
- すべての基本コンポーネントのプロパティ
- 以下は、タッチ可能なコンポーネント固有のプロパティの一覧です。列の意味については、こちらを参照してください。
プロパティ | 型 | デフォルト | スタイル設定 | 動的 | 説明 |
---|---|---|---|---|---|
gesture , gestures |
ジェスチャーハンドラーの配列 | [] | ✕ | ✕ | 実行するジェスチャーハンドラーの配列です。 |
onCancel |
コマンドの配列 | [] | ✕ | ✕ | ジェスチャーがポインターを引き継ぐときに実行するコマンドです。 |
onDown |
コマンドの配列 | [] | ✕ | ✕ | ポインターダウンのイベントが発生したときに実行するコマンドです。 |
onMove |
コマンドの配列 | [] | ✕ | ✕ | ポインターの移動時に実行するコマンドです。 |
onPress |
コマンドの配列 | [] | ✕ | ✕ | ポインターのdownに続いてupが行われた場合に実行するコマンドです。 |
onUp |
コマンドの配列 | [] | ✕ | ✕ | ポインターを放したときに実行するコマンドです。 |
gesture、gestures
ジェスチャーハンドラーの配列です。
ポインターイベントが発生すると、Alexaはジェスチャーハンドラーのリストを(順に)チェックし、イベントがサポートされているジェスチャーかどうかを判断します。該当するジェスチャーハンドラーがあった場合、AlexaはonCancel
ハンドラーを実行します。次に、適用されるジェスチャーハンドラーが、ポインターイベントを処理します。
ポインターイベントに該当するジェスチャーハンドラーがない場合、Alexaはイベントを適用可能なonDown
、onMove
、onUp
のハンドラーに渡します。
onCancel
ジェスチャーハンドラーがポインターの制御を引き継ぐときに実行するコマンドです。生成されるイベントの形式は次のようになります。
"event": {
"source": {
"type": COMPONENT_TYPE, // コンポーネントの型(TouchWrapperやVectorGraphicなど)
"handler": "Cancel",
... // コンポーネントのソースプロパティ
},
"component": {
"x": Number, // コンポーネントのdownイベントのX位置(dp)
"y": Number, // コンポーネントのdownイベントのY位置(dp)
"width": Number, // コンポーネントのdp単位での横幅
"height": Number, // コンポーネントのdp単位での縦幅
}
}
event.source
の詳細についてはイベントソースを参照してください。
onCancel
ハンドラーはコマンドを高速モードで実行します。
onDown
ポインターダウンのイベントが発生したときに実行するコマンドです。生成されるイベントの形式は次のようになります。
"event": {
"source": {
"type": COMPONENT_TYPE, // コンポーネントの型(TouchWrapper、VectorGraphicなど) ,
"handler": "Down",
... // コンポーネントのソースプロパティ
},
"component": {
"x": Number, // コンポーネントのdownイベントのX位置(dp)
"y": Number, // コンポーネントのdownイベントのY位置(dp)
"width": Number, // コンポーネントのdp単位での横幅
"height": Number, // コンポーネントのdp単位での縦幅
}
}
event.source
の詳細についてはイベントソースを参照してください。
onDown
ハンドラーはコマンドを高速モードで実行します。
VectorGraphic
コンポーネントは、このイベントに追加のviewport
プロパティを追加します。
onMove
ポインタの位置が移動したときに実行するコマンドです。生成されるイベントの形式は次のようになります。
"event": {
"source": {
"type": COMPONENT_TYPE, // コンポーネントの型(TouchWrapper、VectorGraphicなど) ,
"handler": "Move",
... // コンポーネントのソースプロパティ
},
"component": {
"x": Number, // コンポーネントのmoveイベントのX位置(dp)
"y": Number, // コンポーネントのmoveイベントのY位置(dp)
"width": Number, // コンポーネントのdp単位での横幅
"height": Number, // コンポーネントのdp単位での縦幅
},
"inBounds": Boolean // ポインターがコンポーネントの範囲内にある場合はTrue
}
ポインター位置のinBounds
計算では、重なり合ったコンポーネントが考慮されません。
event.source
の詳細についてはイベントソースを参照してください。
onMove
ハンドラーはコマンドを高速モードで実行します。
VectorGraphic
コンポーネントは、このイベントに追加のviewport
プロパティを追加します。
onPress
押下イベントが発生したときに実行するコマンドです。生成されるイベントの形式は次のようになります。
"event": {
"source": {
"type": COMPONENT_TYPE, // コンポーネントの型(TouchWrapper、VectorGraphicなど) ,
"handler": "Press",
... // コンポーネントのソースプロパティ
}
}
event.source
の詳細についてはイベントソースを参照してください。
onPress
ハンドラーは通常モードで実行されます。
onUp
ポインターアップのイベントが発生したときに実行するコマンドです。生成されるイベントの形式は次のようになります。
"event": {
"source": {
"type": COMPONENT_TYPE, // コンポーネントの型(TouchWrapper、VectorGraphicなど) ,
"handler": "Up",
... // コンポーネントのソースプロパティ
},
"component": {
"x": Number, // コンポーネントのupイベントのX位置(dp)
"y": Number, // コンポーネントのupイベントのY位置(dp)
"width": Number, // コンポーネントのdp単位での横幅
"height": Number, // コンポーネントのdp単位での縦幅
}
"inBounds": Boolean // ポインターがコンポーネントの範囲内にある場合はTrue
}
ポインター位置のinBounds
計算では、重なり合ったコンポーネントが考慮されません。
event.source
の詳細についてはイベントソースを参照してください。
onUp
ハンドラーはコマンドを高速モードで実行します。
VectorGraphic
コンポーネントは、このイベントに追加のviewport
プロパティを追加します。
イベントハンドラーのルール
ユーザーがタッチ可能なコンポーネントの範囲内で開始したり、実行したりしたマウスやタップのイベントにより、そのコンポーネントのポインターイベントハンドラーがトリガーされます。Alexaは、次のルールを使ってこれらのハンドラーを実行します。
- 最上部のタッチ可能なコンポーネントの範囲内でdownポインターが発生すると、
onDown
ハンドラーが実行されます。 -
downポインターがアクティブな間、元のdownイベントが同じコンポーネントで発生した場合には、ポインター位置の変更に応じて
onMove
ハンドラーが実行されます。たとえば、
componentA
、componentB
の2つのコンポーネントがあるとします。- ユーザーが
componentB
をタッチして、ポインターを移動します。componentB
のonMove
ハンドラーが実行されます。 - ユーザーが
componentA
をタッチして、componentB
の範囲内にポインターを移動します。componentB
のonMove
ハンドラーは実行されません。
- ユーザーが
-
downポインターが解放されると、元のdownイベントが同じコンポーネントで発生している場合には
onUp
ハンドラーが実行されます。- ユーザーが
componentB
をタッチして、ポインターを放します。componentB
のonUp
ハンドラーが実行されます。 - ユーザーが
componentA
をタッチし、ポインターをcomponentB
の範囲内に移動してから、ポインターを放します。componentB
のonUp
ハンドラーは実行されません。
- ユーザーが
-
downポインターがコンポーネントの範囲内で解放されると、元のdownイベントが同じコンポーネントで発生した場合は
onPress
ハンドラーが実行されます。- ユーザーが
componentB
をタッチし、ポインターをcomponentB
の範囲内にとどめてから、ポインターを放します。componentB
のonPress
ハンドラーが実行されます。 - ユーザーが
componentB
をタッチし、ポインターをcomponentB
の範囲外に移動して、ポインターを放します。componentB
のonPress
ハンドラーは実行されません。
- ユーザーが
onPress
ハンドラーは、常にonUp
ハンドラーの後に実行されます。
2つ以上のタッチ可能なコンポーネントが最初のポインターdownイベントの位置に重なっている場合、最上部のコンポーネントがdownイベント、および後続するすべてのmove、up、pressイベントを受け取ります。下部のコンポーネントはイベントを受け取りません。
ジェスチャーは、スワイプやダブルタップなど、特定の動きやポインターアクションを解釈する特別な用途のハンドラーです。ジェスチャーハンドラーはジェスチャーの開始を認識すると、onCancel
ハンドラーを実行します。onCancel
ハンドラーが完了すると、ジェスチャーハンドラーがすべてのポインターイベントをキャプチャーします。onUp
およびonMove
ハンドラーは無視されます。
onCancel
ハンドラーは、APLがポインターの制御を失った場合にも実行されます。これは、別のアプリが画面を引き継いだ場合に発生する可能性があります。
タッチ可能なコンポーネントはアクション可能なコンポーネントの1つであり、コンポーネントにonPress
ハンドラーがある場合に「Enter」キーの押下に応答します。コンポーネントにonPress
ハンドラーがない場合、コンポーネントは何もしません。
コンポーネントにonPress
ハンドラーがある場合、「Enter」キーを押すと次の動作が実行されます。
- ユーザーがEnterキーを押すと、
pressed
コンポーネント状態をtrue
に設定します。 - ユーザーがEnterキーを放すと、
pressed
コンポーネント状態をfalse
に戻します。 onPress
ハンドラーを実行します。
Enter
とNumpadEnter
のキーボードcode
イベントをキャプチャーし、イベントのプロパゲートをブロックすることにより、この動作を上書きできます。
関連トピック
最終更新日: 2020 年 08 月 21 日