表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

8/210

ここからは足早に手じまい2

さて、前回までで自分で作ったゲームブックデータを扱える(表示がどうのとかには目をつむる)所まで出来たのを確認しました。


ここから、もうちょっとだけゲームブックアプリっぽくするのが目標になります。


これを書きながら調べものしてテストして・・・スンナリ行くかは分からないですが、ライブ感的なもの位は感じられたら・・・いいのかな?


1.UIコンポーネント(ユーザーインターフェースの部品)


実の所、ionic提供の白紙テンプレートアプリには、"Ready to create an app?Start with Ionic UI Components"とか表示されてます。


UI Components の所にはリンクがあって、Ionic提供のUIコンポーネントのページに飛びます。


とりあえずは、Button と、 Card と言うのがあればなんとかなりそうに思いました。


2.Card を使う


Card は説明によると(部分的にですが日本語選択すると日本語で書いて有ります)画像、ボタン、テキストを入れる入れ物のような感じのようですね。


見た感じですが、src\app\home\home.page.html の <div id="container"></div>の間に入れれば動きそうですね。


サンプルコードもあったので早速入れてみます。


追加したサンプルコード

----------------------------------------

<ion-card>

  <ion-card-header>

    <ion-card-subtitle>Card Subtitle</ion-card-subtitle>

    <ion-card-title>Card Title</ion-card-title>

  </ion-card-header>


  <ion-card-content>

    Keep close to Nature's heart... and break clear away, once in awhile,

    and climb a mountain or spend a week in the woods. Wash your spirit clean.

  </ion-card-content>

</ion-card>


<ion-card>

  <ion-item>

    <ion-icon name="pin" slot="start"></ion-icon>

    <ion-label>ion-item in a card, icon left, button right</ion-label>

    <ion-button fill="outline" slot="end">View</ion-button>

  </ion-item>


  <ion-card-content>

    This is content, without any paragraph or header tags,

    within an ion-card-content element.

  </ion-card-content>

</ion-card>


<ion-card>

  <ion-item href="#" class="ion-activated">

    <ion-icon name="wifi" slot="start"></ion-icon>

    <ion-label>Card Link Item 1 activated</ion-label>

  </ion-item>


  <ion-item href="#">

    <ion-icon name="wine" slot="start"></ion-icon>

    <ion-label>Card Link Item 2</ion-label>

  </ion-item>


  <ion-item class="ion-activated">

    <ion-icon name="warning" slot="start"></ion-icon>

    <ion-label>Card Button Item 1 activated</ion-label>

  </ion-item>


  <ion-item>

    <ion-icon name="walk" slot="start"></ion-icon>

    <ion-label>Card Button Item 2</ion-label>

  </ion-item>

</ion-card>

----------------------------------------

幾つかの使用例があるようですが、ボタンを使用した例も有り、このまま使えそうですね。


多少いじってみたところ、直感でどうにかなる部分も多いようですので、書きながら編集していきます。


2.ボタンとカード

カードのサンプル2のボタンがついている奴を使う事にします。


元のコードは

----------------------------------------

<ion-card>

  <ion-item>

    <ion-icon name="pin" slot="start"></ion-icon>

    <ion-label>ion-item in a card, icon left, button right</ion-label>

    <ion-button fill="outline" slot="end">View</ion-button> ←ここがボタン

  </ion-item>


  <ion-card-content>

    This is content, without any paragraph or header tags,

    within an ion-card-content element.

  </ion-card-content>

</ion-card>

----------------------------------------

まずボタンを右から左に移動させます。


単純に <ion-item> の位置を変えればいいかと思いましたが、うまく行きません。


slot="end"の部分が怪しいかなと思い、勘でend をstart にしたところ、これが正解。


以下のように変更しました。

----------------------------------------

<ion-card>

  <ion-item>

    <ion-label>ion-item in a card, icon left, button right</ion-label> ←テキストをいじるのが次の目標

  </ion-item>

  <ion-item>

    <ion-button fill="outline" slot="start">次へ</ion-button>

  </ion-item>

</ion-card>

----------------------------------------

選択肢とかはなしで、とりあえず1ページ目を表示して2ページ目に移動。そして1ページ目に戻る形を目指します。


3.テキストを表示しよう


まず<ion-label>ion-item in a card, icon left, button right</ion-label>の部分を書き換えたいと思います。


ほぼ経験なしのIonicですが、<ion-label>{{PageText1}}</ion-label> と言う感じにしてPageText1に出力したい内容を書けば良さそうです。


・・・・・・・・・・・・・・しばらく試行錯誤が続きました。


ああでもない、こうでもないでVisualStudioCode様のありがたいアドバイスを聞きながら解決したので、顛末をある程度書きながら、変更ソースをコピーしますね。


4.クラスと言うもの


もっと早く気づくべきだったのですが、src\app\home\home.page.ts の中身はクラスの宣言です。


つまり、Ionicは"HomePage"と言うクラスを作るあれこれを手伝ってくれているわけです。


さて、クラス。


オブジェクト指向と言う言葉を聞いたことがあるかもしれませんが、プログラミングする上で単なる変数を別々に扱うよりも、名前、Lv、HP、スキルと言った性質をひとまとめにすると、色々楽できるよね?と言う考えです。(ひとまとめにしたものをオブジェクトと呼ぶわけです)


クラスと言うのもオブジェクトで、色々な性質や動きを持たせることが出来る訳です。

(その一つとして、src\app\home\home.page.htmlをひな型として使うよ。という事も書いて有る)


ですので、src\app\home\home.page.htmlでゲームブックデータのText1を表示させたいならば、そういう性質を持たせればいい訳です。


src\app\home\home.page.tsに以下のようにPageText1と言うプロパティ(性質・特性)を追加

----------------------------------------

private _PageText1 : string;

public get PageText1() : string {

return this._PageText1;

}

public set PageText1(v : string) {

this._PageText1 = v;

}

----------------------------------------


汝に名を与える!という訳で、これでPageText1と言うモノに中身を書いたり読んだりできるようになりました。


次にsrc\app\home\home.page.tsのコンストラクタ(constructor()、"HomePage"と言うクラスを作る時の動作を規定)で、PageText1にゲームブックデータのPage1のText1を表示させることに成功しました。


コンストラクタ部分

----------------------------------------

constructor() {

this.PageText1 = PageData[1].Text1;

}

----------------------------------------


src\app\home\home.page.htmlの表示部分

----------------------------------------

<ion-card>

<ion-item>

<ion-label>{{PageText1}}</ion-label>  ←{{PageText1}}がコンストラクタで設定した中身

</ion-item>

<ion-item>

<ion-button fill="outline" slot="start">次へ</ion-button>

</ion-item>

</ion-card>

----------------------------------------


これだけですと中身も変わらないですが、キリがいいので投稿して、次の準備をしておきます。

評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