|
if文 & else if文 は,Suzuka や ActionScript 特有なものではありませんし,そこらじゅうで説明されていますね。
「 if(○○){△△} 」 = 「もし○○だったら△△する。」 というような条件分岐文です。
if文の ( ) 内の値が true であれば { } 内のステートメントが実行されます。
if文 については,そこらじゅうで説明されているので,詳細な解説などは特に必要ないかと思われますが,この if文 はわかっていても,たまに「分岐させる条件が見つからない!」と,妙なところで立ちすくんでしまう方がいらっしゃるようなので,ここでは if文 自体の詳しい説明ではなく,Flash で if文を使うときの実用的なものを一例だけ紹介させていただきます。
「分岐させる条件が見つからない!」ときというのは,どういうときかと言うと次のようなときのようです。
「Aボタン」を押す→「シーンX」→「シーンAにジャンプ」
「Bボタン」を押す→「シーンX」→「シーンBにジャンプ」
「Cボタン」を押す→「シーンX」→「シーンCにジャンプ」
つまり,
「どのボタンを押しても「シーンX」が再生されるけど,
その「シーンX」後の表示を押したボタンによって変えたい。」
というような場合です。
このようなときは,if文を使えば簡単に解決できます。結局,条件なんて何でも良いのです。そしてその条件によってどう分岐しても良いのです。「条件が見つからなければ自分で作れば良い。」ということです。
ParaDraw Ver.0.3a4 で作成した絵を,Suzuka Ver.0.7.3.2 でアニメーションさせています。
また,ものを動かすこと自体にはActionScriptは一切使用していません。シンプルなトゥイーンアニメーションです。
「R」ボタンをクリックしても,「G」ボタンをクリックしても,「B」ボタンをクリックしても,
同じアニメーションが再生されますが,行きつく先が「R」,「G」,「B」のように違うフレームです。
動きを制御している ActionScript は次のようになっています。
まず,_root(メイン) の フレーム1 には次のように書いて,とりあえずアニメーションをストップさせています。
そして,ボタン「R」には次のように書いています。
on (release) {
// 変数 col の値を R にする
col = "R";
// フレーム5 に進めて再生
gotoAndPlay(5);
}
|
ボタン「G」には次のように書いています。
on (release) {
// 変数 col の値を G にする
col = "G";
// フレーム5 に進めて再生
gotoAndPlay(5);
}
|
ボタン「B」には次のように書いています。
on (release) {
// 変数 col の値を B にする
col = "B";
// フレーム5 に進めて再生
gotoAndPlay(5);
}
|
「条件が見つからなければ自分で作れば良い。」わけです。
勝手に,変数 col などというものを作りだして,その勝手な変数に勝手な値「R」「G」「B」を代入していますが,変数名は col でも,iro でも何でも良いです。半角英字から始まっていて半角英数文字の文字列であればたいてい何でもかまいません。
変数の命名に関する詳細は次のページを参考にしてください。
「[228649]Flash での命名術」
http://support.adobe.co.jp/faq/faq/qadoc.sv?228649+002
また,値もわかりやすいかと思い,「R」「G」「B」にしていますが,実際は,"太郎" とか "二朗" とかでもかまいません。
とにかく,ボタンのスクリプトで,勝手な変数に勝手な値を代入しておいて,フレーム5 に進めています。
そして,_root(メイン) の フレーム100 には次のように書いています。
// もし 変数 col の値が R であれば
if(col == "R"){
// フレーム2 に戻してストップ
gotoAndStop(2);
// もし 変数 col の値が G であれば
}else if(col == "G"){
// フレーム3 に戻してストップ
gotoAndStop(3);
// それ以外の場合は
}else{
// フレーム4 に戻してストップ
gotoAndStop(4);
}
|
これで,勝手に作った変数の値によって,最終的に違うフレームにジャンプします。
gotoAndStop などで フレーム移動させるのではなくて,getURL や loadMovie などで,違うページや違うムービーを表示しても良いと思います。
ちなみに,上の if文 の ( ) の中の「 == 」は等価演算子です。
「=」の代入演算子と間違えやすいので気を付けてください。
col = "R" ←変数 col に "R" を代入
col == "R" ←変数 col は "R" と等価であるかないか
というように,意味が全く違います。
なお,実はこの動作をさせるのには if文 が絶対に必要であるわけではありません。
もっと簡素な方法もたくさんありますが,if文 を使ったものの説明に使わせていただきました。
|