第3章 lingo入門編multimediastudio.sekiguch.com/d6/d6-3.pdf1 第 3 章 入 門 編 第3章...

103
1 第3章 Lingo入門編 3.1 3.2 3.3 Director 6.0 Lingo Lingo Director

Upload: others

Post on 01-Feb-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

1

第3章

入門編

第3章 Lingo入門編

3.1スクリプトの種類と使い方

3.2ビヘイビアライブラリを極める

3.3カスタムビヘイビア解説

この章ではDirector 6.0に付属のビヘイビアライブラリに使

われているスクリプトと基本的なLingoコマンドを中心に説

明していきます。Lingoの基本をマスターして、Director

ムービーを自由自在にコントロールしてください。

Page 2: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

2

第3章

入門編

3.1 スクリプトの種類と使い方

ビヘイビアライブラリを使ったドラッグ&ドロップオーサリングによっ

て、Directorムービーをコントロールできることがわかりました。ここで

はビヘイビアライブラリに使われているLingoコマンドやスクリプトを書

く場所、基本的な用語について説明しますので、第2章の学習中にわから

なかったポイントを復習してください。

3.1.1Lingoについて

Lingoで使われるワード(単語)は以下のように分類されています。

・コマンド

・関数

・キーワード

・プロパティ

・定数

・演算子

これらのワードはLingoによって名前と役割が決められており、Lingoの文

法に沿ってスクリプトを書かなければなりません。また、あなたが使用す

る変数名やハンドラ名などには、Lingoが使うワードと同じ名前をつける

ことはできません。

●コマンド

Directorムービーに対して「何かを実行させるもの」をコマンドといいま

す。コマンドには「quit」や「pause」などのように単独で使用するもの

と、「go」や「set」などのように他のワードと組み合わせて使用するも

のがあります。

●関数

Lingoには平方根を返す「sqrt」や絶対値を返す「abs」などの数学的な関

数の他に、マウスの座標値を調べる「the mouseV」や「the mouseH」現在

のフレーム番号を調べる「the frame」ダブルクリックされたかどうかを調

べる「the doubleClick」などの関数があります。

●キーワード

スクリプト中で特定の意味を持つワードのことをキーワードといいます。

Page 3: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

3

第3章

入門編

ハンドラを定義するときに使う「on」や条件を判定する「if」、繰り返し

を設定する「repeat」やグローバル変数を使用するときの「global」などが

よく使われます。

●プロパティ

Directorムービーやキャストメンバー、スプライトなどに設定されている

様々な属性のことをプロパティといいます。プロパティにはキャストメン

バープロパティやスプライトプロパティといったDirector自身が持ってい

るプロパティのほかに、ビヘイビアを使ってユーザーがスプライトオブ

ジェクトに設定するタイプのプロパティがあります。Lingoを使うと既に

設定してある属性を調べたり、変更したりすることができます。たとえば

テキストキャストのプロパティを変更することでフォントやサイズ、スタ

イルといったテキストに関する設定をLingoで変更することができます。

●定数

Lingoが使用する名前のつけられた値のことです。定められた数値という

ことなので定数の値は変更することはできません。定数には文字列内で改

行するための「RETURN」や引用符「"」を文字列に付加させるための

「QUOTE」などがあります。また、論理定数として論理的に正しいとき

に1を返す「TRUE」と正しくないときに0を返す「FALSE」があります。

●演算子

演算子には論理的な演算を行う論理演算子、比較を行う比較演算子、テキ

スト演算を行うテキスト演算子、そして数値演算を行う算術演算子があり

ます。あまり聞き慣れない言葉なので簡単に説明してみましょう。

・論理演算子

論理演算子は2つの論理式の結果を計算して、結果が正しければ

「TRUE」間違っていれば「FALSE」を返します。論理演算子には

「and」「or」「not」があり、検索の条件設定などで使用します。

and→2つの論理式の論理積を計算して、論理式が2つとも正しい

ときだけ「TRUE」を返します。

or→2つの論理式の論理和を計算して、論理式が2つとも間違って

いるときだけ「FALSE」を返します。

not→論理否定を計算して、論理式が正しいときは「FALSE」を返

し、論理式が間違っているときに「TRUE」を返します。

Page 4: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

4

第3章

入門編

図3.01論理演算

・比較演算子

どちらの値が大きいかを比べるときに使うのが比較演算子です。比較演算

子は2つの式を比較して、結果が正しければ「TRUE」正しくなければ

「FALSE」を返します。比較演算子は整数や浮動小数点数の他に文字列

の比較をすることができます。

AはBより小さいときは「A > B」

AはBより大きいときは「A < B」

AはBと等しいときは「A = B」

AとBは等しくないときは「A <> B」

AはB以上であるときは「A >= B」

AはB以下であるときは「A <= B」

図3.02比較演算

・テキスト演算子

文字列と文字列をつなぐときに使うのがテキスト演算子です。文字列を返

す関数と変数の値をつないでテキストフィールドへ書き出すときなどに使

います。

「&」→文字列と文字列の間をあけずにつなぎます。

「&&」→文字列と文字列の間にスペースを1文字入れてつなぎま

す。

Page 5: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

5

第3章

入門編

図3.04算術演算

図3.03テキスト演算

・算術演算子

変数や数値の値を計算するときに使うのが算術演算子です。算術演算子は

通常の数値計算を行うときに使われ、整数または浮動小数点数の計算に使

われます。かけ算とわり算の記号が通常の数式と違いますが、コンピュー

タではこれらの記号が使われます。また、()を使って計算の優先度を決

めることもできます。

+→足し算をするときは「+」を使います。

-→引き算をするときは「-」を使います。

*→かけ算をするときは「*」を使います。

/→わり算をするときは「/」を使います。

Page 6: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

6

第3章

入門編

3.1.2スクリプトを配置する場所

Directorは「フレームの移動」や「マウスボタンのクリック」といったイ

ベントによって、Lingoにメッセージを送ります。そして、これらのメッ

セージに反応する「on exitFreame」や「on mouseDown」といったイベン

トハンドラに記述されたステートメントが必要に応じて実行され、インタ

ラクティブな操作が加えられていきます。基本的なメッセージは「初期イ

ベントハンドラ」-「スプライトスクリプト(ビヘイビア)」-「キャスト

メンバースクリプト」-「フレームスクリプト(ビヘイビア)」-「ムー

ビースクリプト」の順に伝えられて行き、メッセージが受け取られた時点

でメッセージの伝達を停止します。

図3.05メッセージの伝達

イベントによって発生するメッセージはいろいろなスクリプトで受け取る

ことができますが、基本的には次のように分類することができます。

・スプライトに対するイベント(マウス操作)によってスクリプ

トを実行するための「スプライトスクリプト」

・再生ヘッドが移動したときのイベントによってスクリプトを実

行するための「フレームクリプト」

・テキストキャストやビットマップキャストなど、オブジェクト

に対するイベントによってスクリプトを実行するための「キャス

トメンバースクリプト」

・ムービー全体に関係する命令を実行するための「ムービースク

リプト」

それでは、それぞれの違いについて見てみましょう。

Page 7: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

7

第3章

入門編

図3.06スコアスクリプト

スコアには2種類のスクリプトを設定することができます。1つ目は再生

ヘッドが移動するときなどにスクリプトを実行する「フレームスクリプ

ト」で、スコアのスクリプトチャンネルに設定します。2つ目はフレーム

内のスプライトがクリックされたときなどにスクリプトを実行する「スプ

ライトスクリプト」で、キャストメンバーを配置するスプライトチャンネ

ルに設定します。スコアに設定するスクリプトのことをビヘイビアとい

い、「フレームスクリプト」には1つのビヘイビアしか登録できません

が、「スプライトスクリプト」には複数のビヘイビアを登録することがで

きます。

スクリプトメニューから新しいスコアス

クリプトを作成できる

スクリプトチャンネル

のセルをダブルクリッ

クして、新しいスコア

スクリプトを作成でき

タイトルバーに「スコアスクリプト」と

表示される

フレームスクリプトには「on exitFrame」

ス プ ラ イ ト ス ク リ プ ト に は 「 o n

exitFrame」ハンドラがセットされます

■スコアスクリプト(ビヘイビア)

再生ヘッドの移動やマウス操作に対して発生するメッセージを受けて実行

するスクリプトはスコアスクリプトとして使用します。新しいスコアスク

リプトを作成するには「ビヘイビアインスペクタ」のビヘイビアポップ

アップから「新規ビヘイビア...」を選んでください。また、スコアウイン

ドウにあるスクリプトチャンネルのセルをダブルクリックするとスクリプ

トウインドウが開き、ビヘイビアインスペクタを使わずにスクリプトを作

成することもできます。

Page 8: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

8

第3章

入門編

図3.07スコアウインドウ

●フレームスクリプトの設定

スクリプトチャンネルをダブルクリックすると、再生ヘッドが現在のフ

レームの再生を終えて次のフレームに進む前に送られるメッセージを受け

てスクリプトを実行する「on exitFrame」ハンドラが設定されたスクリプ

トキャスト(ビヘイビア)が作成されます。スクリプトウインドウのク

ローズボックスをクリックするかenterキーを押すとスクリプトウインドウ

が閉じ、入力したスクリプトがスクリプトチャンネルにセットされます。

また「on enterFrame」ハンドラを使って、再生ヘッドが新しいフレームの

再生を始めるときに送られるメッセージを受けてスクリプトを実行するこ

ともできます。

●スプライトスクリプトの設定

スプライトツールバーやスプライトインスペクタにあるスクリプトポップ

アップから「新規スクリプト」を選ぶと、スプライト上でマウスボタンが

離されたときに送られるメッセージを受けてスクリプトを実行する「on

mouseUp」ハンドラが設定されたスクリプトキャスト(ビヘイビア)が作

成されます。スプライトスクリプトが設定されたフレームのキャストメン

バーに対してキャストメンバースクリプトが設定されている場合は、スプ

ライトスクリプトを優先して実行するのでキャストメンバースクリプトを

一時的にキャンセルすることができます。また「on mouseDown」ハンド

ラを使って、スプライト上でマウスボタンが押されたときに送られるメッ

セージを受けてスクリプトを実行することもできます。

スクリプトチャンネル

スプライトチャンネル

Page 9: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

9

第3章

入門編

図3.08キャストメンバースクリプト

キャストメンバースクリプトは各々のキャストメンバーにスクリプトを設

定することができるので、キャストメンバー専用のスクリプトを設定する

ときに使用します。逆に、複数のスプライトに対して同じスクリプトを実

行させるときはスプライトスクリプトを使ったほうが便利です。また、

キャストメンバースクリプトに「on mouseUp」ハンドラが設定されてい

ても、スプライトスクリプトに「on mouseUp」ハンドラが設定されてい

る場合は、スプライトスクリプトが先に「mouseUp」メッセージを受け取

り、キャストメンバースクリプトには「mouseUp」メッセージを伝えませ

ん。この場合、キャストメンバースクリプトは無視されます。

タイトルバーに「スコアスクリ

プト」と表示される

キャストメンバースクリプトには

「on mouseUp」ハンドラがセット

されます

スクリプトボタン

■キャストメンバースクリプト

ビットマップやテキストなどのキャストメンバーに対して専用のスクリプ

トを設定するときはキャストメンバースクリプトを使用します。キャスト

メンバースクリプトを入力するにはキャストウインドウやペイントウイン

ドウのツールバーにある「スクリプト」ボタンをクリックしてください。

キャストメンバースクリプトの作成時は、スクリプトウインドウのタイト

ルバーに「キャストメンバースクリプト」と表示され、キャストメンバー

上でマウスボタンが離されたときに送られるメッセージを受けてスクリプ

トを実行する「on mouseUp」ハンドラが設定されたスクリプトが作成さ

れます。また「on mouseDown」ハンドラを使って、スプライト上でマウ

スボタンが押されたときに送られるメッセージを受けてスクリプトを実行

することもできます。

Page 10: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

10

第3章

入門編

■ムービースクリプト

スコアスクリプト(ビヘイビア)やキャストメンバースクリプトから呼び

出されるユーザー定義ハンドラや「on startMovie」や「on stopMovie」な

どのムービーハンドラを設定するときはムービースクリプトを使用しま

す。ムービースクリプトを作成するにはキャストメンバーが登録されてい

ないセルを選び、ウインドウメニューから「スクリプト」を選ぶか、ツー

ルバーのスクリプトボタンをクリックしてください。(Mac : command +

0 / Win : control + 0)

ムービースクリプトの作成時は、スクリプトウインドウのタイトルバーに

「ムービースクリプト」と表示されます。また、ムービースクリプトには

ムービーハンドラやユーザー定義ハンドラをユーザー自身が設定するた

め、スクリプトウインドウの中は空白になっています。

図3.09ムービースクリプト

スクリプトボタン

タイトルバーに「ムービースク

リプト」と表示される

ムービースクリプトにはハンド

ラはセットされません

Page 11: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

11

第3章

入門編

NOTE始め→ムービースクリプト用のイベントハンドラDirectorはムービーの再生状態によって自動的にメッセージを送る機能を持っており、これらのメッセージを受け取るイベントハンドラを使うことでユーザー操作がないときの処理を自動化することが可能です。以下のハンドラはムービースクリプトで使用して下さい。

●on prepareMovie

Directorムービーの再生開始時に生じるprepareMovieイベントによって発生するメッセージに対応するハンドラです。このハンドラはフレームの再生開始前に実行されるので、グローバル変数の初期化やモニターの色深度の変更など、ムービーの初期化に必要なスクリプトを実行するのに適しています。

●on startMovie

Directorムービーの再生開始後、最初のフレームの再生を開始する前に生じるstartMovieイベントによって発生するメッセージに対応するハンドラです。このハンドラはprepareMovieハンドラと似ていますが、最初のフレーム再生時に発生するbiginSpriteイベントとprepareFrameイベントの後で実行されます。

●on stopMovie

Directorムービーの再生を停止したときや別のムービーへジャンプする前に生じるstopMovieイベントによって発生するメッセージに対応するハンドラです。このハンドラはprepareMovieハンドラやstartMovieハンドラで変更した設定を元に戻したり、パッペトスプライトの解除やオブジェクトの削除を実行するのに適しています。

●on idle

Directorムービーがフレーム再生中に何も実行することがないときに生じるidleイベントによって発生するメッセージに対応するハンドラです。具体的にはenterFrameイベントの後、exitFrameイベントが生じるまでの間にマウスボタンのクリックやスプライトのロールオーバーなどがないときにidleイベントが発生します。このハンドラはメモリの使用状況をチェックするのに適しています。

●on timeOut

ユーザーが最後にマウスクリックやキー入力をしてから一定時間何もしていないときに生じるtimeOutイベントによって発生するメッセージに対応する ハ ン ド ラ で す 。 t i m e O u t イ ベ ン ト が 発 生 す る タ イ ミ ン グ は t h etimeoutLengthプロパティで設定することができ、デフォルトは3分(10,800チック)に設定されています。このハンドラはメニュー画面やユーザーの入力待ち画面で操作を促したり自動再生のコントロールを行うのに適しています。また、スコアスクリプトでもムービースクリプトでも使えるハンドラには・キーが押されたときのイベントに反応する「on keyDown」「on keyUp」ハンドラ・マウスボタンが押されたときのイベントに反応する「on mouseDown」「on mouseUp」ハンドラ・再生ヘッドが移動するときのイベントに反応する「on enterFrame」「onexitFrame」ハンドラなどがあります。→NOTE終わり

Page 12: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

12

第3章

入門編

3.1.3スクリプト作成上の注意点

ここではスクリプトを記述していく上での約束事や用語を簡単にまとめて

みました。もう一度確認して下さい。

●ステートメント

ステートメントはLingoが実行できる命令のことで、Lingoのコマンドを

Lingoの定めた文法に沿って書いたもので、「メッセージウインドウ」か

ら実行できます。

●スクリプト

1つ、あるいは複数のステートメント集合したものです。

●ワードの最小単位

Lingoのワードを組み合わせてステートメントを構成していきますが、

ワードとワードの間には1つ以上の「スペース」または「タブ」が必要で

す。ワードとワードや、ワードと式の間に入るスペースは1つでも2つで

も問題ありませんのでスクリプトが見やすいように調整することもできま

す。ただし日本語のスペースは2バイトなので使わないように注意して下

さい。

下の2つのステートメントは同じ意味です。

put "DIRECTOR" into myBook

put "DIRECTOR" into myBook

●大文字と小文字

Lingoはアルファベットの大文字と小文字を区別しないのでLingoのワード

や変数名に対して自由に文字を使用することができますが、一定のルール

に従って記述する方がみやすいスクリプトになります。

下の3つのステートメントは同じ意味です。

put "DIRECTOR" into myBook

Put "DIRECTOR" Into MyBook

PUT "DIRECTOR" INTO MYBOOK

Page 13: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

13

第3章

入門編

●ハンドラ

ハンドラとはスクリプトの記録されたファイルのようなもので、ハンドラ

の開始を表す「on」キーワードの後にハンドラ名を記述し「end」キー

ワードまでの間に書かれたスクリプトを実行します。Lingoではイベント

が発生するとそのイベントに対応するハンドラが呼び出され、スクリプト

を実行します。イベントに対応するハンドラとはムービーの状態によって

イベントを発生させるムービーハンドラやマウスのクリックによってイベ

ントを発生させるイベントハンドラのことです。そしてユーザー定義ハン

ドラはムービーハンドラやイベントハンドラの中から呼び出されます。

●インデント

Lingoのスクリプトエディターには自動インデント機能がついており、ス

クリプトを読みやすくしてくれますが、このインデントを変更してもスク

リプトは問題なく動作します。ただし、これについても一定のルールに

