Flash 使い方教室2〜初級スクリプト編〜
作成者:TOSSオホーツク・
山田正和
作成日:2005年1月7日(金)
最終更新日:2005年1月9日(土)
©Two-Way All rights reserved
TOSSランドは世界一の教育情報ポータルサイトです。
TOSSランドの正式名称はインターネットランド(登録商標4468327号)と言います。
課題16:もしも80点以上なら、合格ページに飛びなさい。→if (X >= 80)
●ステップ1:もしも100点なら、合格ページに飛びなさい。
- 今回は「条件式」というものを勉強します。(趣意説明)
- 練習用ファイルをダウンロードしなさい。
→練習用ファイル(kadai16.fla)
- ダウンロードしたファイルをダブルクリック。
"Flash"が起動し、ファイルを開きます。
- この練習用ファイルは、「2択クイズ」のサンプルです。
課題14〜15で作成したものを、ほんの少しだけ改造しました。
- どこを改造したのか、確認してみましょう。(趣意説明)
- 「タイムライン」の、8フレーム目(最終フレーム)をクリック。(*1)
ステージには「合格おめでとう!」と書かれています。
- 「タイムライン」の、7フレーム目(最後から2つ目)をクリック。(*1)
ステージには「結果発表」と書かれています。
- 7フレーム目の「結果発表ページ」は、前回の課題15にもありました。
8フレーム目の「合格おめでとう!ページ」は、前回の課題15にはありませんでした。
この「合格おめでとう!ページ」の追加こそ、最も大きな改造点です。(*2)
- では、いよいよ「条件式」の学習に入りましょう。
まずは、習うより慣れてもらいます。
- 「タイムライン」で、「スクリプト」レイヤーのロックを解除しなさい。
- 「タイムライン」の、「スクリプト」レイヤーの、7フレーム目をクリック。
- そのまま右クリック→「空白キーフレームの挿入」。
7フレーム目に、空っぽのキーフレームを意味する白丸が追加されました。(*3)
よく見ると、6フレーム目と8フレーム目に、縦長の長方形が追加されています。(*4)
- そのまま(「スクリプト」レイヤーの7フレーム目が反転表示されたまま)、「アクション」パネルを開きなさい。(*5)
- 「アクション」パネルの1行目をクリック。
-
- 文字入力は「半角英数字」になっていますか?
もし「全角(漢字入力)」になっていれば、「半角英数字」に切り替えなさい。
- キーボードを「ESC」→「I」→「F」と指で押しなさい。(*6)
- 英語表示の「小窓」が開きますが気にしないでください。
そのままキーボードで、"X==100"と入力しなさい。
- キーボードの「矢印」キーを何度か指で押して、「黒の縦線」を1行目の行末に動かしなさい。
- キーボードを「ESC」→「N」→「F」と指で押しなさい。
課題4で学習した、"nextFrame();(次のフレームに進め)"というスクリプトが書き込まれます。
- シマシマ(縞々)のマークをクリックしなさい。
書き込んだスクリプトが自動整形(フォーマット)されて、見やすくなります。(*7)
- 今書き込んだスクリプトの意味を、体験してもらいます。(趣意説明)
まず「Ctrl」+「Enter」で「ムービー・プレビュー」しなさい。
- 100点と、それ以外の点をとって、結果を比べてご覧なさい。
ちなみに「A→B→A→A→B」で100点になります。
→動作確認用白玉ファイル(16a.swf)
- お分かりでしょうか?
100点をとった時と、それ以外の点数を取った時では、画面表示が異なります。
- 点数によって、違うページを表示する。
……これが、このステップで書いたスクリプト(呪文)の「働き」です。
・点数(変数X)が100点→「合格おめでとうページ」
・点数(変数X)が100点以外→「普通のページ(結果発表ページ)」
- なぜ、そうなるのか。
次のステップで、もう少し勉強してみましょう。
- 「ムービー・プレビュー」を終了しなさい。
*1:4つあるレイヤーのどれをクリックしても構いません。
*2:細かな改造点は幾つかあります。
1フレーム目の「名前を入力してからクリック」の注意書きなどです。
ですが一番大きく、重要な改造点は「合格おめでとう!ページ」の追加です。
*3:現在は、クリック状態(選択状態)なので、白黒反転表示されていますが。
*4:この縦長長方形は、「ここまで同じフレーム(内容)が続いている」という意味の記号です。
ですから今は、1〜6フレームが同じ内容、7〜8フレームが同じ内容という意味になります。
*5:画面の下の方、「▼アクション-フレーム」のところをクリック。
"Flash MX"の場合は、「スクリプト」レイヤーの7フレーム目を右クリック→「アクション」でも同様の結果になります。
*6:必ず「半角英数字」に切り替えてから、指で押してください。
もし「全角(漢字入力)」になっていると、画面写真のようにはなりません。
*7:キーボードで「Ctrl」+「Shift」+「F」と同時押ししても、同じ結果になります。
●ステップ2:もしも80点以上なら、合格ページに飛びなさい。
- 前のステップで書いたスクリプトは、100点だけが「合格」でした。
if (X == 100) {
nextFrame();
}
- 今度は80点以上が「合格」になるようにします。(趣意説明)
スクリプトを次のように書き直しなさい。
if (X >= 80) {
nextFrame();
}
- 「ムービー・プレビュー」で確認してご覧なさい。(*1)
80点以上(80点と100点)で「合格おめでとうページ」が表示されます。
それ以外の点数(0点、20点、40点、60点)では「結果発表ページ」が表示されます。
100点だけではなく、80点も「合格」に入ります。
→動作確認用白玉ファイル(16b.swf)
- 「ムービー・プレビュー」を終了しなさい。
- 今度は80点を越えたら「合格」になるようにします。(趣意説明)
スクリプトを次のように書き直しなさい。
「イコール」を1個消してしまうだけです。
if (X > 80) {
nextFrame();
}
- 「ムービー・プレビュー」で確認してご覧なさい。(*1)
80点を越えたら(100点なら)「合格おめでとうページ」が表示されます。
それ以外の点数(0点、20点、40点、60点、80点)では「結果発表ページ」が表示されます。
80点は「合格」に入りません。
→動作確認用白玉ファイル(16c.swf)
- 「ムービー・プレビュー」を終了しなさい。
- 今度は60点を越えたら「合格」になるようにします。(趣意説明)
スクリプトを次のように書き直しなさい。
if (X > 60) {
nextFrame();
}
- 「ムービー・プレビュー」で確認してご覧なさい。(*1)
60点を越えたら(80点、100点なら)「合格おめでとうページ」が表示されます。
それ以外の点数(0点、20点、40点、60点)では「結果発表ページ」が表示されます。
60点は「合格」に入りません。
→動作確認用白玉ファイル(16d.swf)
- 何となくルールが分かって来たでしょうか?
次のステップで、今回のスクリプトの意味を解説します。
*1:前のステップでも書きましたが、「A→B→A→A→B」で100点になります。
意図的に間違えて、80点や60点などの点数もとってみてください。
●ステップ3:「もしも〜」の呪文について読みなさい。
- 今回「習うより慣れろ」で学習しているスクリプトの基本形は、次の通りです。
if () {
}
このスクリプトの意味は、「もしも( )なら、{ }しなさい」です。
英語の"if"は、「もしも〜なら」という意味ですから、中学生以上の方には理解しやすいでしょう。
- ステップ1と2では、{ }の中に"nextFrame();(次のフレームへ行け)"と書きました。
if () {
nextFrame();
}
ですから意味は、「もしも( )なら、次のフレームに行きなさい」となります。
「もしも〜なら」と「次のフレームへ行け」の合体呪文になるわけです。
- "if"のすぐ後ろにある( )の中には、「文字の式」を使って「条件」を書き込みます。
まるで小学校の算数のように「X=100」や「X>80」などの「文字の式」を書くのです。
- 「条件」を指定する「文字の式」なので、「条件式」と呼びます。
- 一番読み取りやすい「条件式」は、不等号でしょう。
次のように( )の中を書くと、「X>80(エックス・大なり・80)」という意味になります。
if (X > 80) {
nextFrame();
}
スクリプト全体では「もしもXが80より大きかったなら、次のフレームに行きなさい」という意味になります。
- ちょっと読み取りに注意が必要なのは、「X≧80(エックス・大なりイコール・80)」です。
「二段重ね」にせず、左右に並べて書くからです。(*1)
if (X >= 80) {
nextFrame();
}
スクリプト全体では「もしもXが80以上なら、次のフレームに行きなさい」という意味になります。
- 更に注意が必要なのは、「X=80(エックス・イコール・80)」です。
「イコール」を2個並べて書かなければならないからです。(*2)
if (X == 80) {
nextFrame();
}
スクリプト全体では「もしもXが80なら、次のフレームに行きなさい」という意味になります。
- 「条件式」には、まだ幾つか種類があります。
ですが煩雑になるので、今回は以上3種類(X==80 X>=80 X>80)の紹介に留めておきます。(*3)
*1:「≧」が全角文字にしかないからです。
スクリプトに限らず、プログラムの類は半角文字で書くのが原則なのですが、半角文字には「≧」が無いのです。
そこで苦肉の策として、半角文字の記号を2個並べて「>=」とするのです。
*2:スクリプトの世界では、"X=80"は、"X←80"の意味になるからです。
"X=80"が「エックスという箱(変数)を用意して、80を入れなさい」という意味になってしまうのです。
そこで苦肉の策として、イコールを2個並べることで「エックスの中身=80」という意味を表しているのです。
*3:勘の良い人は、「X<80」や「X≦80」を意味する「条件式」なら予想できるでしょう。
●ステップ4:フレーム番号で飛ばしなさい。
- 最後に、ちょっと発展課題を学習します。(趣意説明)
- 次のようにスクリプトを書き直しなさい。
キーボードを使って、課題ファイルの「アクション」パネルの中を書き直すのです。
if (X >= 80) {
nextFrame();
}
全く同じスクリプトをステップ2で書いていますから、それほど難しくないでしょう。
- 「ムービー・プレビュー」で確認してご覧なさい。
80点以上(80点と100点)で「合格おめでとうページ」が表示されます。
それ以外の点数(0点、20点、40点、60点)では「結果発表ページ」が表示されます。
→動作確認用白玉ファイル(16b.swf)
- 「ムービー・プレビュー」を終了しなさい。
- ここで、簡単な確認問題を出します。(趣意説明)
- 今書いたスクリプトの意味は「もしも得点(変数X)が80点以上なら、次のフレームに行きなさい」です。
では「次のフレーム」とは、何番目のフレームのことですか?
数字をノートに書きなさい。(*1)
- ……お分かりですか?
今、何番目のフレームにスクリプトを書いているのかが分かれば簡単です。
- 正解は「8」です。
「次のフレーム」とは「8番目のフレーム(8フレーム目)」を意味します。
今「7番目のフレーム(7フレーム目)」にスクリプトを書いているのですから、次は「8」になります。
- では、次のようにスクリプトを書き直しなさい。
「BS」キーなどで"nextFrame();"を消してから、"gotoAndStop(8);"と書き足すのです。(*2)
if (X >= 80) {
gotoAndStop(8);
}
意味は「もしも得点(変数X)が80点以上なら、8番目のフレームに行きなさい」です。
- どうなるか予想できますか?
予想してから、「ムービー・プレビュー」で確認してご覧なさい。
→動作確認用白玉ファイル(16e.swf)
- 予想通りだったでしょうか?
"gotoAndStop(8);"でも、"nextFrame();"と全く同じように機能します。
「7番目のフレーム」にスクリプトを書いているのですから、「8番目へ」と指定しても、「次へ」と指定しても、全く同じ結果になるのです。
- このように"if(もしも〜なら)"と組み合わせるスクリプトは、"nextFrame();"に限りません。
フレーム番号の指定を間違えなければ、"gotoAndStop();"などを使っても良いのです。(*3)
- 長くなって来たので、今回の学習はここまでです。
- 「ムービー・プレビュー」を終了しなさい。
- 「上書き保存」してから、"Flash"を終了しなさい。
*1:適当なノートが無ければ、メモ用紙なででも構いません。
この課題ページを印刷(プリントアウト)した紙の、余白でも構いません。
*2:課題8で学習したスクリプトですが、覚えていますか?
「ESC」→「G」→「S」→「8」と指でキーを押せば簡単に入力できます。
*3:"nextFrame();"と"gotoAndStop();"のどちらを使った方が良いかは、作品全体の構造によって違います。
全体構造によって「どちらが使いやすい」とか、「どちらしか使えない」といった事が起こります。
今回の作品は、"nextFrame();"を使った方が楽な構造をしています。