ステップ2 - 補間の完了に反応する¶
このステップでは、相対方位に基づいてコンパスの背景を設定します。相対方位とは、目的地と進行方向の差です。
補間が完了したことに反応する¶
このセクションでは、Property Target Interpolator: Interpolation Completed トリガーを使用して、Property Target Interpolator がコンパスダイヤルの回転を完了したときに確認します。補間が完了し、進行方向と目的地が一致したときに、RootPage ノード内の State Manager を使用してコンパスの背景を設定します。
補間の完了に反応するには:
目的地と移動方向の差を見つける:
Library Alt を押しながら右クリック Property Types で、Property Type を選択し、New Property Type ウィンドウで設定します。
Name から Interpolate.RelativeBearing へ
Data Type から Integer へ
Node Tree で RootPage ノードを選択し、Properties で + Add Binding をクリックし、Binding Editor で設定します。
Property から Interpolate.RelativeBearing へ
Expression へ
abs(mod({@./Interpolate.Destination} - {@./Interpolate.Direction}, 360))
Save をクリックします。
このバインディングを使用して、目的地と移動方向の間の角度の差を、前のステップで作成した Interpolate.RelativeBearing プロパティに格納します。モジュロ関数を使用して、Interpolate.RelativeBearing の値を0から359度の範囲にラップします。
Node Tree で Direction > Value ノードを選択し、Properties の Bindings で既存のバインディングをクリックし、Binding Editor で Expression を設定します。
mod({#RootPage/Interpolate.Direction}, 360)Save をクリックします。
このバインディングを使用して、コンパスの中心に表示される値を0から359の範囲にラップします。
Property Target Interpolator が補間を完了したときにそれに反応する方法を見つける:
Node Tree で RootPage ノードを選択し、Node Components Alt を押しながら右クリック Triggers で、Message Trigger > Property Target Interpolator > Interpolation Completed を選択します。
Property Target Interpolator: Interpolation Completed トリガーは、Property Target Interpolator が補間するプロパティの補間を完了したときに送信するメッセージをインターセプトします。
ここでは、Property Target Interpolator: Interpolation Completed トリガーを使用して、このチュートリアルのステップ1で追加した Property Target Interpolator が Interpolate.Interpolator プロパティの値の補間を終了したときに送信するメッセージをインターセプトします。
Property Target Interpolator: Interpolation Completed の Node Components > Triggers トリガーで、Message Source プロパティを Dial ノードに設定します。
Message Source プロパティを使用して、Property Target Interpolator: Interpolation Completed トリガーがインターセプトしたいメッセージのターゲットアイテムを設定します。Message Source プロパティを Dial ノードに設定するのは、Property Target Interpolator が、チュートリアルのステップ1で Dial ノードに追加したインターポレーションを完了したときに知りたいからです。
Property Target Interpolator: Interpolation Completed の Node Components で、Conditions を右クリックし、Trigger Condition を選択し、トリガー条件を設定します。
A
Property から Interpolate.RelativeBearing へ
Operation から = へ
B
Type of B から Fixed へ
Fixed Value を 0 に
このトリガー条件を使用して、補間が完了し、Interpolate.RelativeBearing プロパティの値が0のときにのみ、この Property Target Interpolator: Interpolation Completed トリガーを発動します。Interpolate.RelativeBearing プロパティの値が0のとき、移動の方向は目的地と一致します。
Property Target Interpolator: Interpolation Completed の Node Components で Alt を押しながら右クリック Actions をトリガーし、Set Property を選択し、Set Property アクションセットで:
Target Property から Interpolate.OnCourse へ
Fixed Value を有効にする
このアクションを使用して、Property Target Interpolator: Interpolation Completed トリガーがオフになり、Interpolate.RelativeBearing プロパティの値が 0 のときに、Interpolate.OnCourse プロパティの値を true に設定します。Interpolate.OnCourse プロパティが true に設定されると、RootPage ノード内の State Manager が、RootPage ノード内の Background Brush プロパティを Green に設定します。
Compass.xml ファイル内の direction XML 要素の値を変更して変更を保存すると、補間が完了した後、目的地と進行方向が一致している場合、コンパスの背景が緑色に変わります。
コンパスの動作を調整する¶
前のセクションでは、RootPage ノード内の State Manager を使用してコンパスの背景色を設定する Property Target Interpolator: Interpolation Completed トリガーを追加しました。しかし、そのステートマネージャーは、コンパスダイヤルの回転の補間が完了し、目的地と進行方向が一致したときにのみ背景色を設定します。このセクションでは、次の条件に反応する On Property Change トリガーを追加します:
目的地または移動方向が変わり、目的地と移動方向が一致しません。
目的地が変わり、目的地と移動方向が一致します。
コンパスの動作を調整するには、
相対方位が変化し、進行方向と目的地が一致しない場合に反応します。
Node Tree で RootPage ノードを選択し、Node Components > Triggers で On Property Change トリガーを作成し、それに On RelativeBearing Change という名前を付け、Property Type を Interpolate.RelativeBearing プロパティに設定します。
Kanzi は、RootPage ノード内の Interpolate.RelativeBearing プロパティの値が変更されたときにこのトリガーを発動します。
Property Target Interpolator: Interpolation Completed の Node Components > Triggers で、..Interpolate.RelativeBearing = 0 トリガー条件を右クリックし、Copy を選択し、On RelativeBearing Change トリガーを右クリックして、Paste を選択します。
On RelativeBearing Change トリガーに貼り付けたトリガー条件で、Operation を != に設定します。
この条件では、Kanzi は Interpolate.RelativeBearing プロパティの値が変化し、かつ Interpolate.RelativeBearing プロパティの値が 0 でない場合にのみこのトリガーを発動します。Interpolate.RelativeBearing プロパティの値が 0 でない場合、移動の方向は目的地と一致しません。
On RelativeBearing Change トリガーで Set Property アクションを作成し、次のように設定します:
Target Property から Interpolate.OnCourse へ
Fixed Value を無効にする
このアクションを使用して、Interpolate.RelativeBearing プロパティの値が変化し、かつ Interpolate.RelativeBearing プロパティの値が 0 でない場合に、Interpolate.OnCourse プロパティを false に設定します。Interpolate.OnCourse プロパティが false に設定されると、RootPage ノード内の State Manager が、RootPage ノード内の Background Brush プロパティを Black に設定します。
目的地が変更され、移動方向と一致したときに反応します。
Node Tree で RootPage ノードを選択し、Node Components > Triggers で On Property Change トリガーを作成し、それに On Destination Change という名前を付け、Property Type を Interpolate.Destination プロパティに設定します。
Kanzi は、RootPage ノード内の Interpolate.Destination プロパティの値が変化したときにこのトリガーを発動します。
Interpolation Completed トリガーで、..Interpolate.RelativeBearing = 0 トリガー条件をコピーして、On Destination Change トリガーに貼り付けます。
このトリガー条件を使用して、Interpolate.RelativeBearing プロパティの値が変化し、かつ Interpolate.RelativeBearing プロパティの値が 0 のときにのみ On Destination Change トリガーを発動します。Interpolate.RelativeBearing プロパティの値が 0 のとき、移動の方向は目的地と一致します。
Property Target Interpolator: Interpolation Completed トリガーで Set Property アクションをコピーし、On Destination Change トリガーに貼り付けます。
このアクションを使用して、Interpolate.RelativeBearing プロパティの値が変化し、かつ Interpolate.RelativeBearing プロパティの値が 0 のときに、Interpolate.OnCourse プロパティを true に設定します。Interpolate.OnCourse プロパティが true に設定されると、RootPage ノード内の State Manager が、RootPage ノード内の Background Brush プロパティを Green に設定します。
Compass.xml ファイル内の direction または destination XML 要素の値を変更してファイルを保存すると、コンパスの背景が次のように変わります。
direction XML要素の値を変更するとき:
目的地と移動方向が一致する場合、コンパスダイヤルの回転の補間が完了した後、背景が緑色に変わります。
目的地と移動方向が一致しない場合、背景は即座に黒くなります。
destination XML要素の値を変更すると、
目的地と移動方向が一致すると、背景が即座に緑色に変わります。
目的地と移動方向が一致しない場合、背景は即座に黒くなります。
次の作業¶
このチュートリアルでは、Property Target Interpolator を使用してプロパティのターゲット値を動的に設定し、現在の値を時間をかけてターゲット値に補間する方法を学びました。また、補間の完了に反応するために Property Target Interpolator: Interpolation Completed トリガーを使用する方法も学びました。
次に行えること:
Kanzi でデータソースを定義し、データソースから Kanzi アプリケーションのデータを取得する方法を学びます。チュートリアル: データソースからアプリケーションデータを取得する を参照してください。
ステートマネージャーの使用方法について詳しくは、ステートマネージャー (State Managers) を使用する場合 を参照してください。
キーフレームアニメーションを作成する方法を学びましょう。チュートリアル: キーフレームアニメーションを作成する を参照してください。
Kanzi アプリケーションでスワイプジェスチャーを使用して3Dモデルを回転させる方法を学びます。チュートリアル: 3Dモデルを回転させる を参照してください。