ステップ 1 - アプリケーション構造を作成する

このチュートリアルのこのステップでは、学びます:

  • Activity ノードのさまざまなタイプについて

  • Activity Browser を使用して、Activity ノードを持つアプリケーションの構造を作成する方法

  • State Manager を使用して Activity ノードのアクティベーション状態を制御する方法

チュートリアルを入手する

チュートリアルを入手するには、Kanzi Studio Quick Start ウィンドウで Projects をクリックし、Tutorials タブを選択します。Activity チュートリアルの横にある ダウンロード をクリックします。

Kanzi Studio はチュートリアルを <KanziWorkspace>/Tutorials ディレクトリにダウンロードします。以下が含まれています。

  • <KanziWorkspace>/Tutorials/Activity/Start/Tool_project ディレクトリにある、チュートリアルの開始地点となるプロジェクト。

  • <KanziWorkspace>/Tutorials/Activity/Completed ディレクトリにある、完成したチュートリアル。

開始プロジェクトの内容

スタートポイントとなるプロジェクトには、このチュートリアルを完了するのに必要なコンテンツが含まれています。

  • Prefabs には以下が含まれます:

    • このチュートリアルで使用するUI要素の画像

      ../../_images/start-prefabs1.png
    • アクティビティのアクティベーションを制御するために使用するUIコントロール

      ../../_images/start-prefabs-factory-content.png
  • Library には、アプリケーションで使用するブラシが含まれています。

    ../../_images/start-brush-background.png

アプリケーション構造を作成する

このセクションでは、Activity Browser とさまざまなタイプの Activity ノードを使用してアプリケーションの構造を作成する方法を学びます。

Activity Browser を使用して、アクティビティとアクティビティホストを作成および検査し、アクティビティのアクティベーションをシミュレートします。Activity Browser は、アプリケーション内のアクティビティのすべての可能なUI状態を表示します。