従って記述する方が分かりやすいスクリプトになります。

図3.10インデントされないスクリプト

図3.11インデントされたスクリプト

Page 14: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

14

第3章

入門編

●コメント

Lingoはスクリプトにコメントを設定することができます。ステートメン

ト内にダブルハイフン「--」を見つけるとそれ以降のワードをコメントと

みなして次の行へ移ります。コメントを入れておくと後になってスクリプ

トを修正するときに役立ちます。

図3.12コメント

●ステートメントの改行

1つのステートメントが長くなりすぎてスクリプトウインドウ内で見にく

くなった場合は、Macintoshではoption + return、Windowsではalt + returnで

“ツ”を入力して下さい。このキャラクタを使うとスクリプトウインドウ

内では改行されて見えますが、実際のステートメントは1行として実行さ

れます。

英語フォントの場合

図3.13改行されたスクリプト

●変数名やハンドラ名の付け方

アルファベットと数字を使って変数やハンドラの意味が分かるような名前

を付けておくと、修正作業が楽になります。最初の1文字は必ずアルファ

ベットを使って下さい。あまり長すぎてもミスタイプしやすくなります

し、極端に省略してしまうと名前の意味が分からなくなってしまいます。

特にグループでオーサリングを行うときは、変数名やハンドラにコメント

をつけるようにしましょう。

日本語フォントの場合

Page 15: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

15

第3章

入門編

3.1.4Lingoの基本コマンド

ここでは使用頻度が高いLingoの基本コマンドの書式や使用例を説明して

いきます。また、Directorムービーのアイコンがついているスクリプトには

サンプルムービーが添付されていますので、ムービーを再生して動作を確

かめることができます。

■go [コマンド]

書式

go to frame "ラベル名" または「フレーム番号」

go to movie "ファイル名"

go to frame "ラベル名" of movie "ファイル名"

ラベル名およびファイル名は引用符「"」で囲んで下さい。

「to」および「frame」は省略できますが、省略する場合には何を省略す

るかを決めて書式を統一させた方が読みやすいスクリプトになります。ま

た、ファイルの拡張子「.dir」や「.dxr」を省略することもできます。

解説

Directorムービーを作るときに最も使用頻度が高いコマンドです。再生

ヘッドを現在のフレームから他のフレームや他のムービーにジャンプさせ

る時に使用します。ジャンプ先のフレームはムービーの「フレーム番号」

かフレームマーカーの「ラベル名」を使って指定します。しかし、ムー

ビーの作成中にフレームを挿入したり削除したりすると画面に対するフ

レーム番号も変わってしまうので、その都度スクリプトのフレーム番号を

変更しなければなりません。通常はスクリプト上でもどの画面にジャンプ

するのか分かるようにラベル名を使う方がよいでしょう。

使用例

1.ボタンをクリックして他のフレームにジャンプするスクリプト

⇒このスクリプトはスプライトスクリプトまたはキャストメンバースクリ

プトで使用します。

on mouseUp

go to frame "MainMENU"

end

ステートメントを以下のように省略することができます。

Page 16: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

16

第3章

入門編

go to "MainMENU"

go "MainMENU"

2.指定フレームの再生を終えると他のムービーの1フレーム目にジャンプ

させるスクリプト

⇒このスクリプトはフレームスクリプトで使用します。

on exitFrame

go to movie "ex2"

end

ステートメントを以下のように省略することができます。

go movie "ex2"

3.ボタンをクリックして他のムービーの指定フレームにジャンプするスク

リプト

⇒このスクリプトはスプライトスクリプトまたはキャストメンバースクリ

プトで使用します。

on mouseUp

go to frame "subMENU" of movie "ex2"

end

ステートメントを以下のように省略することができます。

go to "subMENU" of movie "ex2"

go "subMENU" of movie "ex2"

ほかのムービーへジャンプさせる場合に「of movie」は省略できません。

NOTE始め→他のムービーにジャンプする場合は必ずジャンプ先のムービーファイルを現在のムービーと同じフォルダにおいて下さい。同じフォルダ内に指定したムービーファイルが見つからないときにはファイル読み込みのダイアログボックスが表示され、ファイルを指定するようDirectorが要求します。ムービーファイルを別のフォルダに置く場合はファイル名をフルパス名で指定(絶対指定)するか現在のファイルを基準にしてパス名を指定(相対指定)しなければなりません。あなたのハードディスクにあるムービーから付属のCD-ROMに入っている「Bass in Florida」へジャンプするには、ボリューム名やフォルダ名、ファイル名をMacintoshは「:」Windowsは「¥」で区切って以下のように指定して下さい。

Macintosh→go to movie "MultiMediaStudio:Movie:Movie1"

Windows→go to movie "[Drive]¥Movie¥Movie1"拡張子「.dir」は省略可能です。また、[Drive]には「D:」など、あなたのCD-ROMドライブのドライブ番号を使ってください。ただし、CD-ROMにジャンプしても戻ってこれません。

Page 17: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

17

第3章

入門編

図3.14フォルダ間の移動

→NOTE終わり

使用例

相対指定を使ってムービーをジャンプさせるスクリプト

このスクリプトを使用したサンプルムービー「Go.dir」は本書に付属のCD-ROM「MultiMediaStudio」の「Sample」フォルダに収録されています。

サンプルムービー

同じディスク内であれば、別のフォルダにあるムービーへジャンプするときにMacintoshとWindowsの「ファイルセパレータ」を気にする必要はありません。自分の位置を表す「@」と「:」を使ってどこへでもジャンプできます。⇒このスクリプトはスプライトスクリプトまたはキャストメンバースクリプトで使用します。

「メニュー」ボタン

on mouseUp

go to movie "@:Menu"

end

「Bass in Florida」ボタン

on mouseUp

go to movie "@::Movie:Movie1"

end

Page 18: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

18

第3章

入門編

■marker [関数]

書式

marker(整数式)

解説

「marker」関数は現在のフレームを基準にマーカーが設定されているフ

レームのフレーム番号を返す関数です。次のフレームマーカーにジャンプ

するときに、「ラベル名」を使うとジャンプ先のマーカーが変わるごとに

スクリプトを書き換えなければなりませんので「marker」関数と「go」コ

マンドを組み合わせて使用します。

使用例

「marker」関数を使ってフレームをジャンプさせるスクリプト

このスクリプトを使用したサンプルムービー「Marker.dir」は本書に付属の

CD-ROM「MultiMediaStudio」の「Sample」フォルダに収録されています。

サンプルムービー⇒このスクリプトはキャストスクリプトかスコアスクリプトのスプライト

チャンネルで使用します。スコアウインドウを見ながら再生ヘッドの動き

を確認して下さい。

marker(1)

次のフレームマーカーへジャンプします。

on mouseUp

go to marker (1)

end

marker(0)

現在のフレームにフレームマーカーがある場合は現在のフレームにジャン

プします。現在のフレームにフレームマーカーがない場合は現在のフレー

ムの前にあるフレームマーカーへジャンプします。

on mouseUp

go to marker (0)

end

marker(-1)

現在のフレームにフレームマーカーがある場合は現在のフレームの1つ前

にあるフレームマーカーへジャンプします。また、現在のフレームにフ

レームマーカーがない場合は現在のフレームの2つ前にあるフレームマー

Page 19: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

19

第3章

入門編

カーへジャンプします。

on mouseUp

go to marker (-1)

end

■the frame [関数]

書式

the frame

解説

「the frame」関数は現在のフレーム番号を返す関数です。フレームループ

を使って、表示している画面を常に書き換える必要がある時や、現在のフ

レームに対して一定のフレーム数ジャンプするときに「go」コマンドと組

み合わせて使用します。

使用例

フレームループ

go to the frame

現在のフレームから20フレーム先へジャンプ

go to the frame + 20

ステートメントを以下のように省略することができます。

go the frame

go the frame + 20

■next、loop、previous [キーワード]

書式

next

loop

previous

解説

この3つのキーワードは「marker」関数と同じ働きをします。「marker」

関数では移動するフレームマーカー数を整数式で指定することができます

が、これらのキーワードを使ったジャンプ先は固定されています。

Page 20: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

20

第3章

入門編

使用例

go next ( = go to marker (1))

go loop (= go to marker (0))

go previous (= go to marker (-1))

■play [コマンド]

書式

play frame "ラベル名" または「フレーム番号」

play movie "ファイル名"

play frame "ラベル名" of movie "ファイル名"

「to」および「frame」は省略することができます。省略する場合には何

を省略するかを決めて書式を統一させた方が読みやすいスクリプトになり

ます。また、ファイルの拡張子「.dir」や「.dxr」を省略することもできま

す。

解説

「go」コマンドと同様に再生ヘッドを現在のフレームから他のフレームや

他のムービーにジャンプするときに使用します。ジャンプ先のフレームは

ムービーのフレーム番号かフレームマーカーのラベル名を使って指定しま

す。しかし、ムービーの作成中にフレームを挿入したり削除したりすると

画面に対するフレーム番号も変わってしまうので、その都度スクリプトの

フレーム番号を変更しなければなりません。通常はスクリプト上でもどの

画面にジャンプするのか分かるようにラベル名を使う方がよいでしょう。

使用例

1.ボタンをクリックして他のフレームにジャンプするスクリプト

⇒このスクリプトはスプライトスクリプトまたはキャストメンバースクリ

プトで使用します。

on mouseUp

play frame "MainMENU"

end

ステートメントを以下のように省略することができます。

play "MainMENU"

2.指定フレームの再生を終えると他のムービーの1フレーム目にジャンプ

させるスクリプト

Page 21: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

21

第3章

入門編

⇒このスクリプトはフレームスクリプトで使用します。

on exitFrame

play movie "ex2"

end

3.ボタンをクリックして他のムービーの指定フレームにジャンプするスク

リプト

⇒このスクリプトはスプライトスクリプトまたはキャストメンバースクリ

プトで使用します。

on mouseUp

play frame "subMENU" of movie "ex2"

end

ステートメントを以下のように省略することができます。

play "subMENU" of movie "ex2"

NOTE始め→「go」コマンドと「play」コマンドの違いはジャンプしたあとの処理です。ここでは他のムービーへジャンプした場合について説明します。「go」コマンドでは指定したムービーへジャンプしたあとは行ったきりになってしまい、ジャンプ先のムービーを最終フレームまで再生するとムービーが止まってしまいます。ジャンプ先の再生を終えてジャンプ元のムービーに戻るときには「go」コマンドでジャンプ元のファイル名とフレームマーカーのラベル名を指定するか“play done”コマンドを使用する必要があります。これに対し「play」コマンドはジャンプ元のファイル名とフレーム番号を覚えているため指定したムービーへジャンプして、ジャンプ先のムービーの最終フレームまで再生し終わると直ちにジャンプ元のムービーに戻ってきます。スコアウインドウのスクリプトチャンネルで「play」コマンドを使った場合はその次のフレームへ戻り、それ以外の場所で「play」コマンドが使われた場合は同じフレームへ戻ってきます。→NOTE終わり

■play done [コマンド]

書式

play done

解説

現在再生中のムービーが「go」コマンドまたは「play」コマンドによって

開始された場合に再生を終了させてジャンプ元のムービーに戻ります。ス

コアウインドウのスクリプトチャンネルで「play」コマンドを使った場合

はその次のフレームへ戻り、それ以外の場所で「play」コマンドが使われ

た場合は同じフレームへ戻ってきます。「go」コマンドを使用してジャン

Page 22: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

22

第3章

入門編

プした場合は「go」コマンドを使ったフレームの直前にあるフレームマー

カーに戻ります。そのため通常は「play」コマンドでジャンプさせたムー

ビーをジャンプ元へ戻すときに使います。

使用例

ボタンをクリックするとジャンプ元のムービーへ戻るスクリプト

⇒このスクリプトはスプライトスクリプトまたはキャストメンバースクリ

プトで使用します。

on mouseUp

play done

end

■pause [コマンド]

書式

pause

解説

ビデオデッキなどのポーズボタンと同じ働きををするコマンドです。

「pause」コマンドが実行されると再生ヘッドは停止し、「pause」コマン

ドを使用したフレームの画面表示を続けます。ポーズを解除し再生ヘッド

を次のフレームへ進めるには「continue」コマンドを、他のフレームへ

ジャンプするには「go」または「play」コマンドをフレームスクリプトや

キャストメンバースクリプトから実行します。

使用例

ポーズを開始してから10秒たったら自動的に次のフレームへ進むスクリ

プト

⇒このスクリプトはフレームスクリプトで使用します。

on enterFrame

startTimer

repeat while the timer < (60*10)

pause

end repeat

continue

end

Page 23: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

23

第3章

入門編

■continue [コマンド]

書式

continue

解説

「pause」コマンドによって停止していた再生ヘッドを次のフレームに進

めるコマンドです。

使用例

ボタンをクリックすると「pause」コマンドによるポーズを解除するスク

リプト

⇒このスクリプトはスプライトスクリプトまたはキャストメンバースクリ

プトで使用します。

on mouseUp

continue

end

■global [キーワード]

書式

global "変数名"

複数のグローバル変数を一度に宣言する場合は変数名の間を「,」で区

切って下さい。

global "変数名1","変数名2","変数名3"・・・

解説

スクリプトおよびハンドラ内でグローバル変数を使う前に使用します。変

数には一時的にデータを保持するときに使用する「ローカル変数」とムー

ビー再生中は継続してデータを保持し、他のスクリプトやハンドラからも

データを参照したり更新することができる「グローバル変数」がありま

す。ローカル変数を使用するときは特別の手続きは必要なく、スクリプト

およびハンドラ内で変数名を決めて使うことができますが、グローバル変

数の場合は「これから次の名前のものをグローバル変数として使用しま

す」と宣言しなくてはなりません。これをグローバル宣言と呼び、グロー

バル変数を使用するときは必ずグローバル宣言をしなければなりません。

グローバル宣言された変数名が初めて使用されたとき、その変数は何も

データを持っていません(初期化されています)、2回目以降に宣言され

Page 24: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

24

第3章

入門編

た時そのグローバル変数には前に代入されたデータが保持されており、そ

のデータを使用して何らかの処理を行うことができます。グローバル変数

として使っていた変数をスクリプトやハンドラハンドラ内でグローバル宣

言せずに使用すると、同じ変数名であってもローカル変数として処理され

ますので注意して下さい。変数にデータを代入する時には「put」または

「set」コマンドを使用します。また、ムービースクリプトでグローバル

変数を使う場合はハンドラ外でグローバル宣言しておくと、ムービースク

リプト内のすべてのハンドラでグローバル変数を参照することができま

す。

使用例

キャストをクリックした回数をカウントし、表示するスクリプト。

このスクリプトを使用したサンプルムービー「Global.dir」は本書に付属

のCD-ROM「MultiMediaStudio」の「Sample」フォルダに収録されていま

す。サンプルムービー

⇒このスクリプトはスプライトスクリプトまたはキャストメンバースクリ

プトで使用します。

on mouseUp

global vTextA

set vTextA = vTextA + 1

put vTextA into field "textA"

end

グローバル変数「vTextA」の値はムービー内のどこからでも使用するこ

とができます。

■if [キーワード]

書式

if [論理式] then【thenステートメント】else【elseステートメント】

end if

thenステートメント、elseステートメントは複数でもかまいません。

if [論理式] then【thenステートメント1】【thenステートメント2】【thenステートメント3】

Page 25: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

25

第3章

入門編

else【elseステートメント1】【elseステートメント2】【elseステートメント3】

end if

elseステートメントが必要無い場合は省略することができます。

if [論理式] then【thenステートメント1】【thenステートメント2】【thenステートメント3】

end if

thenステートメントが1つだけでelseステートメントが必要無い場合はend if

を省略することができます。

if [論理式] then 【thenステートメント】

thenステートメントは必要なく、elseステートメントだけが必要な場合

thenステートメントを省略することはできませんので“nothing”コマンド

を使用します。

if [論理式] thennothingelse【elseステートメント1】【elseステートメント2】

end if

一つ目のthenステートメントおよびelseステートメントはそれぞれ「hen」

「else」の後に続けて書くことができます。

解説

条件を設定し、その結果によって実行させる処理を分岐させるときに使用

します。設定した条件のことを論理式といい、その論理式を評価した結

果、設定した条件を満たしている場合「TRUE」を返し、満たしていない

場合「FALSE」を返します。結果が「TRUE」であれば「then」に続くス

テートメントを実行し、「FALSE」であれば「else」に続くステートメン

トを実行します。結果が「TRUE」のときに実行するステートメントを

「thenステートメント」、「FALSE」のときに実行するステートメントを

「elseステートメント」といいます。

Page 26: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

26

第3章

入門編

■case [キーワード]

書式

case [式] of

値1:【ステートメント】

値2:【ステートメント】

値3:【ステートメント】

end case

式と一致する値から複数のステートメントを実行できます。

case [式] of

値1:

【ステートメント1】

【ステートメント2】

【ステートメント3】

値2:

【ステートメント1】

【ステートメント2】

end case

式と一致する複数の値から同じステートメントを実行できます。

case [式] of

値1,値2,値3: 【ステートメント】

値4,値5

【ステートメント1】

【ステートメント2】

end case

式と一致する値がない場合に実行するステートメント設定できます。

case [式] of

値1:【ステートメント】

値2:【ステートメント】

otherwise【ステートメント】

end case

解説

「case ... of」は式の値に応じて分岐する場合に「if ... then」より効率良く

分岐することができるキーワードです。case文は式 と「of」以降の値を比

較していき、一致する値が見つかると「:」に続くステートメントを実行

します。実行するステートメントが1つしかない場合は、値とステートメ

Page 27: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

27

第3章

入門編

