Edition」の初級から中級のチュートリアルです。このチュートリアルは、中学・高校生からプログラミングが始めての方達を対象にして、Mac&Winのアプリを同時に作ります。カード上のコントロールこの章の概略カード上のオブジェクト「コントロール」とスクリプト・エディターの使い方。メッセージ・ハンドラー、エラーの扱い等スクリプトの初歩。コントロールをグループ化してバックグラウンドにする。Hypercardの経験があるユーザーは、バックグラウンド(グループ)の違いを理解してください。日本語で「コントロール」と言うと、「支配する」とか「制御する」と言う意味になりますが、LiveCodeでは、カード上に作られる全ての種類の「オブジェクト」を指します。全てのオブジェクトですから、ボタンか、テキスト・フィールドか、と言うオブジェクトの種類を問わず、作られた順にナンバーが振り当てられます。コントロールに付けられたナンバーは、上に重ねたレイヤーの階層順に付けて行くと考えてください。レイヤー」と言う呼び方でも数えられます。二つ以上のコントロールをまとめたグループも、オブジェクトと考えるので、幾つかのオブジェクトを一つにしたグループも、コントロールの一つとしてカウントされます。グループはこの下で説明します。第2章ではLiveCodeのスクリプトをメッセージ・ボックスから送って、ボタンをカード上に作りました。Control」を選んで、ボタン、テキスト・フィールド等、各種コントロールをカードの上に作ることができます(上図)。ひとつはツール・パレットからドラッグ&ドロップで、視覚的にオブジェクトをカード上に運んで作ります。ツール・パレットを使うのが一番実用的かもしれません(下図)。それでは前回からの延長で、スタック「helloWorld」を使います。File」から「helloWorld.livecode」を選びます。Palette」を選んでください。プッシュ・ボタン」(上図赤丸)をドラッグして、カード右下にドロップします。ドロップしたをボタンをダブル・クリックすると、そのボタンのプロパティ・インスペクタが現れます(または、オブジェクトが選ばれている状態で、上にあるアイコン・メニューの一番左「Inspector」をクリック)。インスペクタのNameには、デフォルトの名前「Button」があって、カード上に作ったオブジェクトのボタンには「Button」と表示されています。「tNext」と言うボタン名(name)にしました。インスペクタのName(名前)にボタン名をタイプした後、カーソルを入れたままリターン・キーを叩くと、オブジェクトに表示されるボタン名は「tNext」に変わります。レイベル」と言うプロパティがあります。インスペクタにあるLabel(レイベル)は大文字で「NEXT」とします。タイプしたら、リターン・キーを叩いてレイベルを設定すると、ボタンの表示は大文字の「NEXT」に変わります。スタックの場合と同じように、name(名前)はプログラミング中で使い、lable(レイベル)はアプリケーションを使うユーザーの為の表示です。今はボタン・プロパティの設定は、そのふたつだけとします。プログラミング中で使う必要がなかった、デフォルトのままでも良いです。「name」はスクリプト中では通常ダブル・クオートで囲うので、ワンワードにする必要はありません。Palette」ツール・パレットから作ることができるオブジェクト(コントロール)は、上図の説明を見てください。ブラウズ・ツール」書いたスクリプトが正しく働くか、試しで動かしてみる時に使われます。ポインター・ツール」と呼ばれる、オブジェクトを選んでスクリプトを書き込んだり、オブジェクトの移動やサイズの変更に使うツールです。ツール・パレットからオブジェクトを作成すると、自動的にブラウズ・ツールはエディット・ツールに切り替わります。プッシュ・ボタン」を作ってください。ダブル・クリックでプロパティ・インスペクタを開き、名前(name)は「tPrev」、レイベル(label)は大文字で「PREVIOUS」とします。一つオブジェクトを作ります。ツール・パレットのテキスト・フィールドの中から左上にある「Label」を、カードの右上にドラッグ&ドロップします。テキスト・フィールドの「Label」はデフォルトのままで、特にプロパティを変更する必要はありません。right)、長いテキストが入っていても左右の幅で折り返されない設定になっています。アプリケーション・ブラウザー」を開きます。アプリケーション・ブラウザーの左上スタック「helloWorld」が閉じられていたら、三角アイコンをクリックしてスタック内のカードが見えるようにします。スタックには最低1枚のカードがあります。ここでは3枚のカードにしましょう。Card」を選びます(またはコントロール・キーを押しながらマウスで左クリックすればコンテクストメニューが開きます)。Card」を選ぶと確認のダイアログが出ますから「Yes」をクリックします。Card」で3枚にします。Card」も、「Objectメニュー」からもできます。1」(カード・ナンバー1)をセレクトしてください。図のようにセレクトしたカードがハイライトになって、右側にカード上のオブジェクトの一覧が見えます。今はカード・ナンバー1にしかオブジェクトを作っていません。Field」がハイライトになっています。反対にアプリケーション・ブラウザーでオブジェクトをハイライトにすると、カード上のオブジェクトも選ばれます。selected))が表示されています。Editor」LiveCodeでオブジェクトと呼んでいるモノは、すべて目に見える対象となっていて、その中にスクリプトを書き込むことができます。オブジェクトにマウスで指示を与えると、書かれてあるスクリプトはどういうマウスの指示だったかと判断してから、その後のスクリプトに従って(必要に応じて)、他のオブジェクトや、カード、スタックに指示を伝達して、目的とする処理が実行されます。オブジェクトの中にスクリプトを書いて行く事にしましょう。オブジェクトのスクリプト・エディタを開くには、幾つもの方法があります。今は知識としてして幾つもの開け方があると知っていれば良いですが、どれも状況に応じて使えるようになると便利です。1)ツール・パレットでエディット・ツールを選んだら、スクリプトを書き込みたいオブジェクトをセレクトして、アイコン・メニューの左から2番目「Code」(下図)をクリックします。Script」を選びます。使っているのがマウスを繋いでいないラップトップでした、コントロール・キーを押しながら、オブジェクトをクリックしてコンテクストメニューを開きます。これ以外にもプロパティ・エディターからも開けます。handler」それではボタン名「tNext」レイベル名「NEXT」のスクリプト・エディターを開いてください。handler)が用意されています。mouseUp)が来て、さらに行を変えて必要なスクリプトのラインが入って(現在はまだ空白です)、最後に「end」と始めと同じメッセージ名「mouseUp」で終わります。mouseUp」に達した時点で、コンピュータの処理はハンドラーから抜けて終了します。マウスに関連するメッセージ・ハンドラーはこれ以外にも、「mouseDown(マウスがクリック・ダウンされた直後)」「mouseEnter(マウスがオブジェクト内の入った直後)」「mouseDoubleUp(マウスがダブル・クリックされた直後)」等、10以上のメッセージがあります。Handler)があります。メッセージ・ハンドラーの中にスクリプトを書き込みます。このカード(開いたカード)のナンバーをフィールド1に入れないさい書き込んだスクリプトは、前の章でメッセージ・ボックスから送ったスクリプトと、ほとんど同じです。上の行はカードを移動させ、次の行は開いたカードのカード・ナンバーを、右上に置いたテキスト・フィールドに入れます。1」で指示をしています。今カードには2つのボタンと、1つのフィールドがあります。1」とナンバーが付けられています。Position」にあります。オブジェクトのレイヤーの順序を変えると、ボタン・ナンバーやフィールド・ナンバーも変わります。書き込んだスクリプトで、ボタン・オブジェクト「tNext」をクリック(マウスアップ)した時に、このスクリプトが働きます。書き込んだだけではまだ働きません。"tNext"」の左にある黄丸が緑丸に変わって(上図2)、スクリプト・エディター内のスクリプトは実行可能になります。文法上の間違いやスペルの間違いがあると、「Apply」のクリックで、エラーが表示されます。スクリプトのどのラインがエラーなのか赤丸にバツ印で指示されます。上の図では「cards」と複数で書いてしまったので、「次のカード」が何なのかコンピュータに判断できなくなり、その行でストップされました。下にある「Errors」のタブに、その説明が英文で表示されます。デバグ」が働いたためです。エラーが出たら正しい文に直してもう一度「Apply」をクリックします。"tNext"」の左にある赤丸が緑丸に変わったらOKです。スクリプト・エディターを閉じます。追加したいスクリプトがある時等、エディターは開いたままでもスクリプトの実行はできます。Selection」をエディター内に設置しておきます。Selection」を選んでください。Windowsではエクリプト・エディターのウインドウのトップにメニューがあります。図のようにエディター内に「Find:」が現れます。スクリプトの行数が増えて、何か変更したり、ワードを探し出したりする時に役に立ちます。今度は左下に置いたボタン名「tPrev」にスクリプトを書き込みます。mouseUpを書き込んで「Apply」でスクリプトを確定させてください。こちらはマウス・クリックで「前のカード」を開くスクリプトが1行目で、2行目はボタン名「tNext」とまったく同じです。ブラウズ・ツールを選んで、右下の「NEXT」ボタンをクリックします。新しいカードが開かれた直後、ボタン「tNext」のスクリプト・エディターが開かれて、ストップしてしまいました。黄色の丸印でライン3を指し示しています。1」に問題ありですね。1」があるのは「カード1」だけと言うのが原因です。エディターを閉じてコントロールを修正することにします。Debugging)をクリックして、デバッギング状態を解除してからエディターを閉じてください。コントロールをグループ化する「カード2」を開いているので、ボタンもフィールドも見えません。「カード1」に戻ります。アプリケ−ション・ブラウザーの「カード1」をダブル・クリックしてください。「カード1」に戻ったので、3つのコントロールが見えています。ポインター・ツールで、カード上の3つのコントロールを選ぶと、アプリケ−ション・ブラウザーの3つのコントロールもハイライトになります。オブジェクトをまとめて選ぶのは、カード左上をクリックしたまま、マウスを右下に対角線にドラッグします。オブジェクトをひとつづつクリックして行きます。Selected」を選ぶと、選ばれているオブジェクトはグループ化されて、一つのコントロールとして取り扱われるようになります。視覚的には透明なレクタングルの上に配置したオブジェクトのようになって、アプリケ−ション・ブラウザーの中にレイヤーで表示されます。グループもコントロールの一つですから、中にスクリプトを書く事ができます(ここでは書きません)。このままでは「カード1」にあるオブジェクトのグループですから、他のカードでも共通に扱われるようグループのプロパティを設定します。バックグラウンドのような振る舞い」にチェック・マークを入れます。group」にもチェック・マークが入ります(下図赤丸)。アプリケ−ション・ブラウザーの「カード2」をダブル・クリックして、「カード2」を開きます。カード上にはコントロールはありません。Group」を選びグループを選ぶと、「カード2」にグループとその中にあるボタンとフィールドが現れます。Group」に出て来るIDか名前を確認してください。同じように「カード3」を開いて、「Objectメニュー」からグループを配置させます。「カード3」の次に、もう一枚新しいカード(カード4)を追加する事にしましょう(アプリケ−ション・ブラウザーで見ると一番下になります)。Card」を選びます。バックグラウンドのような振る舞い」に設定したので、カード上には共通のグループが自動で設置されます。さあ、これでバグは修正されました。ブラウズ・ツールに持ち替えて「NEXT」ボタンをクリックして行ってください。カードが移動してそのカード・ナンバーが右上のテキスト・フィールドに表示されていますか。「PREVIOUS」ボタンの方はどうでしょう。グループの編集グループ化したボタンやフィールドのポジションを調整しようとして、ポインター・ツールで個々のオブジェクトをセレクトすると、グループ全体の透明なレクタングルが選ばれてしまいます。Group」(下図赤丸)をクリックすると、グループ化がいったん解除されて中のオブジェクトがセレクトできます。Group」をクリックすると、再びグループが現れます。オブジェクトの移動が始めのグループの透明レクタングルの外側になっていると、オブジェクトが見えなくなってしまうので、透明レクタングルにある四隅中央の小さな四角形を動かして、オブジェクトが見えるまでサイズ調整をしなくてはいけません。Save」して、この章を終わります。Tipsオブジェクトの名前(name)は、必ず変更しなくてはいけないと言うものではありません。ボタン・ナンバーやフィールド・ナンバーをスクリプト中で使う事もできますし、プログラミング中で使う必要がなかったらデフォルトのままでも良いです。Script」を選びます。E」カード上のオブジェクトを、エディット・ツールで選んでダブルクリックすると、そのオブジェクトのプロパティ・インスペクタが現れます。Inspector」を選びます。スクリプト・エディターを開いたまま、ブラウズ・ツールでテストして、必要に応じてスクリプトを書き加えて行く事ができます。(backgroundBehaivoir)」を設定しなくてはいけません。