アプリケーション構造を作成するには、以下のようにします。

  1. Kanzi Studio で、<KanziWorkspace>/Tutorials/Activity/Start/Tool_project/Activity.proj.kzm Kanzi Studio プロジェクトを開きます。

  2. Node Tree で、RootNode ノードを右クリックし、Delete を選択します。

    アプリケーションの構造はアクティビティホストとアクティビティを使用して作成するため、RootNode ノードを削除します。

    ../../_images/delete-rootpage.png
  3. ルート Activity Host ノードを作成して設定します。

    1. Activity Browser で、create-root をクリックし、Create Root Parallel Activity Host 2D を選択し、ノードに Cluster という名前を付けます。

      Kanzi Studio は、Node Tree の Screen ノードの下に Parallel Activity Host ノードを作成します。Activity Browser では、Parallel Activity Hostsは紫色です。

      Activity Host は、その子アクティビティがアクティブになる条件を定義します。Parallel Activity Host は、複数の子アクティビティを同時にアクティブにすることができます。この機能により、アプリケーションのトップレベルノードに最も適したタイプのアクティビティホストとなることがよくあります。

      Activity Browser は、複数のプロジェクトを含む Kanzi Studio ソリューションを含め、アプリケーションのすべての可能なUI状態を表示します。アプリケーション内のUI状態を作成、検査、および操作するには、Activity Browser を使用します。

      ../../_images/ab-create-root-pah.png ../../_images/ab-cluster-pah.png ../../_images/node-tree-root-pah.png

      ヒント

      Activity Browser ウィンドウでパンおよびズームするには、次のショートカットを使用します。

      アクション

      ショートカット

      パン

      • マウスの中央ボタンをクリックしてドラッグします。

      • Space キーを押し、左マウスボタンをクリックしてドラッグします。

      ズーム

      • マウスホイールを回します。

      • Shift キーと Alt キーを押し、左マウスボタンをクリックしてドラッグします。

    2. Properties に追加して設定します。

      • Background Brush から Background へ

      • Layout Width を1920に

      • Layout Height を 720 に

        Cluster ノードが Screen ノードと同じサイズになるように、Layout Width プロパティと Layout Height プロパティを設定します。

      すべてのアクティビティおよびアクティビティホストノードは Content Layouts です。デフォルトで、Content Layout ノードのサイズはその子ノードのサイズによって決まります。

      ../../_images/properties-cluster1.png ../../_images/preview-background.png
  4. クラスターUIにヘッダーを追加します。

    1. Activity Browser で、Cluster アクティビティホストの下にある add-button をクリックし、Create Activity を選択し、アクティビティとそのプレハブに Header という名前を付けます。

      Activity Browser のすべてのアクティビティにはプレハブがあります。Activity Browser で Activity を追加する際には、既存のプレハブを選択するか、アクティビティ用のプレハブを作成します。選択できるプレハブは、Activity ノードタイプのものに限られます。

      Activity Browser に追加するアクティビティは、アプリケーションノードツリーのノードではありません。それらは、これらのアクティビティをアクティブにしたときに Kanzi が作成する構造のビジュアライゼーションに過ぎません。

      アクティビティをアクティブにすると、Kanzi:

      1. プレハブを使用してアクティビティノードを作成します。

      2. アクティビティノードをノードツリーにアタッチします。

      3. アクティビティを表示します。

      4. アクティビティホストがキーのフォーカスを持ち、異なる設定がされていない場合、キーのフォーカスをアクティビティに設定します。アクティビティをアクティブ化する際にフォーカスを設定するかどうかを制御する。

      ../../_images/ab-cluster-create-header.png ../../_images/create-activity-header.png ../../_images/ab-cluster-header.png

      ヒント

      Activity Browser で、アクティビティツリーを Activity Browser ウィンドウのサイズに合わせたい場合は、右上隅の 画面にフィット をクリックします。

      ../../_images/ab-fit-to-screen.gif
    2. Activity Browser で、Header アクティビティを選択し、サイドパネルで InitiallyActive プロパティを有効に設定します。

      この方法で、アクティビティホストがアクティブなときにアクティビティをアクティブに設定します。これを示すために、Activity Browser はそのようなすべてのアクティビティに対して initially-active アイコンを表示します。

      ../../_images/header-initially-active.png ../../_images/ab-header-initially-active.png
    3. Prefabs で、HeaderImage プレハブを Header プレハブにドラッグします。

      アクティビティプレハブに追加するノードは、アクティビティがそのプレハブを使用しているときに表示され、ユーザーがそれらと対話することができます。

      ../../_images/headerimage-to-header.gif
    4. Prefabs で、Header プレハブを選択し、Properties で追加して設定します。

      • Layout Width を1920に

      • Layout Height を 720 に

      ../../_images/properties-header.png
    ../../_images/preview-header.png
  5. 前の手順を繰り返して、クラスターUIにテールテールを追加しますが、アクティビティに Telltales という名前を付け、TelltalesImage プレハブを使用します。

    ../../_images/ab-cluster-telltales.png ../../_images/prefabs-telltales.png ../../_images/properties-telltales.png ../../_images/preview-telltales.png
  6. クラスターUIにメインゲージを追加します。

    1. Activity Browser で、Cluster アクティビティホストの下にアクティビティを追加し、それとそのプレハブに GaugeView という名前を付け、InitiallyActive プロパティを有効に設定します。

      このアクティビティを使用して、メインゲージとクラスターウィジェットを表示します。ウィジェットは、このチュートリアルの次のステップで追加します。

      ../../_images/ab-gaugeview.png ../../_images/prefabs-gaugeview.png
    2. Activity Browser で、GaugeView アクティビティに Parallel Activity Host を追加し、GaugeViewActivityHost と名付けます。

      この Parallel Activity Host を使用すると、メインゲージとウィジェットの状態を表示し、個別に制御することができます。

      ../../_images/ab-gaugeviewactivityhost.png ../../_images/prefabs-gaugeviewah.png
    3. Activity Browser で、GaugeViewActivityHost アクティビティホストに MainGauge アクティビティを追加し、その InitiallyActive プロパティを有効に設定します。

      このアクティビティを使用して、クラスターの中央にメインゲージを表示します。

      ../../_images/ab-maingauge.png
    4. Prefabs で、MainGaugeImage プレハブを MainGauge プレハブにドラッグします。

      ../../_images/maingaugeimage-to-maingauge.gif
    5. Prefabs で、MainGauge プレハブを選択し、Properties で追加して設定します。

      • Layout Width を1920に

      • Layout Height を 720 に

      ../../_images/properties-maingauge.png ../../_images/preview-maingauge.png