ントを同じ行に記述し、複数ある場合は「:」のあとで改行してからス

テートメントを記述してください。同じステートメントを実行する値が複

数ある場合は値を「,」で区切って記述します。式と一致する値がないと

きにだけ実行したいステートメントは「otherwise 」キーワードの後ろに

記述します。case文とif文を組み合わせることで、複雑な分岐処理も効率

よく行うことができます。

■put [コマンド」

書式

メッセージウインドウ内に表示する

put 【式】または【field "キャストメンバー名"】または【変数名】

式の結果を変数に代入する

put 【式】into 【変数名】

変数の内容をテキストフィールドにあるデータの後ろに追加する

put 【変数名】after 【field "キャストメンバー名"】

変数の内容をテキストフィールドにあるデータの前に追加する

put 【変数名】before 【field "キャストメンバー名"】

解説

スクリプトやハンドラ内で数値や文字列、式の結果などをテキストフィー

ルドや変数に代入するときに使用します。また「メッセージウインドウ」

で使用するとテキストフィールドや変数の値を「メッセージウインド

ウ」に表示することができます。式の結果をテキストフィールドや変数の

値と入れ替える時は「into」を、値の後ろに追加するときは「after」を、

値の前に追加する時は「before」を使います。

使用例

ステージ上に現在の時刻を表示するスクリプト

このスクリプトを使用したサンプルムービー「Put.dir」は本書に付属のCD-

ROM「MultiMediaStudio」の「Sample」フォルダに収録されています。

サンプルムービー ⇒このスクリプトはハンドラとしてムービースクリプトで使用します。

global vTime

on nowTime

put the time into vTime

put vTime into field "nowTime"

Page 28: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

28

第3章

入門編

updateStage

go to the frame

end

「nowTime」ハンドラで使用している「the time」はシステムクロックを

利用して現在の時刻を返す関数です。表示形式はコントロールパネルの設

定によって決定されます。

⇒このスクリプトはフレームスクリプトで使用します。

on exitFrame

nowTime

end

「put」コマンドは変数やテキストフィールドに対する文字列操作を行う

ときに使用します。

■set [コマンド」

書式

set the [プロパティ名] to 【式】または【値】

set the [プロパティ名] = 【式】または【値】

set [変数名] to 【式】または【値】

set [変数名] = 【式】または【値】

解説

スクリプトやハンドラ内で各種のプロパティ(属性)を設定、変更すると

きに使用するコマンドで、数値や文字列、式の結果などを変数に代入する

ことができます。一般的にはプロパティや数値の設定を行うときは

「set」コマンドを使用し、文字列を代入する時は「put」コマンドを使用

します。プロパティにはスプライトに関するものやテキストに関するも

の、メニューや時間に関するものがあります。たとえばテキストのフォン

トやサイズ、位置揃えなどはテキストに関するプロパティですので、「テ

キストウインドウ」で設定した書式をスクリプトによって変更することが

できます。

使用例

キャストをクリックするたびにテキストのサイズを変えるスクリプト

このスクリプトを使用したサンプルムービー「Set.dir」は本書に付属のCD-

ROM「MultiMediaStudio」の「Sample」フォルダに収録されています。

サンプルムービー

Page 29: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

29

第3章

入門編

⇒このスクリプトはハンドラとしてムービースクリプトで使用します。

global vSize, vText

on sizeUp

set vSize = random (5) * 12

put vSize & "ポイントです。" into vText

put vText into field "size"

set the fontSize of member "size" to vSize

end

「sizeUp」ハンドラで使用している「random()」は1から()内の数値ま

での整数をランダムに返す関数です。「random()」関数によってグローバ

ル変数「vSize」の値をランダムに変化させ、「fontSize」プロパティの値

を変えています。

⇒このスクリプトはスプライトスクリプトまたはキャストメンバースクリ

プトで使用します。

on mouseUp

sizeUp

end

■repeat while 「キーワード」

書式

repeat while [評価式]

【ステートメント】

end repeat

解説

評価式が「TRUE」になるまでステートメントを繰り返し実行します。

「repeat while」で始まり「end repeat」までの間を繰り返し、評価式には

「TRUE」を返す関数などを使います。繰り返し実行するステートメント

にif文を使うこともできます。

応用例

論理式の結果によって繰り返しを中止し「end repeat」以降のステートメ

ントにジャンプするときはステートメントにif文を使い「thenステートメ

ント」に「exit repeat」キーワードを使います。

repeat while 評価式

if 論理式 then exit repeat

end repeat

Page 30: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

30

第3章

入門編

⇒このスクリプトはスプライトスクリプトまたはキャストメンバースクリ

プトで使用します。

global vToday

on mouseDown

repeat while the stillDown

set vToday = the date

put "今日は" & vToday & "です。" into field "today"

end repeat

put EMPTY into field "today"

end

「mouseDown」ハンドラで使用している「the date」はシステムクロック

を利用して現在の日付を返す関数です。表示形式はコントロールパネルの

設定により決定されます。

■repeat with 「キーワード」

書式

repeat with [カウンタ変数] = [初期値] to [終了値]

【ステートメント】

end repeat

解説

カウンタとして使用する変数が設定した値になるまでステートメントを繰

り返し実行します。カウンタの値に初期値と終了値をあらかじめ設定して

おき「repeat with」で始まり「end repeat」までの間を1ずつ加算しながら

終了値になるまで繰り返します。カウンタ変数をステートメントで使った

り初期値や終了値にグローバル変数や引数を使うことで汎用性のあるハン

ドラにできます。

応用例

カウンタ変数が終了値になる前に繰り返しを中止し「end repeat」以降の

ステートメントにジャンプするときはステートメントにif文を使い「then

ステートメント」に「exit repeat」キーワードを使います。

使用例

キャスト上でマウスを押している間、今日の日付を表示するスクリプト

このスクリプトを使用したサンプルムービー「re_While.dir」は本書に付属の

CD-ROM「MultiMediaStudio」の「Sample」フォルダに収録されています。

サンプルムービー

Page 31: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

31

第3章

入門編

repeat with [カウンタ変数] = [初期値] to [終了値]

if 論理式 then exit repeat

end repeat

使用例

スプライト上でマウスをクリックするとキャストが大きくなるスクリプト

このスクリプトを使用したサンプルムービー「re_With.dir」は本書に付属の

CD-ROM「MultiMediaStudio」の「Sample」フォルダに収録されています。

サンプルムービー ⇒このスクリプトはハンドラとしてムービースクリプトで使用します。

on zoomCast

puppetSprite 5, TRUE

set the stretch of sprite 5 to TRUE

repeat with vWidth = 1 to 5

set the width of sprite 5 to 80 + vWidth * 10

set the height of sprite 5 to 80 + vWidth * 10

updateStage

end repeat

puppetSprite 5, FALSE

end

「zoomCast」ハンドラではスプライトをパペットにしてLingoからコント

ロールしています。パッペットについて詳しくは第4章で説明しますの

で、ここでは簡単に説明しておきます。

「puppetSprite」は指定したスプライトチャンネルをパッペットにするコ

マンドです。パペットにしたスプライトはそれ以降スコアで設定した属性

を無視して、スクリプトによってコントロールされます。

「the stretch of sprite」は指定したスプライトチャンネルで表示するビット

マップキャストを伸縮させるかどうかを決めるスプライトプロパティで

す。

「the width of sprite」は指定したスプライトチャンネルで表示されるキャ

ストメンバーの幅をピクセル数で設定します。

「the height of sprite」は指定したスプライトチャンネルで表示されるキャ

ストメンバーの高さをピクセル数で設定します。

「updateStage」は「ステージ」を再描画するコマンドです。Directorは再

生ヘッドが移動したときに「ステージ」を再描画しますが、再生ヘッドを

移動せずハンドラ内でアニメーションを行うときは「updateStage」コマン

ドを使って強制的に「ステージ」を再描画して下さい。

Page 32: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

32

第3章

入門編

■alert 「コマンド」

書式

alert 【メッセージ】

解説

システムビープを鳴らし、メッセージとOKボタンをダイアログボックス

に表示します。メッセージには文字列、変数、関数の戻り値、テキスト演

算子やキャラクタ定数などが使えます。

■beep 「コマンド」

書式

beep 整数式

整数式には変数や整数値を返す関数なども使えます。

解説

ビープ音を整数式で指定した回数だけ再生するコマンドです。ここで再生

するビープ音はコントロールパネルで選ばれたビープ音です。ビープ音を

1回だけ再生するときは整数式を省略することができます。

使用例

マウスをダブルクリックするとビープを鳴らすスクリプト

このスクリプトを使用したサンプルムービー「Beep.dir」は本書に付属のCD-

ROM「MultiMediaStudio」の「Sample」フォルダに収録されています。

サンプルムービー⇒このスクリプトはスプライトスクリプトまたはキャストメンバースクリ

プトで使用します。

on mouseUp

if the doubleClick then beep 1

end

■quit 「コマンド」

書式

quit

通常は「終了ボタン」などキャストメンバーの「mouseUp」ハンドラで使

用し、ボタンをクリックすると終了するように設定します。

Page 33: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

33

第3章

入門編

解説

アプリケーションを終了するコマンドです。このコマンドが使われるとそれ

以降のスクリプトは全て無視され、直ちにアプリケーションが終了します。

使用例

終了ボタンをクリックすると、終了メッセージを表示してYesならば終

了。Noならば前の画面に戻るスクリプト。

このスクリプトを使用したサンプルムービー「Quit.dir」は本書に付属のCD-

ROM「MultiMediaStudio」の「Sample」フォルダに収録されています。

サンプルムービー

⇒このスクリプトはスプライトスクリプトまたはキャストメンバースクリ

プトで使用します。

終了ボタンのスクリプト

on mouseDown

zoomCast

end

on mouseUp

play frame "end"

end

終了ボタンは「mouseDown」ハンドラで「zoomCast」ハンドラを呼び出

しています。ここではクリックすると縮むようにするため、「repeat

while」のサンプルスクリプトを利用してスプライトの幅と高さが繰り返

しで減らしていくようにしています。

Yesボタンのスクリプト

on mouseUp

quit

end

Noボタンのスクリプト

on mouseUp

play done

end

Page 34: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

34

第3章

入門編

3.2ビヘイビアライブラリを極める

ここではDirector 6.0に付属のビヘイビアライブラリに収録されているビヘ

イビアのスクリプト解説を行います。完成されたビヘイビアの作り方を参

考にして、オリジナルビヘイビアの作成に役立てましょう。

3.2.1ナビゲーション用ビヘイビア

■現在のフレームで待機 「go the frame」

フレームループを実行するための最もシンプルなビヘイビアで、パラメー

タ(プロパティ変数)はありません。Director 5.0で作成したスコアスクリ

プトに「on getBehaviorDescription」ハンドラを追加することで、ビヘイビ

アインスペクタに説明を表示できます。

スクリプトの解説

•on exitFrame

再生ヘッドが現在のフレームを抜け出すときに送られるメッセージに対応

するイベントハンドラです。

•go the frame

「the frame」関数を使って現在のフレーム番号を調べ、現在再生ヘッドが

あるフレームへジャンプさせるためのステートメントです。(go to the

frame の省略形)

•end

「exitFrame」ハンドラの終了を表すキーワードです。

•on getBehaviorDescription

ビヘイビアが選択されたときに送られるメッセージに対応するイベントハ

on exitFrame go the frameend

on getBehaviorDescription return ツ"インタラクティブ性を保ちながら現在のフレームに留まってループ再生します。スプライトまたはフレームスクリプトセルにドラッグして使用してください。" & RETURN & RETURN & ツ"[パラメータ]" & RETURN & "なし"end

Page 35: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

35

第3章

入門編

ンドラです。ビヘイビアインスペクタの説明ウインドウにビヘイビアの説

明を表示する場合は、このハンドラを使ってください。

•return " ... "

「return」コマンド以降にある文字列をビヘイビアインスペクタの説明ウ

インドウに表示します。

•end

「getBehaviorDescription」ハンドラの終了を表すキーワードです。

Lingo始め→returnコマンドreturnコマンドを使うとハンドラから値を返すユーザー定義関数として使用することができます。ユーザー定義関数から返される値を取り出すには、ハンドラ名に「()」をつけてください。また、returnコマンド実行後はハンドラを終了してしまうので、return以降に書かれたステートメントは無視されます。

使用例

ステージの上側と下側のどちらをカーソルがあるかを調べるユーザー定義

関数

on checkStage

set stageH = the height of the rect of the stage

if the mouseV < stageH / 2 then return TRUE

else if the mouseV > stageH / 2 then return FALSE

end

こ の ユ ー ザ ー 定 義 関 数 を 使 用 す る に は 、 ハ ン ド ラ 名 に ( ) を つ け て「checkStage()」としてください。カーソルがステージの上側にあれば

図3.15現在のフレームで待機

Page 36: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

36

第3章

入門編

TRUE(1)、ステージの下側にあればFALSE(0)が返ってきます。ムービースクリプトにcheckStageハンドラを作成してから、メッセージウインドウを使って試してみてください。

使用例

if checkStage() then go to frame "next"

→Lingo終わり

■フレームに移動 「go frame / play frame」

パラメータ(プロパティ変数)を使って移動先のフレーム番号を指定し、

4つのイベントに対応するナビゲーション用ビヘイビアです。「on

getPropertyDescriptionList」ハンドラを追加することで、ビヘイビアイン

スペクタからパラメータをセットすることができます。

property whichFrame, whichEvent, playmode

on initGotoFrame me init meend

on mouseUp me if whichEvent = #マウスボタンを放す then init meend

on enterFrame me if whichEvent = #フレームに入る then init meend

on exitFrame me if whichEvent = #フレームを抜け出す then init meend

on init me if the playmode of me = #再生後戻る then play frame (the whichframe of me) else go frame (the whichframe of me) end ifend

on getPropertyDescriptionList set p_list = [ ツ #WhichFrame: [ #comment: "移動先のフレーム:", ツ #format: #integer, ツ #default: 1 ], ツ

Page 37: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

37

第3章

入門編

#WhichEvent: [ #comment: "イベントの設定:", ツ #format: #symbol, ツ #range: [ #マウスボタンを放す, #フレームに入る, ツ

#フレームを抜け出す, #InitGotoFrame], ツ #default: #マウスボタンを放す ], ツ #playMode: [ #comment: "再生モード:", ツ #format: #symbol, ツ #range: [ #移動, #再生後戻る ], ツ #default: #移動 ] ツ ] return p_listend

on getBehaviorDescription return " ... "end

スクリプトの解説

•property whichFrame, whichEvent, playmode

このビヘイビアで「whichFrame」「 whichEvent」「playmode」をパラ

メータ(プロパティ変数)として使うことを定義します。

•on initGotoFrame me

カ ス タ ム イ ベ ン ト メ ッ セ ー ジ を 送 る 「 s e n d S p r i t e 」 コ マ ン ド や

「sendAllSprites」コマンドを使って、Lingoからこのビヘイビアを動作さ

せるためのユーザー定義ハンドラです。

•init me

initハンドラを実行し、パラメータにセットされたフレーム番号へ移動し

ます。

•on mouseUp me

if whichEvent = #マウスボタンを放す then init me

mouseUpメッセージを受け取ったときにwhichEventパラメータが「#マウ

スボタンを放す」であればinitハンドラを実行し、パラメータにセットさ

れたフレーム番号へ移動します。

•on enterFrame me

if whichEvent = #フレームに入る then init me

enterFrameメッセージを受け取ったときにwhichEventパラメータが「#フ

レームに入る」であればinitハンドラを実行し、パラメータにセットされ

たフレーム番号へ移動します。

この部分のスクリプトは省略してあります。

Page 38: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

38

第3章

入門編

•on exitFrame me

if whichEvent = #フレームを抜け出す then init me

exitFrameメッセージを受け取ったときにwhichEventパラメータが「#フ

レームを抜け出す」であればinitハンドラを実行し、パラメータにセット

されたフレーム番号へ移動します。

図3.16フレームに移動-1

•on init me

このビヘイビアが再生ヘッドを移動させるための実行部分(ステートメン

ト)を格納するユーザー定義ハンドラです。

•if the playmode of me = #再生後戻る then

play frame (the whichframe of me)

playmodeパラメータが「#再生後戻る」であれば、whichframeパラメータ

にセットされたフレーム番号へplayコマンドで移動します。

•else

go frame (the whichframe of me)

playmodeパラメータが「#再生後戻る」でなければ、whichframeパラメー

タにセットされたフレーム番号へgoコマンドで移動します。

•end if

playmodeパラメータを判定するif文の終了を表すキーワードです。

Page 39: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

39

第3章

入門編

図3.17フレームに移動-2

•on getPropertyDescriptionList

ビヘイビアインスペクタを操作したときに送られるメッセージに対応する

イベントハンドラです。ビヘイビアインスペクタのパラメータ設定ダイア

ログボックスを使ってパラメータを設定する場合は、このハンドラ内でプ

ロパティリストを作成してください。

•set p_list =

パラメータ設定ダイアログボックスで設定するプロパティをプロパティリ

ストとしてローカル変数「p_list」にセットします。1つのパラメータ

(プロパティ変数)に対して3つのプロパティ「#comment」「#format」

「#default」を設定します。

•#WhichFrame: [ #comment: "移動先のフレーム:", ツ

#format: #integer, ツ

#default: 1 ], ツ

#WhichFrameパラメータのプロパティを設定します。

#commentプロパティにはパラメータ設定ダイアログボックスに表示する

ラベル名を文字列で指定。(移動先のフレーム:)

#formatプロパティにはパラメータの属性(書式)をシンボルで指定。

(整数)

#integer #float #string #symbol #member #bitmap #filmloop #field

#palette #picture #sound #button #shape #movie #digitalvideo #script

#richtext #ole #transition #xtra #frame #marker #ink #boolean #cursor

#graphic

#defaultプロパティにはパラメータの初期値を指定。(1)

Page 40: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

40

第3章

入門編

•#WhichEvent: [ #comment: "イベントの設定:", ツ

#format: #symbol, ツ

#range:[#マウスボタンを放す, #フレームに入る, ツ

#フレームを抜け出す,#InitGotoFrame], ツ

#default: #マウスボタンを放す ], ツ

#WhichEvent:パラメータのプロパティを設定します。

#commentプロパティにはパラメータ設定ダイアログボックスに表示する

ラベル名を文字列で指定。(イベントの設定:)

#formatプロパティにはパラメータの属性(書式)をシンボルで指定。

(シンボル)

#rangeプロパティの値にリニアリストを指定すると、ポップアップメ

ニューを使ってパラメータの設定ができます。(#マウスボタンを放す, #

フレームに入る, #フレームを抜け出す, #InitGotoFrame)

#defaultプロパティにはパラメータの初期値を指定。(#マウスボタンを放

す)

図3.18パラメータ設定ダイアログボックス

•#playMode: [ #comment: "再生モード:", ツ

#format: #symbol, ツ

#range: [#移動, #再生後戻る ], ツ

#default: #移動 ] ツ

#playModeパラメータのプロパティを設定します。

#commentプロパティにはパラメータ設定ダイアログボックスに表示する

ラベル名を文字列で指定。(再生モード:)

#formatプロパティにはパラメータの属性(書式)をシンボルで指定。

(シンボル)

#rangeプロパティの値にリニアリストを指定すると、ポップアップメ

ニューを使ってパラメータの設定ができます。(#移動, #再生後戻る)

#defaultプロパティにはパラメータの初期値を指定。(#移動)

#rangeプロパティに設定したシン

ボル値がポップアップメニューに表

示される

Page 41: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

41

第3章

入門編

•return p_list

ローカル変数「p_list」にセットしたプロパティリストをスプライトオブ

ジェクトに返します。

•on getBehaviorDescription

return " ... "

ビヘイビアが選択されたときに送られるメッセージに対応するイベントハ

ンドラで、「return」コマンド以降にある文字列をビヘイビアインスペク

タの説明ウインドウに表示します。

図3.19フレームに移動-3

Lingo始め→meについてこれまで親スクリプトなどでしか使うことのなかった「me」ですが、ビヘイビアライブラリのスクリプトにはハンドラやステートメントに「me」がたくさん入っています。「me」は オブジェクトを参照するときのキーワードとして慣例的に使用されている単語であり、Lingoで定義されている用語ではありません。ちなみに、「me」を「you」に変えてもスクリプトは問題なく動作します。Director 6.0はスプライト自身をオブジェクトとしてあつかうので、Lingo(スコアスクリプト)からオブジェクト(スプライト)に設定されているスプライトプロパティを調べたり、変更するときに必要なキーワードだと思ってください。「me」を使ったスクリプティングで最初にお世話になるのは、スプライトチャンネルの番号を返す「thespriteNum」プロパティでしょう。「me」を使ってスプライトプロパティにアクセスするには、ハンドラ名の後に引数として「me」をつけてください。

Page 42: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

42

第3章

入門編

使用例

the spriteNum of me

スプライトが配置されているスプライトチャンネルの番号を返します。

the memberNum of sprite the spriteNum of me

スプライトが表示しているキャストメンバー番号を返します。

the loc of sprite the spriteNum of me

ステージ上のスプライトの表示位置を返します。

the scriptInstanceList of sprite the spriteNum of me

スプライトに配置されたビヘイビアのリストを返します。→Lingo終わり

■マーカーに移動 「go to marker() / play marker()」

パラメータを使って移動先のフレームマーカーを指定し、4つのイベント

に 対 応 す る ナ ビ ゲ ー シ ョ ン 用 ビ ヘ イ ビ ア で す 。 「 o n

getPropertyDescriptionList」ハンドラで#formatプロパティのパラメータ属

性に#markerを使うことにより、スコアに設定されたフレームマーカーの

リストが加えられることに注目してください。フレームマーカーのリスト

はパラメータ設定ダイアログボックスにポップアップメニューで表示され

ます。

property whichEvent, whichLabel,playmode

on initGotoMarker me init meend

on mouseUp me if whichEvent = #マウスボタンを放す then init meend

on enterFrame me if whichEvent = #フレームに入る then init meend

on exitFrame me if whichEvent = #フレームを抜け出す then init meend

Page 43: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

43

第3章

入門編

on init me -- ** if the playmode of me = #移動 then case ( whichLabel ) of: #Previous: go to marker( -1 ) #Loop: go to marker( 0 ) #Next: go to marker( 1 ) otherwise: go to whichLabel end case else case ( whichLabel ) of: #Previous: play marker( -1 ) #Loop: play marker( 0 ) #Next: play marker( 1 ) otherwise: play whichLabel end case end ifend

on getPropertyDescriptionList set p_list = [ ツ #WhichLabel: [ #comment: "移動先のマーカー:", ツ

#format: #marker, ツ#default: #Loop ], ツ

#WhichEvent: [ #comment: "イベントの指定:", ツ#format: #symbol, ツ#range: [ #マウスボタンを放す, #フレームに

入る, #フレームを抜け出す, #InitGotoMarker], ツ#default: #マウスボタンを放す ], ツ

#playMode: [ #comment: "再生モード:", ツ#format: #symbol, ツ#range: [ #移動, #再生後戻る ], ツ#default: #移動 ] ツ

] return p_listend

on getBehaviorDescription return " ... "end

この部分のスクリプトは省略してあります。

スクリプトの解説

•property whichEvent, whichLabel,playmode

このビヘイビアで「whichEvent」「whichLabel」「playmode」をパラメー

タとして使うことを定義します。

Page 44: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

44

第3章

入門編

•on initGotoMarker me

•on mouseUp me

•on enterFrame me

•on exitFrame me

それぞれのメッセージを受け取ったときに「on init」ハンドラを実行し、

パラメータにセットされたフレーム番号へ移動するためのイベントハンド

ラです。

図3.20マーカーに移動-1

•on init me

このビヘイビアが再生ヘッドを移動させるための実行部分(ステートメン

ト)を格納するユーザー定義ハンドラです。

•put whichLabel -- **

パラメータ「whichLabel」の値をメッセージウインドウに書き出していま

す。このステートメントは実際の動作に関係なく、スクリプトの動作

チェック(デバッグ)時のものが残っていると思われます。ムービーの再

生中にビヘイビアが持っているパラメータの値を確認するときは、

「put」コマンドを使ってメッセージウインドウかテキストフィールドに

表示するとよいでしょう。

•if the playmode of me = #移動 then

case ( whichLabel ) of:

playmodeパラメータが「#移動」であれば、whichLabelパラメータにセッ

トされた値を判定し、goコマンドで移動します。

Page 45: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

45

第3章

入門編

⇒the playmode of meはオブジェクトが持つプロパティを示すときの書式

で、パラメータの値を参照するときにも使用できます。ビヘイビアで使用

するパラメータのあつかいは変数と変わらないので「if playmode = #移動

then」とすることもできます。

•#Previous: go to marker( -1 )

whichframeパラメータが「#Previous」であれば、現在のフレームの1つ前

に設定されたマーカーへgoコマンドで移動します。

•#Loop: go to marker( 0 )

whichframeパラメータが「#Loop」であれば、現在のフレームの直前に設

定されたマーカーへgoコマンドで移動します。

•#Next: go to marker( 1 )

whichframeパラメータが「#Next」であれば、現在のフレームの次に設定

されたマーカーへgoコマンドで移動します。

•otherwise:

go to whichLabel

whichframeパラメータが「#Previous」「#Loop」「#Next」以外のとき

は、whichLabelパラメータに設定されたラベル名と同じフレームマーカー

へgoコマンドで移動します。

•end case

whichLabel パラメータを判定するcase文の終了を表すキーワードです。

•else

case ( whichLabel ) of:

playmodeパラメータが「#移動」でなければ、whichLabelパラメータに

セットされた値を判定し、playコマンドで移動します。

•#Previous: play marker( -1 )

whichframeパラメータが「#Previous」であれば、現在のフレームの1つ前

に設定されたマーカーへplayコマンドで移動します。

•#Loop: play marker( 0 )

whichframeパラメータが「#Loop」であれば、現在のフレームの直前に設

定されたマーカーへplayコマンドで移動します。

•#Next: play marker( 1 )

whichframeパラメータが「#Next」であれば、現在のフレームの次に設定

されたマーカーへplayコマンドで移動します。

Page 46: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

46

第3章

入門編

•otherwise:

play whichLabel

whichframeパラメータが「#Previous」「#Loop」「#Next」以外のとき

は、whichLabelパラメータに設定されたラベル名と同じフレームマーカー

へplayコマンドで移動します。

•end case

whichLabel パラメータを判定するcase文の終了を表すキーワードです。

•end if

playmodeパラメータを判定するif文の終了を表すキーワードです。

図3.21マーカーに移動-2

Page 47: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

47

第3章

入門編

•#WhichLabel : [#comment : "移動先のマーカー:", #format

: #marker, #default : #Loop]

#WhichLabelパラメータのプロパティを設定します。

#commentプロパティにはパラメータ設定ダイアログボックスに表示する

ラベル名を文字列で指定。(移動先のマーカー:)

#formatプロパティにはパラメータの属性(書式)をシンボルで指定。

(マーカー)

#defaultプロパティにはパラメータの初期値を指定。(#Loop)

⇒#formatプロパティのパラメータ属性に#markerを使うと、パラメータ設

定ダイアログボックスのポップアップメニューにスコア上に設定されたフ

レームマーカーとPrevious、Loop、Nextが表示されます。

⇒#WhichEventパラメータと#playModeパラメータの設定は「フレームに

移動」ビヘイビアと同じです。

図3.22パラメータ設定ダイアログボックス

このほかのナビゲーション用ビヘイビアには以下のものがあります。

■前のマーカーに移動 「go to marker (-1)」

■次のマーカーに移動 「go to marker (1)」

■ムービーに移動 「go to movie / play movie」

■ネット上のページに移動 「gotoNetPage」

■ウィンドウ内にムービーを開く 「open window」

■再生終了(再生ヘッドを元の位置に戻す) 「play done」

本書の解説を参考にしながら、スクリプトの構造をチェックしてくださ

い。

Page 48: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

48

第3章

入門編

3.2.2メッセージ送信用ビヘイビア

■スプライトに送る 「sendSprite」

パラメータを使ってメッセージを送るスプライトとメッセージを指定し、

6つのイベントに対応するメッセージ送信用ビヘイビアです。「on

mouseUp」などのイベントメッセージを受け取ったスプライトが他のスプ

ライトに登録されたハンドラを実行できるので、複雑なコントロールを簡

単に行うことができます。第2章で作成した「Movie1.dir」のメニュー画

面でガイドメッセージを表示するビヘイビア(msgのコントロール)にも

「sendSprite」コマンドが使われています。

Lingo始め→getPropertyDescriptionListビヘイビアライブラリではスプライトオブジェクトに返すためのプロパティリストを直接指定していますが、指定したプロパティと値をプロパティリストに加える「addProp」コマンドを使ってパラメータごとに加えることもできます。ビヘイビアがあつかうパラメータが多い場合は「addProp」コマンドを使ってgetPropertyDescriptionListを作成するほうがよいでしょう。パラメータの追加や変更が柔軟に行えます

使用例

プロパティリストの直接指定

on getPropertyDescriptionList

set p_list = [ ツ

#WhichLabel: [#comment: "移動先のマーカー:", ツ

#format: #marker, #default: #Loop ], ツ

#playMode: [#comment: "再生モード:", #format: #symbol, ツ

#range: [#移動, #再生後戻る],#default: #移動] ツ

]

return p_list

end

addPropコマンドを使った間接指定

on getPropertyDescriptionList

set p_list = [:]

addProp p_list #WhichLabel: [#comment: "移動先のマーカー:", ツ

#format: #marker, #default: #Loop ]

addProp p_list #playMode: [#comment: "再生モード:", ツ

#format: #symbol, #range: [#移動, #再生後戻る], #default: #移動 ]

return p_list

end

どちらのgetPropertyDescriptionListも同じプロパティリストを作成します。また、スプライトオブジェクトに返すためのプロパティリストの変数名は「p_list」以外の名前をつけてもかまいません。→Lingo終わり

Page 49: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

49

第3章

入門編

property whichEvent, addressee, eventToSend, params

on initSendSprite meon mouseUp meon mouseDown meon prepareFrame meon enterFrame meon exitFrame me

on init me set doit = "sendSprite the Addressee of me, ツthe EventToSend of me," && params do doitend

on getPropertyDescriptionList set p_list = [ ツ #EventToSend: [ #comment: "メッセージ:", ツ

#format: #symbol, ツ#default: #ここにメッセージを指定 ], ツ

#Params: [ #comment: "引数1, 引数2, ...", ツ#format: #string, ツ#default: "" ], ツ

#Addressee: [ #comment: "対象スプライト:", ツ#format: #integer, ツ#default: 1 ], ツ

#WhichEvent: [ #comment: "イベントの指定:", ツ#format: #symbol, ツ

#range: [ #マウスボタンを放す, #マウスボタンを押す, ツ#フレームを準備, #フレームに入る, #フレームを抜け出す, ツ#InitSendSprite], ツ

#default: #マウスボタンを放す ] ツ ] return p_listend

on getBehaviorDescription return " ... "end

この部分のスクリプトは省略してあります。

始め→ここではイベントハンド

ラ部分のスクリプトを省略して

います。ビヘイビアライブラリ

のスクリプトを開いて確認して

ください。→終わり

この部分のスクリプトは省略してあります。

スクリプトの解説

•property whichEvent, addressee, eventToSend, params

このビヘイビアで「whichEvent」「addressee」「eventToSend」「params」

をパラメータとして使うことを定義します。

Page 50: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

50

第3章

入門編

図3.23スプライトに送る-1

•set doit = "sendSprite the Addressee of me, ツ

the EventToSend of me," && params

ローカル変数「doit」に文字列をセットする。

⇒Addresseeパラメータの値が「5」、EventToSendパラメータの値が

「#showMsg」、paramsパラメータの値が「""」(引数なし)の場合、

ローカル変数「doit」にセットされる文字列は「"sendSprite the Addressee

of me, the EventToSend of me, "」となります。

•do doit

doコマンドを使い、ローカル変数「doit」にセットされた文字列をステー

トメントとして実行します。

•on initSendSprite me

•on mouseUp me

•on mouseDown me

•on prepareFrame me

•on enterFrame me

•on exitFrame me

それぞれのメッセージを受け取ったときに「on init」ハンドラを実行し、

パラメータにセットされたスプライトへメッセージを送るためのイベント

ハンドラです。

Page 51: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

51

第3章

入門編

図3.24スプライトに送る-2

•on getPropertyDescriptionList

ビヘイビアインスペクタを操作したときに送られるメッセージに対応する

イベントハンドラです。ビヘイビアインスペクタのパラメータ設定ダイア

ログボックスを使ってパラメータを設定する場合は、このハンドラ内でプ

ロパティリストを作成してください。

•#EventToSend: [#comment: "メッセージ:", ツ

#format: #symbol, ツ

#default: #ここにメッセージを指定 ], ツ

#EventToSendパラメータのプロパティを設定します。

#commentプロパティにはパラメータ設定ダイアログボックスに表示する

ラベル名を文字列で指定。(メッセージ:)

#formatプロパティにはパラメータの属性(書式)をシンボルで指定。

(シンボル)

#defaultプロパティにはパラメータの初期値を指定。(#ここにメッセージ

を指定)

•#Params: [#comment: "引数1, 引数2, ...", ツ

#format: #string, ツ

#default: "" ], ツ

⇒Addresseeパラメータの値が「5」、EventToSendパラメータの値が

「#showMsg」、paramsパラメータの値が「""」(引数なし)の場合、実

行されるステートメントは「sendSprite 5, #showMsg, 」となります。

⇒引数を持たないカスタムメッセージを送るとき、カスタムメッセージと

引数を分ける「,(カンマ)」がついていてもスクリプトエラーにはなり

ません。

Page 52: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

52

第3章

入門編

#Paramsパラメータのプロパティを設定します。

#commentプロパティにはパラメータ設定ダイアログボックスに表示する

ラベル名を文字列で指定。(引数1, 引数2, ...)

#formatプロパティにはパラメータの属性(書式)をシンボルで指定。

(文字列)

#defaultプロパティにはパラメータの初期値を指定。(空白)

•#Addressee: [#comment: "対象スプライト:", ツ

#format: #integer, ツ

#default: 1 ], ツ

#Addresseeパラメータのプロパティを設定します。

#commentプロパティにはパラメータ設定ダイアログボックスに表示する

ラベル名を文字列で指定。(対象スプライト:)

#formatプロパティにはパラメータの属性(書式)をシンボルで指定。

(整数)

#defaultプロパティにはパラメータの初期値を指定。(1)

•#WhichEvent: [ #comment: "イベントの指定:", ¬

#format: #symbol, ¬

#range: [ #マウスボタンを放す, #マウスボタンを押す, ¬

#フレームを準備, #フレームに入る, #フレームを抜け出す, ¬

#InitSendSprite], ¬

#default: #マウスボタンを放す ] ¬

#WhichEventパラメータのプロパティを設定します。

#commentプロパティにはパラメータ設定ダイアログボックスに表示する

ラベル名を文字列で指定。(イベントの指定:)

#formatプロパティにはパラメータの属性(書式)をシンボルで指定。

(シンボル)

#rangeプロパティの値にリニアリストを指定すると、ポップアップメ

ニューを使ってパラメータの設定ができます。(#マウスボタンを放す, #

マウスボタンを押す, #フレームを準備, #フレームに入る, #フレームを抜

け出す, #InitSendSprite)

#defaultプロパティにはパラメータの初期値を指定。(#マウスボタンを放

す)

Page 53: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

53

第3章

入門編

図3.25パラメータ設定ダイアログボックス

•return p_list

ローカル変数「p_list」にセットしたプロパティリストをスプライトオブ

ジェクトに返します。

•on getBehaviorDescription

return " ... "

ビヘイビアが選択されたときに送られるメッセージに対応するイベントハ

ンドラで、「return」コマンド以降にある文字列をビヘイビアインスペク

タの説明ウインドウに表示します。

Lingo始め→sendAllSpritesビヘイビア「すべてのスプライトに送る」はスコア上のすべてのスプライトに同一メッセージを送るsendAllSpritesコマンドを使ったビヘイビアです。このビヘイビアはメッセージを送るスプライトを指定する必要がないのでAddresseeパラメータを持ちませんが、基本的なスクリプトはビヘイビア「スプライトに送る」と同じです。本書の解説を参考にしながら、スクリプトの構造をチェックしてください。また、現在のフレームで必要なスプライトだけがメッセージに応えるハンドラ(ビヘイビア)を持っている場合は、1つスプライトにメッセージを送るときにもsendAllSpritesコマンドを使えます。

書式

sendAllSprites(メッセージ, 引数)

sendSprite(メッセージを送るスプライト番号, メッセージ, 引数)

解説

メッセージの部分にはメッセージを受け取るスプライトに登録されたハンドラ名に「#」をつけ、シンボルにしてください。引数の部分は省略可能です。メッセージと一緒に引数を渡すときは、メッセージを受け取るハンドラがオブジェクトを参照するため、ハンドラ名の後に必ずmeが必要になることに注意してください。また、「sendSprite(1, #mouseUp)」とすることで「on mouseUp」などのイベントハンドラに対してもメッセージを送り、ハンドラを実行することができます。→Lingo終わり

■ウィンドウ内ムービーに送る 「tell」

パラメータを使ってメッセージを送るウインドウとメッセージを指定し、

6つのイベントに対応するメッセージ送信用ビヘイビアです。tellコマン

Page 54: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

54

第3章

入門編

property windowName, commandName, parameters,whichEvent

on initMIAWMessage meon mouseUp meon mouseDown meon prepareFrame meon enterFrame meon exitFrame me

on init me if ( word 1 of parameters = "field" ) then set parameters = the text of field ( word 2 ofparameters ) else if ( word 1 of parameters = "sprite" ) then set parameters = field the castNum of sprite (word 2 of parameters ) end if if not (parameters = EMPTY) then set argv = "(" &parameters &")" tell window ( the windowName of me ) to do ( thecommandName of me ) && argvend

on getPropertyDescriptionList set p_list = [ ツ #commandName: [ #comment: "メッセージ:", ツ #format: #string, ツ #default: "ここにメッセージを指定" ], ツ #parameters: [ #comment: "引数1, 引数2, ...", ツ #format: #string, ツ #default: "" ], ツ #windowName: [ #comment: "対象ウィンドウ:", ツ #format: #string, ツ #default: "" ], ツ #WhichEvent: [ #comment: "イベント指定:", ツ #format: #symbol, ツ #range: [ #マウスボタンを放す, #マウスボタンを押す, #フレームを準備, #フレームに入る, #フレームを抜け出す,#InitMIAWMessage], ツ #default: #マウスボタンを放す ] ツ ] return p_listend

この部分のスクリプトは省略してあります。

ドはステージ上のムービーとウインドウ内のムービーの間でメッセージを

送るときに使うコマンドで、送信先のメッセージに直接ステートメントを

送ることができます。また、sendAllSpritesコマンドと組み合わせて使うこ

とにより、複雑なコントロールを簡単に行うことができます。

Page 55: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

55

第3章

入門編

スクリプトの解説

•property windowName, commandName, parameters,

whichEvent

このビヘイビアで「windowName」「commandName」「parameters」

「whichEvent」をパラメータとして使うことを定義します。

•on initMIAWMessage me

•on mouseUp me

•on mouseDown me

•on prepareFrame me

•on enterFrame me

•on exitFrame me

それぞれのメッセージを受け取ったときに「on init」ハンドラを実行し、

パラメータにセットされたスプライトへメッセージを送るためのイベント

ハンドラです。

この部分のスクリプトは省略してあります。

図3.26ウィンドウ内ムービーに送る-1

on getBehaviorDescription return " ... "end

Page 56: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

56

第3章

入門編

•if ( word 1 of parameters = "field" ) then

parametersパラメータにセットされた1番目の単語が"field"であるかどう

かを判定します。

⇒wordは指定された位置にある文字列内の単語を抜き出すためのキーワー

ドです。単語の区切りには半角英数の「スペース」を使用してください。

•set parameters = the text of field ( word 2 ofparameters )

parametersパラメータにセットされた2番目の単語をキャストメンバー番

号かキャストメンバー名に持つテキストフィールドに含まれる文字列を

parametersパラメータにセットします。

⇒the text of fieldはキャストメンバー番号かキャストメンバー名で指定した

フィールドキャストメンバーに含まれる文字列を特定するためのキャスト

メンバープロパティです。Director 6.0ではthe text of memberプロパティの使

用を推奨していますが、ここでは従来のthe text of fieldプロパティが使われて

います。また、fieldキーワードを使ってフィールドキャストメンバーに含

まれる文字列を特定することもできます。

応用例

以下のステートメントは同じ結果を返します。

the text of field ( word 2 of parameters )the text of member ( word 2 of parameters )

field ( word 2 of parameters )

⇒parametersパラメータの値が「field "テスト"」の場合、set parameters = the

text of field "テスト"というステートメントが実行されます。

•else if ( word 1 of parameters = "sprite" ) then

parametersパラメータにセットされた1番目の単語が"field"ではない場合

に、1番目の単語が"sprite"であるかどうかを判定します。

•set parameters = field the castNum of sprite ( word

2 of parameters )

parametersパラメータにセットされた2番目の単語をスプライト番号に持

つスプライトに配置されたテキストフィールドに含まれる文字列を

parametersパラメータにセットします。

⇒the castNum of spriteはスプライト番号で指定したスプライトに配置され

たキャストメンバー番号を特定するためのスプライトプロパティです。

Director 6.0ではthe member of spriteまたはthe memberNum of spriteプロパ

ティの使用を推奨していますが、ここでは従来のthe castNum of spriteプロパ

ティが使われています。

Page 57: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

57

第3章

入門編

応用例

以下のステートメントは同じ結果を返します。

field the castNum of sprite ( word 2 of parameters )

field the memberNum of sprite ( word 2 of parameters )

the text of the member of sprite ( word 2 of parameters )

⇒parametersパラメータの値が「sprite 1」の場合、set parameters = field the

castNum of sprite 1というステートメントが実行されます。

•if not (parameters = EMPTY) then set argv = "(" &parameters &")"

parametersパラメータの値がEMPTY(空)かどうかを判定し、parametersパ

ラメータに値が存在していればローカル変数argvに文字列「"(" & parameters

&")"」をセットします。

⇒parametersパラメータの値が「20」の場合、ローカル変数argvに文字列

「(20)」がセットされます。

•tell window ( the windowName of me ) to do ( thecommandName of me ) && argv

tellコマンドを使いwindowName パラメータに指定したウインドウ内のムー

ビーへcommandNameパラメータで指定したメッセージ(ステートメントまたはハンドラ名)とローカル変数argvにセットされた文字列(引数)を送りま

す。

図3.27ウィンドウ内ムービーに送る-2

Page 58: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

58

第3章

入門編

⇒on getPropertyDescriptionListハンドラで作成するパラメータの役割は以

下の通りです。

#commandName(文字列)

ウインドウ内のムービーへ送るメッセージをステートメントかハンドラ名

で指定します。

#parameters(文字列)

ウインドウ内のムービーへ送るメッセージがハンドラ名の場合、引数が必

要であれば文字列で指定します。

#windowName(文字列)

メッセージを送りたいウインドウのウインドウ名を指定します。ウインド

ウ名を特に指定しなければ、ウインドウ内に開くムービーのファイル名が

ウインドウ名になります。

#WhichEvent(シンボル)

どのイベントによってメッセージを送るかを指定します。

#commandNameパラメータ

#parametersパラメータ

#windowNameパラメータ

#WhichEventパラメータ

3.2.3メディア制御用ビヘイビア

■サウンドキャストメンバーの再生 「puppetSound」

パラメータを使ってサウンドを再生するチャンネルとサウンドキャストメ

ンバーを指定し、6つのイベントに対応するメディア制御用ビヘイビアで

す。puppetSoundコマンドはLingoから直接サウンドキャストメンバーを再

生するときに使うコマンドで、スコアのサウンドチャンネルに優先してサ

ウンドのコントロールを行うことができます。このビヘイビアは第2章で

作成した「Movie1.dir」のメニュー画面でクリック音を再生するときに

使っています。

図3.28パラメータ設定ダイアログボックス

Page 59: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

59

第3章

入門編

property WhichEvent, WhichSound, WhichChannel, ツ

StartImmediately

on initPlayMember meon mouseUp meon mouseDown meon prepareFrame meon enterFrame meon exitFrame me

on init me puppetSound the WhichChannel of me, thewhichSound of me if the StartImmediately of me then updatestageend

on getPropertyDescriptionList set p_list = [ ツ #WhichSound: [ #comment: "サウンド:", ツ

#format: #sound, ツ#default: "" ], ツ

#WhichChannel: [ #comment: "チャンネル:", ツ#format: #integer, ツ#default: 1 ], ツ

#WhichEvent: [ #comment: "イベントの指定:", ツ#format: #symbol, ツ#range: [ #マウスボタンを放す, #マウスボタンを押

す, #フレームを準備, #フレームに入る, #フレームを抜け出す,#InitPlayMember ], ツ

#default: #マウスボタンを放す ]ツ ] return p_listend

on getBehaviorDescription return " ... "end

この部分のスクリプトは省略してあります。

この部分のスクリプトは省略してあります。

スクリプトの解説

•property WhichEvent, WhichSound, WhichChannel, ツ

StartImmediately

このビヘイビアで「WhichEvent」「WhichSound」「WhichChannel」

「StartImmediately」をパラメータとして使うことを定義します。

⇒このビヘイビアでStartImmediatelyパラメータは使われていません。

Page 60: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

60

第3章

入門編

•on initPlayMember me

•on mouseUp me

•on mouseDown me

•on prepareFrame me

•on enterFrame me

•on exitFrame me

それぞれのメッセージを受け取ったときに「on init」ハンドラを実行し、

パラメータにセットされたスプライトへメッセージを送るためのイベント

ハンドラです。

図3.29サウンドキャストメンバーの再生-1

•puppetSound the WhichChannel of me, the whichSound

of me

WhichChannelパラメータにセットされた値のサウンドチャンネルを使っ

て、whichSoundパラメータにセットされたサウンドキャストメンバーを

再生します。

⇒WhichChannelパラメータの値が「1」、whichSoundパラメータの値が

「"BGM"」の場合、puppetSound 1, "BGM"というステートメントが実行さ

れます。

Page 61: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

61

第3章

入門編

⇒puppetSoundコマンドはスコアのサウンドチャンネルに優先してLingoか

らサウンドキャストを再生するコマンドです。

書式

puppetSound [サウンドチャンネル番号], "キャストメンバー名"

または[キャストメンバー番号]

サウンドチャンネル番号を省略した場合は、サウンドチャンネル1からサ

ウンドを再生します。

•if the StartImmediately of me then updatestage

StartImmediatelyパラメータがTRUE(1)であればupdatestageコマンドを

実行します。

⇒StartImmediatelyパラメータに値はセットされておらず、常にVIOID

(空)のため、updatestageコマンドが実行されることはありません。ただ

し、サウンドチャンネル番号を省略してpuppetSoundコマンド実行時する

と、再生ヘッドが移動するかupdateStageコマンドが実行された後にサウン

ドの再生を始めるため、サウンド再生の遅れを回避するためのステートメ

ントとしては有効です。

図3.30サウンドキャストメンバーの再生-2

⇒on getPropertyDescriptionListハンドラで作成するパラメータの役割は以

下の通りです。

#WhichSound(サウンド)

再生するサウンドキャストメンバーをポップアップメニューから選びま

す。

#WhichChannel(整数)

サウンド再生で使用するサウンドチャンネルを整数で指定します。

Page 62: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

62

第3章

入門編

図3.31パラメータ設定ダイアログボックス

#WhichEvent(シンボル)

どのイベントによってメッセージを送るかを指定します。

#WhichSoundパラメータ

#WhichChannelパラメータ

#WhichEventパラメータ

Lingo始め→sound playFileビヘイビア「外部ファイルの再生」はサウンドファイルをキャストメンバーとして読み込むことなく、ディスクから直接再生することのできるsound playFileコマンドを使ったビヘイビアです。このビヘイビアはサウンドキャストのキャストメンバー名ではなく、サウンドファイルの保存場所

をWhichSoundパラメータにセットしますが、基本的なスクリプトはビヘイ

ビア「サウンドキャストメンバーの再生」と同じです。本書の解説を参考にしながら、スクリプトの構造をチェックしてください。

書式

sound playFile [サウンドチャンネル番号], "サウンドファイル名"

解説

再生するサウンドファイルがDirectorムービーと同じフォルダにある場合は、サウンドファイル名だけを指定します。サウンドファイルとDirectorムービーが異なるフォルダにある場合は、相対パスを使ってサウンドファイルが保存されているパスを指定してください。また、ビヘイビア「外部ファイルの再生」を使わず、新しいスクリプトでsound playFileコマンドを使う場合は、現在Directorムービーがあるフォルダの絶対パスを返すthepathName関数を使って、サウンドファイルの絶対パスを指定してください。→Lingo終わり

このほかのメディア制御用ビヘイビアには以下のものがあります。

■警告音 「beep」

■キャストメンバー切り替え 「the member of sprite」

■キャストメンバーをサイクル 「the member of sprite」

■プリロード 「preload / preloadMember / preloadMovie」

■プレイスホルダーを設定 「the mediaReady of member」

■フレームが準備されるまで待機 「frameReady」

■ネット上のテキスト取り込み 「getNetText」

■ネット上のプリロード 「preloadNetThing」

パラメータの数が多く、複雑なスクリプトもありますが、本書の解説を参

考にしながらスクリプトの構造をチェックしてください。

始め→絶対パスと相対パスにつ

いては3.1.4Lingoの基本コマンド

を参照してください。→終わり

Page 63: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

63

第3章

入門編

3.2.4ボタン制御用ビヘイビア

■プッシュボタン設定 「the member of sprite」

パラメータを使ってボタンをクリックしたときのキャストメンバーを指定

し、5つのイベントに対応するボタン制御用ビヘイビアです。the member

of spriteプロパティはスプライトに表示するキャストメンバーを特定する

ためのプロパティで、Lingoからスプライトに表示するキャストメンバー

を変更するときに使用します。このビヘイビアは第2章で作成した

「Movie1.dir」のメニュー画面でボタンをクリックしたときのビットマッ

プキャストを表示するときに使用しています。

property UpCM, DownCM, UpNum, DownNumproperty button_active

on mouseDown me set the member of sprite (the spriteNum of me)= member the downCM of me set the button_active of me = TRUEend

on mouseUp me set the member of sprite (the spriteNum of me)= member the UpCM of me set the button_active of me = falseend

on mouseEnter me if the button_active of me then set the member of sprite (the spriteNum ofme) = member the DownCM of me end ifend

on mouseLeave me if the button_active of me then set the member of sprite (the spriteNum ofme) = member the UpCM of me end ifend

on mouseUpOutside me set the button_active of me = falseend

Page 64: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

64

第3章

入門編

on beginSprite me set the UpCM of me = the member of sprite (thespriteNum of me) set the UpNum of me = the number of memberUpCM set the DownNum of me = the number of memberDownCM set the button_active of me = falseend

on endSprite me --end

on getPropertyDescriptionList if the currentspritenum = 0 then set memdefault = 0 else set memref = the member of sprite thecurrentspritenum set castlibnum = the castlibnum of memref set memdefault = member (the membernum ofmember memref + 1) of castlib castlibnum end if

set p_list = [ ツ

#DownCM: [ #comment: "押した状態のイメージ:", ツ

#format: #graphic, ツ

#default: memdefault ] ツ

]

return p_list

end

on getBehaviorDescription return " ... "end

この部分のスクリプトは省略してあります。

スクリプトの解説

•property UpCM, DownCM, UpNum, DownNum

property button_active

このビヘイビアで「UpCM」「DownCM」「UpNum」「DownNum」

「button_active」をパラメータとして使うことを定義します。

Page 65: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

65

第3章

入門編

•on mouseDown me

マウスボタンを押したときに発生するmouseDownメッセージに対応する

イベントハンドラです。

•set the member of sprite (the spriteNum of me) =member the downCM of me

現在のスプライト(the spriteNum of me)に表示するキャストメンバーを

downCMパラメータにセットされたキャストメンバーに変更します。

⇒the spriteNum of meの値が「2」、downCMパラメータの値が「"btn-

1c"」の場合、set the member of sprite 2 = member "btn-1c"というステート

メントが実行されます。

•set the button_active of me = TRUE

button_activeパラメータの値をTRUEに変更します。

図3.32プッシュボタン設定-1

•on mouseUp me

マウスボタンを放したときに発生するmouseUpメッセージに対応するイベ

ントハンドラです。

•set the member of sprite (the spriteNum of me) =member the UpCM of me

現在のスプライト(the spriteNum of me)に表示するキャストメンバーを

UpCMパラメータにセットされたキャストメンバーに変更します。

⇒the spriteNum of meの値が「2」、downCMパラメータの値が「"btn-

1a"」の場合、set the member of sprite 2 = member "btn-1a"というステート

メントが実行されます。

•set the button_active of me = false

button_activeパラメータの値をFALSEに変更します。

Page 66: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

66

第3章

入門編

図3.33プッシュボタン設定-2

•on mouseEnter me

カーソルがボタンエリア内に入ったときに発生するmouseEnterメッセージ

に対応するイベントハンドラです。

•if the button_active of me then

set the member of sprite (the spriteNum of me) =member the DownCM of me

button_activeパラメータの値がTRUEであれば、現在のスプライト(the

spriteNum of me)に表示するキャストメンバーをdownCMパラメータに

セットされたキャストメンバーに変更します。

⇒the spriteNum of meの値が「2」、downCMパラメータの値が「"btn-

1c"」の場合、set the member of sprite 2 = member "btn-1c"というステート

メントが実行されます。

図3.34プッシュボタン設定-3

•on mouseLeave me

カーソルがボタンエリア内から出たときに発生するmouseLeaveメッセー

Page 67: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

67

第3章

入門編

図3.35プッシュボタン設定-4

•on mouseUpOutside me

ボタンエリア内でマウスボタンが押されたあと、ボタンエリア外でマウス

ボタンを放したときに発生するmouseUpOutsideメッセージに対応するイ

ベントハンドラです。

•set the button_active of me = false

button_activeパラメータの値をFALSEに変更します。

ジに対応するイベントハンドラです。

•if the button_active of me then set the member of sprite (the spriteNum of me) =member the UpCM of me

button_activeパラメータの値がTRUEであれば、現在のスプライト(the

spriteNum of me)に表示するキャストメンバーをUpCMパラメータにセッ

トされたキャストメンバーに変更します。

⇒the spriteNum of meの値が「2」、downCMパラメータの値が「"btn-

1a"」の場合、set the member of sprite 2 = member "btn-1a"というステート

メントが実行されます。

図3.36プッシュボタン設定-5

Page 68: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

68

第3章

入門編

•on beginSprite me

再生ヘッドがスプライトの開始フレームに到達し、スプライトの再生(表

示)が始まるときに発生するbeginSpriteメッセージに対応するイベントハ

ンドラです。beginSpriteメッセージは、スプライトスクリプトとフレーム

スクリプト以外には送られず、prepareFrameメッセージの前に発生するの

で、スプライトの初期化スクリプトを実行するのに適しています。また、

endSpriteハンドラ内ではgo、play、updateStageコマンドは使用できませ

ん。

•set the UpCM of me = the member of sprite (the

spriteNum of me)

the member of spriteプロパティを使って現在のスプライト(the spriteNum

of me)に表示するキャストメンバーを特定し、UpCM パラメータにセッ

トします。

⇒the spriteNum of meの値が「1」、スプライトに表示するキャストメン

バー番号が「1」の場合、UpCMパラメータの値は「(member 1 of castLib

1)」となります。

•set the UpNum of me = the number of member UpCM

the number of memberプロパティを使ってUpCMパラメータにセットされ

たキャストメンバーのキャストメンバー番号を特定し、UpNum パラメー

タにセットします。

⇒UpCMパラメータの値が「(member 1 of castLib 1)」の場合、UpNumパ

ラメータの値は「1」となります。

•set the DownNum of me = the number of member DownCM

the number of memberプロパティを使ってDownCMパラメータにセットさ

れたキャストメンバーのキャストメンバー番号を特定し、DownNum パラ

メ ー タ に セ ッ ト し ま す 。 ( D o w n C M パ ラ メ ー タ の 値 は

getPropertyDescriptionListで作成したプロパティ設定ダイアログボックス

を使って設定されています。)

⇒UpCMパラメータの値が「(member 1 of castLib 1)」の場合、UpNumパ

ラメータの値は「1」となります。

•set the button_active of me = false

button_activeパラメータの値をFALSEに変更します。

Page 69: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

69

第3章

入門編

図3.37プッシュボタン設定-6

•on endSprite me

再生ヘッドがスプライトの終了フレームを抜け出て、スプライトの再生

(表示)が終わるときに発生するendSpriteメッセージに対応するイベント

ハンドラです。endSpriteメッセージは、スプライトスクリプトとフレーム

スクリプト以外には送られず、exitFrameメッセージの後に発生するの

で、スプライトの初期化スクリプトを実行するのに適しています。また、

endSpriteハンドラ内ではgo、play、updateStageコマンドは使用できませ

ん。

⇒このビヘイビアにはendSpriteハンドラ内で実行するステートメントはあ

りません。

•on getPropertyDescriptionList

ビヘイビアインスペクタを操作したときに送られるメッセージに対応する

イベントハンドラです。ビヘイビアインスペクタのパラメータ設定ダイア

ログボックスを使ってパラメータを設定する場合は、このハンドラ内でプ

ロパティリストを作成してください。また、ユーザーによる設定が必要な

いパラメータはLingoで直接設定することができます。

•if the currentspritenum = 0 then

set memdefault = 0

the currentspritenum プロパティの値が0であればローカル変数memdefault

の値を0にセットします。

Page 70: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

70

第3章

入門編

⇒the currentspritenum プロパティはイベントが発生したスプライトのスプ

ライト番号を返すプロパティで、スプライトオブジェクトを参照できない

(the spriteNum of meを使えない)キャストメンバースクリプトから現在

のスプライト番号を調べるときに使用します。このプロパティはフレーム

スクリプトとムービースクリプトでは使用できません。

始め→getPropertyDescriptionList

ハンドラはスプライトにビヘイ

ビアを配置したときのイベント

メッセージに対応するハンドラ

な の で 、 実 際 に は t h e

currentspritenum プロパティの値

が0になることなく、エラー処理

のために用意されたステートメ

ントということになります。→

終わり

•else

set memref = the member of sprite the

currentspritenum

set castlibnum = the castlibnum of memref

set memdefault = member (the membernum of member

memref + 1) of castlib castlibnum

the currentspritenum プロパティの値が0でなければ、

1)the member of spriteプロパティを使ってこのハンドラを実行したスプ

ライト(the currentspritenum)が表示するキャストメンバーを特定し、

ローカル変数memrefにセットします。

⇒the currentspritenumの値が「1」、スプライトに表示するキャストメン

バー番号が「1」の場合、ローカル変数memrefの値は「(member 1 of

castLib 1)」となります。

2)the castlibNum of memberプロパティを使ってローカル変数memrefに

セットしたキャストメンバーのキャストライブラリ番号を特定し、ローカ

ル変数castlibnumにセットします。

⇒ローカル変数memrefの値が「(member 1 of castLib 1)」の場合、set

castlibnum = the castlibnum of (member 1 of castLib 1)というステートメント

が実行され、ローカル変数castlibnumに「1」がセットされます。

3)the memberNum of memberプロパティを使って現在のキャストメン

バー番号(memref)の次に次に登録されたキャストメンバーを特定し、

ローカル変数memdefaultにセットします。

⇒ローカル変数memrefの値が「(member 1 of castLib 1)」、ローカル変数

castlibnumの値が「1」の場合、set memdefault = member (the membernum of

member (member 1 of castLib 1) + 1) of castlib 1というステートメントが実

行され、ローカル変数memdefaultに「member 2 of castlib 1」がセットされ

ます。

Page 71: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

71

第3章

入門編

図3.39プッシュボタン設定-7

•set p_list = [ ¬

#DownCM: [ #comment: "押した状態のイメージ:", ツ

#format: #graphic, ツ

#default: memdefault ] ツ

]

return p_list

#DownCMパラメータのプロパティを設定します。

#commentプロパティにはパラメータ設定ダイアログボックスに表示する

ラベル名を文字列で指定。(押した状態のイメージ:)

#formatプロパティにはパラメータの属性(書式)をシンボルで指定。

(グラフィック)

#defaultプロパティにはパラメータの初期値を指定。(ローカル変数

memdefaultの値)

図3.38パラメータ設定ダイアログボックス

Page 72: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

72

第3章

入門編

このほかのメディア制御用ビヘイビアには以下のものがあります。

■トグルボタン設定 「the member of sprite」

■ラジオボタングループ設定 「SendAllSprites」

■巻き戻し 「the movietime of sprite」

■再生 「the movieRate of sprite」

■ポーズ 「the movieRate of sprite」

■コントローラ 「the movietime of sprite / the movieRate of sprite」

■スライダ「the movietime of sprite / the locH of sprite / the locV of sprite」

パラメータの数が多く、複雑なスクリプトもありますが、本書の解説を参

考にしながらスクリプトの構造をチェックしてください。

property outcurs, incurs, incursSet, ツcustomImage, customMask, oldcursorproperty useCustom

on translate_cursor me, setting, image, mask, custom if custom then set val = [ member image, member mask ] return val end if return settingend

on beginSprite me set oldcursor = the cursor of sprite thespritenum of me

3.2.5インターフェース用ビヘイビア

■カーソル変更(ロールオーバー) 「the cursor of sprite」

指定したスプライトにロールオーバーしたときにカーソルを変更するイン

ターフェース用ビヘイビアです。the cursor of spriteプロパティは指定した

スプライト上にカーソルがあるときに、現在のカーソルを指定したカーソ

ルに変更するためのスプライトプロパティで、Director 6.0に内蔵のカーソ

ルかキャストメンバーとして登録した1ビットのビットマップキャストを

使 用 す る こ と が で き ま す 。 こ の ビ ヘ イ ビ ア は 第 2 章 で 作 成 し た

「Movie1.dir」のメニュー画面でボタン上でカーソルを変更するときに使

用しています。

Page 73: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

73

第3章

入門編

set val = translate_cursor( me, the incursSet ofme,customImage,customMask,useCustom ) set the cursor of sprite the spriteNum of me = valend

on endsprite me set the cursor of sprite the spriteNum of me = oldcursorend

on getPropertyDescriptionList set p_list = [ ツ #incursSet: [ #comment: "カーソル:", ツ #format: #cursor, ツ #default: 1], ツ #useCustom: [ #comment: "カスタムカーソルを使用:", ツ #format: #boolean, ツ #default: FALSE ], ツ #customImage: [ #comment: "イメージ:", ツ #format: #bitmap, ツ #default: member 1 ], ツ #customMask: [ #comment: "マスク:", ツ #format: #bitmap, ツ #default: member 1 ] ツ ] return p_listend

on getBehaviorDescription return " ... "end

スクリプトの解説

•property outcurs, incurs, incursSet, ツcustomImage, customMask, oldcursorproperty useCustom

このビヘイビアで「outcurs」「incurs」「incursSet」「customImage」

「customMask」「oldcursor」「useCustom」をパラメータとして使うこと

を定義します。

•on translate_cursor me, setting, image, mask, custom

カスタムメッセージtranslate_cursorに対応するユーザー定義ハンドラです。

このハンドラでは4つの引数「setting」「image」「mask」「custom」を

使用します。

この部分のスクリプトは省略してあります。

Page 74: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

74

第3章

入門編

•if custom then

set val = [ member image, member mask ]

return val

引数customの値がTRUE(1)であれば、

1)ローカル変数valの値にリニアリスト[ member image, member mask ]を

セ ッ ト し ま す 。 引 数 と し て 渡 さ れ る i m a g e とm a s k の 値 は 、

getPropertyDescriptionListで設定されたcustomImageパラメータと

customMaskパラメータの値です。

⇒引数imageの値が「member 1」、引数maskの値が「member 2」の場合、

set x = [member (member 1), member (member 2)]というステートメントが実

行され、ローカル変数valにリニアリスト[(member 1 of castLib 1), (member

2 of castLib 1)]がセットされます。

2)ローカル変数valの値を返し、このハンドラを終了します。

⇒ローカル変数valにセットされたリニアリストは、このハンドラをユー

ザー定義関数として呼び出しているon beginSpriteハンドラのtranslate_cursor

( me, the incursSet of me,customImage,customMask,useCustom )に返されます。

•return setting

引数customの値がFALSE(0)であれば、引数settingの値を返し、このハ

ンドラを終了します。settingの値は、getPropertyDescriptionListで設定され

たincursSetパラメータの値です。

図3.40カーソル変更-1

Page 75: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

75

第3章

入門編

•on beginSprite me

再生ヘッドがスプライトの開始フレームに到達し、スプライトの再生(表

示)が始まるときに発生するbeginSpriteメッセージに対応するイベントハ

ンドラです。beginSpriteメッセージは、スプライトスクリプトとフレーム

スクリプト以外には送られず、prepareFrameメッセージの前に発生するの

で、スプライトの初期化スクリプトを実行するのに適しています。また、

endSpriteハンドラ内ではgo、play、updateStageコマンドは使用できませ

ん。

•set oldcursor = the cursor of sprite the spritenum

of me

現在のスプライトに設定されたthe cursor of spriteプロパティの値を

oldcursorパラメータにセットします。

•set val = translate_cursor( me, the incursSet of

me,customImage,customMask,useCustom )

ユーザー定義ハンドラtranslate_cursorをユーザー定義関数として使用する

ため、ハンドラ名の後ろに()をつけて引数を渡し、ユーザー定義関数から

の戻り値をローカル変数valにセットします。

•set the cursor of sprite the spriteNum of me = val

ローカル変数valの値を現在のスプライトに設定されたthe cursor of spriteプ

ロパティにセットします。

•on endSprite me

再生ヘッドがスプライトの終了フレームを抜け出て、スプライトの再生

(表示)が終わるときに発生するendSpriteメッセージに対応するイベント

ハンドラです。endSpriteメッセージは、スプライトスクリプトとフレーム

スクリプト以外には送られず、exitFrameメッセージの後に発生するの

で、スプライトの初期化スクリプトを実行するのに適しています。また、

endSpriteハンドラ内ではgo、play、updateStageコマンドは使用できませ

ん。

•set the cursor of sprite the spriteNum of me = oldcursor

oldcursorパラメータの値を現在のスプライトに設定されたthe cursor of

spriteプロパティにセットします。

Page 76: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

76

第3章

入門編

図3.41カーソル変更-2

⇒on getPropertyDescriptionListハンドラで作成するパラメータの役割は以

下の通りです。

#incursSet(カーソル)

Director 6.0に内蔵されたカーソルをポップアップメニューから選びます。

#useCustom(チェックボックス)

カスタムカーソル使用の有無をチェックボックスを使って指定します。

#customImage(ビットマップキャスト)

カスタムカーソルのイメージに使用するビットマップキャストを指定しま

す。

#customMask(ビットマップキャスト)

カスタムカーソルのマスクに使用するビットマップキャストを指定しま

す。

#incursSetパラメータ

#useCustomパラメータ

#customImageパラメータ

#customMaskパラメータ

図3.42パラメータ設定ダイアログボックス

Page 77: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

77

第3章

入門編

■メンバーの入れ替え(ロールオーバー)「on mouseEnter / on mouseLeave」

パラメータを使ってボタンにロールオーバーしたときのキャストメンバー

を指定し、2つのイベントに対応するインターフェース用ビヘイビアで

す。the member of spriteプロパティはスプライトに表示するキャストメン

バーを特定するためのプロパティで、Lingoからスプライトに表示する

キャストメンバーを変更するときに使用します。このビヘイビアは第2章

で作成した「Movie1.dir」のメニュー画面で、ボタンにロールオーバーし

たときのビットマップキャストを表示するときに使用しています。

property standardImage, alternateImage, nextCM

on mouseEnter me set the member of sprite the spritenum of me = thealternateImage of meend

on mouseLeave me set the member of sprite the spritenum of me = thestandardImage of meend

on beginSprite me set the standardImage of me = the member of spritethe spriteNum of me if nextCM = 1 then set memref = the member of sprite thecurrentspritenum set castlibnum = the castlibnum of memref set memdefault = member (the membernum of membermemref + 1) of castlib castlibnum set alternateImage = memdefault end ifend

on getPropertyDescriptionList if the currentspritenum = 0 then set memdefault = 0 else set memref = the member of sprite thecurrentspritenum set castlibnum = the castlibnum of memref set memdefault = member (the membernum of membermemref + 1) of castlib castlibnum end if

Page 78: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

78

第3章

入門編

set p_list = [ ツ #nextCM: [ #comment: "隣のメンバーを使用:", ツ #format: #boolean, ツ #default: 1 ], ツ #alternateImage: [ #comment: "キャストメンバーを指定:", ツ #format: #graphic, ツ #default: memdefault ] ツ ] return p_listend

on getBehaviorDescription

return " ... "end

この部分のスクリプトは省略してあります。

スクリプトの解説

•property standardImage, alternateImage, nextCM

このビヘイビアで「standardImage」「alternateImage」「nextCM」をパラ

メータとして使うことを定義します。

•on mouseEnter me

set the member of sprite the spritenum of me = the

alternateImage of me

カーソルがボタンエリア内に入ったときに発生するmouseEnterメッセージ

に対応し、スプライトに表示するキャストメンバーをalternateImageパラ

メータにセットされたキャストメンバーに変更します。

図3.43メンバーの入れ替え-1

•on mouseLeave me

set the member of sprite the spritenum of me = the

standardImage of me

カーソルがボタンエリア内から出たときに発生するmouseLeaveメッセー

ジに対応し、スプライトに表示するキャストメンバーをstandardImageパラ

メータにセットされたキャストメンバーに変更します。

始め→the member of spriteプロパ

ティはスプライトに表示する

キャストメンバーを特定するス

プライトプロパティです。→終

わり

Page 79: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

79

第3章

入門編

図3.44メンバーの入れ替え-2

•on beginSprite me

再生ヘッドがスプライトの開始フレームに到達し、スプライトの再生(表

示)が始まるときに発生するbeginSpriteメッセージに対応するイベントハ

ンドラです。beginSpriteメッセージは、スプライトスクリプトとフレーム

スクリプト以外には送られず、prepareFrameメッセージの前に発生するの

で、スプライトの初期化スクリプトを実行するのに適しています。また、

endSpriteハンドラ内ではgo、play、updateStageコマンドは使用できませ

ん。

•set the standardImage of me = the member of sprite the

spriteNum of me

the member of spriteプロパティを使って現在のスプライト(the spriteNum

of me)に表示するキャストメンバーを特定し、standardImageパラメータ

にセットします。

⇒the spriteNum of meの値が「1」、スプライトに表示するキャストメン

バー番号が「1」の場合、standardImageパラメータの値は「(member 1 of

castLib 1)」となります。

•if nextCM = 1 then

set memref = the member of sprite the

currentspritenum

set castlibnum = the castlibnum of memref

set memdefault = member (the membernum of member

memref + 1) of castlib castlibnum

set alternateImage = memdefault

nextCMパラメータの値が1であれば、

1)the member of spriteプロパティを使ってこのハンドラを実行したスプ

ライト(the currentspritenum)が表示するキャストメンバーを特定し、

ローカル変数memrefにセットします。

⇒the currentspritenumの値が「1」、スプライトに表示するキャストメン

バー番号が「1」の場合、ローカル変数memrefの値は「(member 1 of

Page 80: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

80

第3章

入門編

castLib 1)」となります。

2)the castlibNum of memberプロパティを使ってローカル変数memrefに

セットしたキャストメンバーのキャストライブラリ番号を特定し、ローカ

ル変数castlibnumにセットします。

⇒ローカル変数memrefの値が「(member 1 of castLib 1)」の場合、set

castlibnum = the castlibnum of (member 1 of castLib 1)というステートメント

が実行され、ローカル変数castlibnumに「1」がセットされます。

3)the memberNum of memberプロパティを使って現在のキャストメン

バー番号(memref)の次に次に登録されたキャストメンバーを特定し、

ローカル変数memdefaultにセットします。

⇒ローカル変数memrefの値が「(member 1 of castLib 1)」、ローカル変数

castlibnumの値が「1」の場合、set memdefault = member (the membernum of

member (member 1 of castLib 1) + 1) of castlib 1というステートメントが実

行され、ローカル変数memdefaultに「member 2 of castlib 1」がセットされ

ます。

4)ローカル変数memdefaultの値をalternateImageパラメータにセットしま

す。

図3.45メンバーの入れ替え-3

Page 81: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

81

第3章

入門編

•on getPropertyDescriptionList

ビヘイビアインスペクタを操作したときに送られるメッセージに対応する

イベントハンドラです。ビヘイビアインスペクタのパラメータ設定ダイア

ログボックスを使ってパラメータを設定する場合は、このハンドラ内でプ