ステートマネージャーでアクティビティを制御する

このセクションでは、ステートマネージャーを使用してアクティビティノードを制御する方法を学びます。

ステートマネージャーでアクティビティを制御するには:

  1. Node Tree で、Cluster ノードを Alt を押しながら右クリック し、Alias を選択します。

    Kanzi Studio は、最も近いノードのリソースディクショナリにエイリアスを作成します。このプロジェクトでは、リソースディクショナリを持つ最も近いノードは Screen ノードです。

    Alias を使用して、Kanzi ノードへの一貫したアクセスを得ることができます。エイリアスを使用して、Kanzi Studio 内および Kanzi Engine API を使用してノードにアクセスすることができます。

    ../../_images/node-tree-cluster-alias.png ../../_images/dictionaries-cluster.png
  2. Activity Browser で、Cluster アクティビティホストを右クリックし、Create Activity Property > Enum を選択して、Cluster.MainView と名付けます。

    Kanzi Studio はアクティビティプロパティプロパティタイプを作成し、それを Cluster ノードに追加します。

    このプロパティタイプを使用して、クラスターの状態を制御します。

    各アクティビティごとに、そのアクティビティに特有のプロパティを定義できます。このタイプのプロパティはアクティビティプロパティと呼ばれ、これらのプロパティの値は Kanzi アプリケーションのステートマシンとロジックを実装します。アクティビティプロパティは、アクティビティが仮想であってもこれらのプロパティの値を Kanzi が保持できるようにします。Kanzi がアクティビティを仮想化すると、そのアクティビティのプロパティをシリアライズし、Kanzi がそのアクティビティを非仮想化すると、そのアクティビティの状態をデシリアライズしてプロパティの値を復元します。

    Activity Browser で、アクティビティプロパティの値を変更すると、そのプロパティのランタイム値が設定されます。

    ../../_images/ab-cluster-activity-property.png ../../_images/create-cluster-mainview-property.png ../../_images/properties-cluster-mainview.png
  3. Library > Property Types で、Activity > ActivityProperty > Cluster > MainView プロパティを選択し、Properties で Enumeration Options を編集して、プロパティに次の列挙キーと値を持たせます。

    • Drive を 0 に

    • Browse を 1 に

    ../../_images/library-property-types-mainview.png ../../_images/properties-mainview-property.png

    ヒント

    Properties からカスタムプロパティタイプに素早くアクセスするには、カスタムプロパティタイプを右クリックし、Select in Library を選択します。

    ../../_images/custom-property-type-quick-navigation.png
  4. Drive と Browse の状態を切り替えるために使用するステートマネージャーを作成します。

    1. Library > State Managers で、Drive と Browse のステートを持つ、Cluster という名前のステートマネージャーを作成します。

      ../../_images/library-cluster-state-manager.png
    2. Library > State Managers から、Cluster ステートマネージャーを Node Tree にドラッグし、Cluster ノードにドロップします。

      この方法で、Cluster ステートマネージャーを Cluster ノードに追加します。ステートマネージャーをノードにドロップすると、Kanzi Studio は Resources > State Manager プロパティを追加し、ドロップしたステートマネージャーに設定します。

      ../../_images/properties-cluster-state-manager.png
    3. Library > State Managers > Cluster ステートマネージャーで、State Group を選択し、Properties で Controller Property を Activity.ActivityProperty.Cluster.MainView プロパティに設定します。

      このステートマネージャーを制御するには、Activity.ActivityProperty.Cluster.MainView プロパティを使用します。

      ../../_images/library-cluster-state-group.png ../../_images/properties-cluster-state-group.png
    4. Library > State Managers > Cluster ステートマネージャーで、Browse ステートを選択し、Properties で Activity.ActivityProperty.Cluster.MainView プロパティを Browse に設定します。

      Drive ステートでは、コントローラープロパティの値はすでに Drive に設定されています。

      ../../_images/properties-browse-state.png
    5. Drive ステートで、State Object を作成し、MainGauge と名付け、Properties に追加して設定します。

      • Target Object Path に

        #Cluster/GaugeView/GaugeViewActivityHost/MainGauge/MainGaugeImage
        

        以前に作成した Cluster エイリアスと、Cluster ノードからこの状態で制御したいコンテンツへのパスを使用します。

      • Transform 2D > Render Transformation

        このプロパティのデフォルト値を使用するのは、Drive 状態でゲージを初期位置に保持したいからです。

      ../../_images/library-maingauge-state.png ../../_images/properties-cluster-maingauge-drive.png
    6. 前のステップで作成した MainGauge State Object をコピーし、それを Browse ステートに貼り付け、Render Transformation プロパティ Translation X プロパティフィールドを-565に設定します。

      この方法で、Browse ステートのゲージをクラスタUIの左側に配置します。

      ../../_images/library-maingauge-state-browse.png ../../_images/properties-cluster-maingauge-browse.png
  5. Cluster の状態を制御するUI要素を作成します。

    1. Prefabs で、MainViewSwitcher トグルボタンプレハブを Header プレハブにドラッグします。

      ../../_images/mainviewswitcher-prefab-to-header.gif
    2. Prefabs で、MainViewSwitcher プレハブを選択し、Properties で + Add Binding をクリックし、Binding Editor で設定します。

      • Binding Mode から Two way へ

      • Property から Toggle State へ

      • Expression へ

      {#Cluster/Activity.ActivityProperty.Cluster.MainView}
      

      Save をクリックします。

      このバインディングにより、MainViewSwitcher トグルボタンは Cluster アクティビティホストの Activity.ActivityProperty.Cluster.MainView プロパティの値を取得および設定できます。この方法で、トグルボタンは Cluster アクティビティホストの状態を制御します。

      ヒント

      プロパティを右クリックして Create Binding を選択すると、そのプロパティのバインディングの作成を開始できます。

      この方法では、プロパティが自動的に Binding Editor に追加されます。

      ../../_images/properties-create-binding.png
      ../../_images/mainviewswitcher-binding.png

Cluster の Drive または Browse ステートを次の方法で切り替えることができます。

  • Preview で、MainViewSwitcher トグルボタンをクリックします。

  • Activity Browser で、Cluster アクティビティホストを選択し、サイドパネルで MainView プロパティの値を変更します。

../../_images/mainviewswitcher-preview.gif

関連項目

Activity Browser の使用方法について詳しく知るには、アクティビティブラウザの使用 をご覧ください。

アクティビティシステムについて詳しく学ぶには、アクティビティ を参照してください。

Kanzi コンテンツレイアウトについて詳しく知るには、Content Layout ノードを使用する を参照してください。

Kanzi でのエイリアスについて詳しく知るには、エイリアスの使用 をご覧ください。

バインディングの使用方法について詳しくは、バインディングの使用 および バインディング式リファレンス を参照してください。

Kanzi ステートマネージャーについて詳しく知るには、ステートマネージャー (State Manager) を参照してください。

Kanzi トグルボタンノードについて詳しく知るには、Toggle Button ノードを使用する を参照してください。