ロパティリストを作成してください。また、ユーザーによる設定が必要な

いパラメータはLingoで直接設定することができます。

•if the currentspritenum = 0 then

set memdefault = 0

the currentspritenum プロパティの値が0であればローカル変数memdefault

の値を0にセットします。

⇒the currentspritenum プロパティはイベントが発生したスプライトのスプ

ライト番号を返すプロパティで、スプライトオブジェクトを参照できない

(the spriteNum of meを使えない)キャストメンバースクリプトから現在

のスプライト番号を調べるときに使用します。このプロパティはフレーム

スクリプトとムービースクリプトでは使用できません。

始め→getPropertyDescriptionList

ハンドラはスプライトにビヘイ

ビアを配置したときのイベント

メッセージに対応するハンドラ

な の で 、 実 際 に は t h e

currentspritenum プロパティの値

が0になることなく、エラー処理

のために用意されたステートメ

ントということになります。→

終わり

•else

set memref = the member of sprite the

currentspritenum

set castlibnum = the castlibnum of memref

set memdefault = member (the membernum of member

memref + 1) of castlib castlibnum

the currentspritenum プロパティの値が0でなければ、

1)the member of spriteプロパティを使ってこのハンドラを実行したスプ

ライト(the currentspritenum)が表示するキャストメンバーを特定し、

ローカル変数memrefにセットします。

⇒the currentspritenumの値が「1」、スプライトに表示するキャストメン

バー番号が「1」の場合、ローカル変数memrefの値は「(member 1 of

castLib 1)」となります。

2)the castlibNum of memberプロパティを使ってローカル変数memrefに

セットしたキャストメンバーのキャストライブラリ番号を特定し、ローカ

ル変数castlibnumにセットします。

⇒ローカル変数memrefの値が「(member 1 of castLib 1)」の場合、set

castlibnum = the castlibnum of (member 1 of castLib 1)というステートメント

が実行され、ローカル変数castlibnumに「1」がセットされます。

Page 82: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

82

第3章

入門編

3)the memberNum of memberプロパティを使って現在のキャストメン

バー番号(memref)の次に次に登録されたキャストメンバーを特定し、

ローカル変数memdefaultにセットします。

⇒ローカル変数memrefの値が「(member 1 of castLib 1)」、ローカル変数

castlibnumの値が「1」の場合、set memdefault = member (the membernum of

member (member 1 of castLib 1) + 1) of castlib 1というステートメントが実

行され、ローカル変数memdefaultに「member 2 of castlib 1」がセットされ

ます。

set p_list = [ ¬

#nextCM: [ #comment: "隣のメンバーを使用:", ツ

#format: #boolean, ツ

#default: 1 ], ツ

#alternateImage: [#comment:"キャストメンバーを指定:", ツ

#format: #graphic, ツ

#default: memdefault ] ツ

]

return p_list

ローカル変数p_listに#nextCMパラメータと#alternateImageパラメータのプ

ロパティを設定します。

#nextCMパラメータ

#commentプロパティにはパラメータ設定ダイアログボックスに表示する

ラベル名を文字列で指定。(隣のメンバーを使用:)

#formatプロパティにはパラメータの属性(書式)をシンボルで指定。

(チェックボックス)

#defaultプロパティにはパラメータの初期値を指定。(1)

#alternateImageパラメータ

#commentプロパティにはパラメータ設定ダイアログボックスに表示する

ラベル名を文字列で指定。(キャストメンバーを指定:)

#formatプロパティにはパラメータの属性(書式)をシンボルで指定。

(グラフィック)

#defaultプロパティにはパラメータの初期値を指定。(ローカル変数

memdefaultの値)

Page 83: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

83

第3章

入門編

#nextCMパラメータ

#alternateImageパラメータ

図3.46パラメータ設定ダイアログボックス

図3.47メンバーの入れ替え-4

このほかのメディア制御用ビヘイビアには以下のものがあります。

■カーソル変更 「cursor」

■カーソルのアニメーション 「cursor」

■カーソル変更(マウスボタン/ロールオーバー)「the cursor of sprite」

■スプライトを吸着 「the locH of sprite / the locV of sprite」

■スプライトを吸着(複数に) 「the locH of sprite / the locV of sprite」

パラメータの数が多く、複雑なスクリプトもありますが、本書の解説を参

考にしながらスクリプトの構造をチェックしてください。

Page 84: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

84

第3章

入門編

3.3カスタムビヘイビア解説

ここでは第2章のメニュー画面作成で使用したカスタムビヘイビアのスク

リプト解説を行います。ムービーを再生しながら、ビヘイビアがどのよう

な働きをしているかを確認してください。

■カップアニメーション 「the member of sprite」

このビヘイビアを持つスプライト上にカーソルが入ったときと出ていくと

きに発生するmouseEnterメッセージと mouseLeaveメッセージによって、

現在表示中のビットマップキャストを切り替えてボタンアニメーションを

実行するビヘイビアです。

始め→ビヘイビアライブラリに

プリセットされている「キャス

トメンバーをサイクル」ビヘイ

ビアはメッセージを送る度に表

示するキャストメンバーを切り

替えますが、「カップアニメー

ション」ビヘイビアでは1度

メッセージを送ると連続して

キャストメンバーを切り替えま

す。→終わり property pTotalBtnNum, pCastLibNum, pStartBtnNumproperty spriteNum

on mouseEnter forwardAnimationend mouseEnter

on mouseLeave reverseAnimationend mouseLeave

on forwardAnimation set vNowBtnNum = getNowBtnNum() repeat with n = vNowBtnNum to (pTotalBtnNum - 1) if not rollOver(spriteNum) then exit repeat set the member of sprite spriteNum = pStartBtnNum + n updatestage wait 3 end repeatend forwardAnimation

on reverseAnimation set vNowBtnNum = getNowBtnNum() repeat with n = vNowBtnNum down to 0 set the member of sprite spriteNum = pStartBtnNum + n updatestage wait 3 end repeatend reverseAnimation

Page 85: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

85

第3章

入門編

on getNowBtnNum return value(char 2 of the name of member (thememberNum of sprite spriteNum) of castLibpCastLibNum)end getNowBtnNum

on wait tick set endTime = ticks() + tick repeat while ticks() < endTime end repeatend wait

on beginSprite me set pCastLibNum = the castLibNum of spritespriteNum set pStartBtnNum = the number of member (the memberof sprite spriteNum) of castLib pCastLibNumend

on endSprite me --end endSprite

on getPropertyDescriptionList set descriptionList = [:] addProp descriptionList, #pTotalBtnNum, [#comment : "アニメーションキャスト数:", #format : #integer, #default :10, #range : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ] return descriptionListend

on getBehaviorDescription

return " ... "

end

この部分のスクリプトは省略してあります。

スクリプトの解説

•property pTotalBtnNum, pCastLibNum, pStartBtnNum

property spriteNum

このビヘイビアで「pTotalBtnNum」「pCastLibNum」「pStartBtnNum」

「spriteNum」をパラメータとして使うことを定義します。

⇒スプライトが配置されているスプライトチャンネルの番号を調べるには

the spriteNumプロパティを使いますが、スプライトオブジェクトを参照す

Page 86: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

86

第3章

入門編

るためのmeキーワードをハンドラ名の後につけなければならないこと

と、「the spriteNum of me」という書式を使うためにステートメントが長

くなってしまい、スクリプトが読みにくくなることが難点です。property

キーワードを使ってthe spriteNumプロパティの値をspriteNumパラメータ

(プロパティ変数)として使うことを定義すると、そのスクリプト内のハ

ンドラからスプライトチャンネルの番号を調べるときの書式を簡略化でき

ます。

•on mouseEnter

forwardAnimation

カーソルがボタンエリア内に入ったときに発生するmouseEnterメッセージ

に対応し、forwardAnimationハンドラを実行します。

•on mouseLeave

reverseAnimation

カーソルがボタンエリア内から出たときに発生するmouseLeaveメッセー

ジに対応し、reverseAnimationハンドラを実行します。

図3.48カップアニメーション-1

•on forwardAnimation

カスタムメッセージforwardAnimationに対応するユーザー定義ハンドラで

す。

•set vNowBtnNum = getNowBtnNum()

ユーザー定義ハンドラgetNowBtnNumを実行し、getNowBtnNumハンドラ

からの戻り値をローカル変数vNowBtnNumにセットします。

•repeat with n = vNowBtnNum to (pTotalBtnNum - 1)

repeat withはカウンタ変数が設定した値になるまでステートメントを繰り

返し実行するためのキーワードです。ここでは、カウンタ変数nの値が

Page 87: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

87

第3章

入門編

ローカル変数vNowBtnNumの値からpTotalBtnNum パラメータ- 1の値になるま

でリピート文を繰り返します。

書式

repeat with [カウンタ変数] = [初期値] to [終了値]

⇒ローカル変数vNowBtnNumの値が「1」、pTotalBtnNumパラメータの値が

「10」の場合、repeat with n = 1 to 9というステートメントを実行し、カウ

ンタ変数nの値が9になるまでリピートループを続けます。

•if not rollOver(spriteNum) then exit repeat

指定したスプライト上にカーソルがあるかどうかを返すrollOver関数を

使ってこのハンドラを実行しているスプライト上にカーソルがあるかどう

かを判定し、スプライト上からカーソルがない場合はexit repeatキーワー

ドによってリピートループを終了します。

⇒論理式rollOver(spriteNum)に前に論理演算子notが使われているので、ス

プライト上にカーソルがあるときはFALSE、スプライト上にカーソルが

ないときはTRUEになります。

始め→spriteNumパラメータはthe

spriteNum of meと同じ値です。

→終わり

•set the member of sprite spriteNum = pStartBtnNum + n

スプライトに表示するキャストメンバーをpStartBtnNumパラメータにカウ

ンタ変数nの値を加えたキャストメンバー番号を持つキャストメンバーに

変更します。

始め→the member of spriteプロパ

ティはスプライトに表示する

キャストメンバーを特定するス

プライトプロパティです。→終

わり

•updatestage

updatestageコマンドを実行し、ステージを再描画します。

⇒ステージの再描画は再生ヘッドがフレームを移動するときに行われます

が、再生ヘッドの移動を伴わないリピートループ中に表示するキャストメ

ンバーを変更してもステージに表示される画像情報は更新されません。

updatestageコマンドはリピートループ中にアニメーションを行うときやス

テージ情報を直ちに更新したいときに使用してください。

•wait 3

ユーザー定義ハンドラwaitを呼び出し、引数に「3」を渡して実行しま

す。

•end repeat

end repeatはリピート文の終了を表すキーワードです。カウンタ変数nの値

が終了値であればリピート文を終了し、そうでなければカウンタ変数nに

1を加えてリピート文を繰り返します。

Page 88: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

88

第3章

入門編

図3.49カップアニメーション-2

•on reverseAnimation

カスタムメッセージreverseAnimationに対応するユーザー定義ハンドラで

す。

•set vNowBtnNum = getNowBtnNum()

ユーザー定義ハンドラgetNowBtnNumを実行し、getNowBtnNumハンドラ

からの戻り値をローカル変数vNowBtnNumにセットします。

•repeat with n = vNowBtnNum down to 0

repeat withはカウンタ変数が設定した値になるまでステートメントを繰り

返し実行するためのキーワードです。ここでは、カウンタ変数nの値が

ローカル変数vNowBtnNumの値から0になるまでリピート文を繰り返しま

す。

書式

repeat with [カウンタ変数] = [初期値] down to [終了値]

⇒ローカル変数vNowBtnNumの値が「1」、pTotalBtnNumパラメータの値が

「10」の場合、repeat with n = 1 to 9というステートメントを実行し、カウ

ンタ変数nの値が9になるまでリピートループを続けます。

•set the member of sprite spriteNum = pStartBtnNum + n

スプライトに表示するキャストメンバーをpStartBtnNumパラメータにカウ

ンタ変数nの値を加えたキャストメンバー番号を持つキャストメンバーに

変更します。

Page 89: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

89

第3章

入門編

•updatestage

updatestageコマンドを実行し、ステージを再描画します。

•wait 3

ユーザー定義ハンドラwaitを呼び出し、引数に「3」を渡して実行します。

•end repeat

end repeatはリピート文の終了を表すキーワードです。カウンタ変数nの値

が終了値であればリピート文を終了し、そうでなければカウンタ変数nか

ら1を引いてリピート文を繰り返します。

図3.50カップアニメーション-3

•on getNowBtnNum

カスタムメッセージgetNowBtnNumに対応するユーザー定義ハンドラで

す。

•return value(char 2 of the name of member (thememberNum of sprite spriteNum) of castLibpCastLibNum)

1)the name of memberプロパティを使って現在スプライトに表示してい

るキャストメンバーのキャストメンバー名を特定します。

2)次に、文字列内の指定した位置にある文字を取り出すchar ... ofキー

ワードを使ってキャストメンバー名の2文字目の文字を取り出します。

3)最後にvalue関数を使って取り出した文字を数値として返し、このハ

ンドラを終了します。

⇒valueは文字列の数値を返す関数で、フィールドキャストメンバーに入

力した数値文字列などのデータを数値として使用するときに使用します。

Page 90: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

90

第3章

入門編

⇒このハンドラから返される数値は、このハンドラをユーザー定義関数と

して呼び出しているon forwardAnimationハンドラとon reverseAnimationハ

ンドラのgetNowBtnNum()に返されます。

図3.51カップアニメーション-4

•on wait tick

カスタムメッセージwaitに対応するユーザー定義ハンドラです。

•set endTime = ticks() + tick

コンピュータが起動してから現在までの時間を返すticks関数を使って現在

のticksを求め、その値に待ち時間として使用する引数tickの値を加えて、ローカル変数endTimeにセットします。

⇒1tickは1/60秒です。(60 tick = 1秒)

•repeat while ticks() < endTime

end repeat

repeat whileは指定した条件がFALSEになるまでステートメントを繰り返

し実行するためのキーワードです。ここでは現在のticks値がローカル変数

endTimeより小さい間(指定時間に達するまで)リピートループを続けます。

⇒このrepeat文には実行するステートメントが存在しないため、実際には

指定時間(tick)のポーズを実行していることになります。

図3.52カップアニメーション-5

Page 91: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

91

第3章

入門編

•on beginSprite me

再生ヘッドがスプライトの開始フレームに到達し、スプライトの再生(表

示)が始まるときに発生するbeginSpriteメッセージに対応するイベントハ

ンドラです。beginSpriteメッセージは、スプライトスクリプトとフレーム

スクリプト以外には送られず、prepareFrameメッセージの前に発生するの

で、スプライトの初期化スクリプトを実行するのに適しています。また、

endSpriteハンドラ内ではgo、play、updateStageコマンドは使用できませ

ん。

•set pCastLibNum = the castLibNum of sprite spriteNum

the castLibNum of spriteプロパティを使って現在スプライトに表示してい

るキャストメンバーが登録されたキャストライブラリ番号を特定し、

pCastLibNumパラメータにセットします。

•set pStartBtnNum = the number of member (the memberof sprite spriteNum) of castLib pCastLibNum

the number of memberプロパティを使って現在スプライトに表示している

キャストメンバーのキャストメンバー名を特定し、pStartBtnNumパラメー

タにセットします。

図3.53カップアニメーション-6

•on endSprite me --

再生ヘッドがスプライトの終了フレームを抜け出て、スプライトの再生

(表示)が終わるときに発生するendSpriteメッセージに対応するイベント

ハンドラです。endSpriteメッセージは、スプライトスクリプトとフレーム

スクリプト以外には送られず、exitFrameメッセージの後に発生するの

で、スプライトの初期化スクリプトを実行するのに適しています。また、

endSpriteハンドラ内ではgo、play、updateStageコマンドは使用できませ

ん。

⇒このビヘイビアにはendSpriteハンドラ内で実行するステートメントはあ

りません。

Page 92: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

92

第3章

入門編

•on getPropertyDescriptionList

ビヘイビアインスペクタを操作したときに送られるメッセージに対応する

イベントハンドラです。ビヘイビアインスペクタのパラメータ設定ダイア

ログボックスを使ってパラメータを設定する場合は、このハンドラ内でプ

ロパティリストを作成してください。また、ユーザーによる設定が必要な

いパラメータはLingoで直接設定することができます。

•set descriptionList = [:]

空のプロパティリストを作成し、ローカル変数descriptionListにセットし

ます。

⇒空のプロパティリストを作成することをプロパティリストの初期化とい

います。

•addProp descriptionList, #pTotalBtnNum, [#comment :"アニメーションキャスト数:", #forma : #integer, #default: 10, #range : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ]

#pTotalBtnNumパラメータのプロパティを設定し、ローカル変数

descriptionListに加えます。

#formatプロパティにはパラメータの属性(書式)をシンボルで指定。

(整数)

#defaultプロパティにはパラメータの初期値を指定。(10)

#commentプロパティにはパラメータ設定ダイアログボックスに表示する

ラベル名を文字列で指定。(アニメーションキャスト数:)

•return descriptionList

ローカル変数「descriptionList」にセットしたプロパティリストをスプラ

イトオブジェクトに返します。

#pTotalBtnNumプロパティ

図3.54パラメータ設定ダイアログボックス

Page 93: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

93

第3章

入門編

■カップナビゲーション 「go to movie」

このビヘイビアを持つスプライトの表示エリアを4分割し、クリックした

位置によって異なるムービーにジャンプするビヘイビアです。ジャンプ先

のムービーは、パラメータ設定ダイアログボックスの入力フィールドを

使って設定します。第2章ではジャンプ先のムービーを作っていないの

で、ボタンをクリックするとメッセージウインドウに実行するステートメ

ントが表示されます。

property pJumpMovie, pQuitMovie, pPreturnMovie,pMenuMovieproperty jumpRect, quitRect, returnRect, menuRectproperty spriteNum

on mouseUp put "go to movie " & string(getBtnPosition()) -- go to movie string(getBtnPosition())end

on getBtnPosition set theMousePoint = point(the mouseH, the mouseV)

if inside(theMousePoint, jumpRect) then return pJumpMovie

else if inside(theMousePoint, quitRect) then return

pQuitMovie

else if inside(theMousePoint, returnRect) then return

pReturnMovie

図3.55メッセージウインドウ

Page 94: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

94

第3章

入門編

else if inside(theMousePoint, menuRect) then return

pMenuMovie

end

on beginSprite set vBtnRect = the rect of sprite spriteNum

set vLeft = the left of vBtnRect

set vTop = the top of vBtnRect

set vRight = the right of vBtnRect

set vBottom = the bottom of vBtnRect

set vCenterH = vLeft + ((vRight - vLeft) / 2)

set vCenterV = vTop + ((vBottom - vTop) / 2)

set jumpRect = rect(vLeft, vTop, vCenterH, vCenterV)

set quitRect = rect(vCenterH, vTop, vRight, vCenterV)

set returnRect = rect(vLeft, vCenterV, vCenterH, vBottom)

set menuRect = rect(vCenterH, vCenterV, vRight, vBottom)

end

on getPropertyDescriptionList set descriptionList = [:]

addProp descriptionList, #pJumpMovie, [#comment : "JUMPボタンを

押したときのジャンプ先ムービー名:", #format : #string, #default :

"Menu"]

addProp descriptionList, #pQuitMovie, [#comment : "QUITボタン

を押したときのジャンプ先ムービー名:", #format : #string, #default :

"Menu"]

addProp descriptionList, #pReturnMovie, [#comment : "RETURNボ

タンを押したときのジャンプ先ムービー名:", #format : #string, #default

: "Menu"]

addProp descriptionList, #pMenuMovie, [#comment : "MENUボタン

を押したときのジャンプ先ムービー名:", #format : #string, #default :

"Menu"]

return descriptionList

end

スクリプトの解説

•property pJumpMovie, pQuitMovie, pPreturnMovie,

pMenuMovie

property jumpRect, quitRect, returnRect, menuRect

property spriteNum

このビヘイビアで「pJumpMovie」「pQuitMovie」「pPreturnMovie」

「pMenuMovie」「jumpRect」「quitRect」「returnRect」「menuRect」

「spriteNum」をパラメータとして使うことを定義します。

Page 95: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

95

第3章

入門編

•on mouseUp

put "go to movie " & string(getBtnPosition())

mouseUpメッセージを受け取ったときにユーザ定義関数getBtnPosition()か

らの戻り値をstring関数を使って文字列に変換し、メッセージウインドウ

に表示します。

⇒ジャンプ先のムービーが制作中のときはメッセージウインドウやテキス

トフィールド、alertダイアログなどを使って、実行時のスクリプトを表示

しておきます。

•-- go to movie string(getBtnPosition())

このビヘイビアではコメントアウトしていますが、実際にはユーザ定義関

数getBtnPosition()からの戻り値をムービー名に持つムービーへジャンプす

るためのステートメントです。

⇒ムービーをジャンプできるようになったら、put "go to movie " ...のス

テートメントをコメントアウトし、go to movie ...のステートメントを実

行してください。

図3.56カップナビゲーション-1

•on getBtnPosition

カスタムメッセージgetBtnPositionに対応するユーザー定義ハンドラで

す。このハンドラは、マウスをクリックした位置を判定して、その結果を

返すユーザー定義関数として使用しています。

図3.57カップナビゲーション-2

Page 96: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

96

第3章

入門編

•set theMousePoint = point(the mouseH, the mouseV)

カーソルの水平位置を返すthe mouseH関数と垂直位置を返すthe mouseV関

数 を 使 っ て ス テ ー ジ 上 の マ ウ ス 位 置 を 特 定 し 、 ロ ー カ ル 変 数

theMousePointに座標値を表すpoint関数としてセットします。

•if inside(theMousePoint, jumpRect) then return pJumpMovie

jumpRectパラメータで指定したエリア内にカーソルがあるかどうかを判定

し、指定したエリア内にカーソルがあればこのハンドラの呼び出し元に

pJumpMovieパラメータの値を返してgetBtnPositionハンドラを終了しま

す。

⇒insideはpoint関数で指定した座標がrect関数で指定した矩形の内側にあ

るかどうかを調べる関数です。

書式

inside( point( [水平位置], [垂直位置]), rect(left, top,

right, bottom))

ここではpoint( [水平位置], [垂直位置])とrect(left, top, right, bottom)をそれ

ぞれ変数にセットしてからinside関数を使用しています。

•else if inside(theMousePoint, quitRect) then returnpQuitMovie

jumpRectパラメータで指定したエリア内にカーソルがなければ、quitRect

パラメータで指定したエリア内にカーソルがあるかどうかを判定し、指定

したエリア内にカーソルがあればこのハンドラの呼び出し元にpQuitMovie

パラメータの値を返してgetBtnPositionハンドラを終了します。

•else if inside(theMousePoint, returnRect) then returnpReturnMovie

quitRectパラメータで指定したエリア内にカーソルがなければ、returnRect

パラメータで指定したエリア内にカーソルがあるかどうかを判定し、指定

し た エ リ ア 内 に カ ー ソ ル が あ れ ば こ の ハ ン ド ラ の 呼 び 出 し 元 に

pReturnMovieの値を返してgetBtnPositionハンドラを終了します。

•else if inside(theMousePoint, menuRect) then returnpMenuMovie

returnRectパラメータで指定したエリア内にカーソルがなければ、

menuRectパラメータで指定したエリア内にカーソルがあるかどうかを判

定し、指定したエリア内にカーソルがあればこのハンドラの呼び出し元に

pMenuMovieの値を返してgetBtnPositionハンドラを終了します。

Page 97: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

97

第3章

入門編

図3.58カップナビゲーション-3

•on beginSprite

再生ヘッドがスプライトの開始フレームに到達し、スプライトの再生(表

示)が始まるときに発生するbeginSpriteメッセージに対応するイベントハ

ンドラです。ここではパラメータ設定ダイアログボックスで設定する必要

のない4つのプロパティ変数「jumpRect」「quitRect」「returnRect」

「menuRect」のパラメータ値をセットします。

図3.59カップナビゲーション-4

始め→beginSpriteメッセージ

は、スプライトスクリプトとフ

レームスクリプト以外には送ら

れず、prepareFrameメッセージ

の前に発生するので、スプライ

トの初期化スクリプトを実行す

るのに適しています。また、

endSpriteハンドラ内ではgo、

play、updateStageコマンドは使

用できません。→終わり

Page 98: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

98

第3章

入門編

•set vBtnRect = the rect of sprite spriteNum

スプライトの表示位置を特定するthe rect of spriteプロパティを使い、ス

テージ上のスプライトの表示位置をrect関数としてローカル変数vBtnRectに

セットします。

•set vLeft = the left of vBtnRect

ローカル変数vBtnRectの左端水平位置をローカル変数vLeftにセットしま

す。

•set vTop = the top of vBtnRect

ローカル変数vBtnRectの上端垂直位置をローカル変数vTopにセットしま

す。

•set vRight = the right of vBtnRect

ローカル変数vBtnRectの右端水平位置をローカル変数vRightにセットしま

す。

•set vBottom = the bottom of vBtnRect

ローカル変数vBtnRectの下端垂直位置をローカル変数vBottomにセットし

ます。

•set vCenterH = vLeft + ((vRight - vLeft) / 2)

スプライトの水平中心位置を計算し、ローカル変数vCenterHにセットしま

す。

•set vCenterV = vTop + ((vBottom - vTop) / 2)

スプライトの垂直中心位置を計算し、ローカル変数vCenterVにセットしま

す。

•set jumpRect = rect(vLeft, vTop, vCenterH, vCenterV)

スプライトの左上1/4の座標値をrect関数としてjumpRectパラメータにセッ

トします。

•set quitRect = rect(vCenterH, vTop, vRight, vCenterV)

スプライトの右上1/4の座標値をrect関数としてquitRectパラメータにセッ

トします。

•set returnRect = rect(vLeft, vCenterV, vCenterH,

vBottom)

スプライトの左下1/4の座標値をrect関数としてreturnRectパラメータに

セットします。

•set menuRect = rect(vCenterH, vCenterV, vRight, vBottom)

スプライトの右下1/4の座標値をrect関数としてmenuRectパラメータにセッ

トします。

Page 99: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

99

第3章

入門編

図3.60カップナビゲーション-5

⇒on getPropertyDescriptionListハンドラで作成するパラメータの役割は以

下の通りです。

#pJumpMovie(文字列)

JUMPボタンを押したときのジャンプ先ムービー名。

#pQuitMovie(文字列)

QUITボタンを押したときのジャンプ先ムービー名。

#pReturnMovie(文字列)

RETURNボタンを押したときのジャンプ先ムービー名

#pMenuMovie(文字列)

MENUボタンを押したときのジャンプ先ムービー名

#pJumpMovieパラメータ

#pQuitMovieパラメータ

#pReturnMovieパラメータ

#pReturnMovieパラメータ

図3.61パラメータ設定ダイアログボックス

Page 100: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

100

第3章

入門編

■msgの表示/非表示 「the visible of sprite」

カスタムメッセージによってスプライトに表示するキャストメンバーの表

示/非表示を切り替えるビヘイビアです。このビヘイビアは次に説明する

msgのコントロールビヘイビアから送られるメッセージによってステージ

上のスプライトの表示/非表示を切り替えます。

図3.62ステージ

property spriteNum

on showMsg set the visible of sprite spriteNum = trueend

on hideMsg set the visible of sprite spriteNum = falseend

on beginSprite set the visible of sprite spriteNum = falseend

on endSprite set the visible of sprite spriteNum = trueend

スクリプトの解説

•property spriteNum

このビヘイビアで「spriteNum」をパラメータとして使うことを定義しま

す。

Page 101: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

101

第3章

入門編

•on showMsg

set the visible of sprite spriteNum = true

カスタムメッセージshowMsgに対応するユーザー定義ハンドラです。この

ハンドラは、ステージ上にスプライトを表示するかどうかを特定するthe

visible of spriteプロパティを使って、現在のスプライトに表示するキャス

トメンバーをステージ上で見えなくします。

•on hideMsg

set the visible of sprite spriteNum = false

カスタムメッセージhideMsgに対応するユーザー定義ハンドラです。この

ハンドラは、ステージ上にスプライトを表示するかどうかを特定するthe

visible of spriteプロパティを使って、現在のスプライトに表示するキャス

トメンバーをステージ上で見えるようにします。

•on beginSprite

set the visible of sprite spriteNum = false

再生ヘッドがスプライトの開始フレームに到達し、スプライトの再生(表

示)が始まるときに発生するbeginSpriteメッセージに対応するイベントハ

ンドラです。ここでは、スプライトの開始時に現在のスプライトに表示す

るキャストメンバーをステージ上で見えなくします。

•endSprite set the visible of sprite spriteNum = true

再生ヘッドがスプライトの終了フレームを抜け出て、スプライトの再生

(表示)が終わるときに発生するendSpriteメッセージに対応するイベント

ハンドラです。ここでは、スプライトの終了時に現在のスプライトに表示

するキャストメンバーをステージ上で見えるようにします。

⇒ ユ ー ザ ー に パ ラ メ ー タ を 設 定 す る 必 要 が な け れ ば o n

getPropertyDescriptionListハンドラを使ってパラメータ設定ダイアログ

ボックスを作成する必要はありません。

■msgのコントロール 「sendSprite」

カーソルがボタンエリア内に入ったときに発生するmouseEnterメッセージ

とボタンエリア内から出たときに発生するmouseLeaveメッセージを使っ

て、pTargetSpriteNumパラメータに設定したスプライトへメッセージを送

るビヘイビアです。

Page 102: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

102

第3章

入門編

property pTargetSpriteNumproperty spriteNum

on mouseEnter sendSprite(pTargetSpriteNum, #showMsg)end mouseEnter

on mouseLeave sendSprite(pTargetSpriteNum, #hideMsg)end mouseLeave

on getPropertyDescriptionList set descriptionList = [:] addProp descriptionList, #pTargetSpriteNum,[#comment : "コントロールするスプライト番号:", #format :#integer, #default : 1 ] return descriptionListend

スクリプトの解説

•pproperty pTargetSpriteNum

property spriteNum

このビヘイビアで「pTargetSpriteNum」「spriteNum」をパラメータとして

使うことを定義します。

•on mouseEnter

sendSprite(pTargetSpriteNum, #showMsg)

カーソルがボタンエリア内に入ったときに発生するmouseEnterメッセージ

に対応し、pTargetSpriteNumパラメータに指定したスプライトへカスタム

メッセージ#showMsgを送ります。

•on mouseLeave sendSprite(pTargetSpriteNum, #hideMsg)

カーソルがボタンエリア内から出たときに発生するmouseLeaveメッセー

ジに対応し、pTargetSpriteNumパラメータに指定したスプライトへカスタ

ムメッセージ#hideMsgを送ります。

•on getPropertyDescriptionList

ビヘイビアインスペクタを操作したときに送られるメッセージに対応する

イベントハンドラです。ビヘイビアインスペクタのパラメータ設定ダイア

ログボックスを使ってパラメータを設定する場合は、このハンドラ内でプ

ロパティリストを作成してください。

Page 103: 第3章 Lingo入門編multimediastudio.sekiguch.com/D6/D6-3.pdf1 第 3 章 入 門 編 第3章 Lingo入門編 3.1スクリプトの種類と使い方 3.2ビヘイビアライブラリを極める

103

第3章

入門編

•set descriptionList = [:]

空のプロパティリストを作成し、ローカル変数descriptionListにセットし

ます。

⇒空のプロパティリストを作成することをプロパティリストの初期化とい

います。

•addProp descriptionList, #pTargetSpriteNum,[#comment : "コントロールするスプライト番号:", #format :#integer, #default : 1 ]

#comment プロパティにはパラメータ設定ダイアログボックスに表示する

ラベル名を文字列で指定。(コントロールするスプライト番号:)

#pTargetSpriteNumパラメータのプロパティを設定し、ローカル変数

descriptionListに加えます。

#format プロパティにはパラメータの属性(書式)をシンボルで指定。

(整数)

#default プロパティにはパラメータの初期値を指定。(1)

•return descriptionList

ローカル変数「descriptionList」にセットしたプロパティリストをスプラ

イトオブジェクトに返します。

図3.63パラメータ設定ダイアログボックス