Flash
if文で動きを制御する
1|前回の課題の解答
前回出した、ボタンを交互に切り替える課題ですが、 ポイントは、スクリプトをボタンに書いているかと、 プロパティを変える対象に、名前をつけているかでした。ボタンにスクリプトを書くときは、まず、ボタンを選択してください。
名前をつけるときは、対象を選択後プロパティパネルで変更する。
on(press){
b._visible = true;
a._visible = false;
}
Flashのはじめは、何を選択しているのかわかりにくいので、
何を選択しているか、確認しながら作業をするのがポイントです。
2|フレーム入るごとに、プロパティを変更させる。
今回は、ムービークリップの動かし方を解説します。 [ソースのダウンロード] 1.ステージにムービークリップを設置(形は何でもよい。)して、名前をmcとつける。
2.Flashの新規作成後、レイヤーを作成して、レイヤー名を「スクリプト」に変更
3.スクリプトレイヤーの1フレーム目を選択後、アクションパネルを開きます。
アクションパネルは、下の方に記述している場所が出てくるので、どこに書いているか確認するときに便利です。
4.今の位置から、ムービークリップのx座標を3動かしたいので、
以下のスクリプトを記述
mc._x = mc._x + 3;
5.パブリッシュプレビューすると、3ピクセル動いているが、スクリプトが1回しか実行されないので、動いたかどうか解りにくい。
1フレーム目にあるスクリプトをフレームが更新される度に、
スクリプトを実行したいので、「レイヤー1」の1フレームを選択後、
F5キーを押して、フレームを挿入する。

6.パブリッシュすると、ムービークリップが動くのが確認できます。
3|表記の簡略化
上の例では、3をプラスするのにmc._x = mc._x + 3;と書きましたが、
mc._x += 3;
と書いても、同じ意味になります。
プログラムは、省略してスクリプトを書く習慣があります。
mc._x += 1;を
mc._x ++;
また、
mc._x -= 1;を
mc._x --;と書いたりします。
4|if文
上の例でムービークリップの座標を足し続けると、画面の端で見えなくなります。 そこで、画面の端に来たときに、画面の反対側に来るようにスクリプトを書き直します。
mc._x += 10;
if(mc._x >= 550){
mc._x = 0;
}
if文は()の中のある条件の時、{}の中の処理がされます。
次に、動きが横だけでは面白くないので、縦に動かします。
mc._x += 10;
mc._y += 10;
if(mc._x >= 550){
mc._x = 0;
}
画面の下側で、ムービークリップが見えなくなるので、
条件を追加します。
mc._x += 10;
mc._y += 10;
if(mc._x >= 550){
mc._x = 0;
}else if(mc._y >= 400){
mc._y = 0;
}
else ifは、前のif文に当てはまらなかった、条件を追加できます。
さらに、ifと else ifで当てはまらなかったものは、else文の条件に入ります。
mc._x += 10;
mc._y += 10;
if(mc._x >= 550){
mc._x = 0;
}else if(mc._y >= 400){
mc._y = 0;
}else if(mc._y>200){
mc._alpha = 40;
}else{
mc._alpha = 100;
}
画面の下で半透明、上で通常の表示になります。
5|ifの条件を絞り込む
下の図のように、条件AかつBの両方を満たした条件のとき、
このように、条件を&&でつなげて書きます
if(A&&B){}
mc._x += 10;
if(mc._x >= 550){
mc._x = 0;
}else if(mc._x>100 && mc._x<300){
mc._alpha = 40;
}else{
mc._alpha = 100;
}
上のスクリプトでは、mcのx座標が100以上 かつ、300以下なので、
ステージの中央あたりで、半透明になります。
下の図のように、条件AとBを足した条件のとき、
||で条件をつなげて、書きます。
if(A||B){}
6|フレームを使わないスクリプト
スクリプトを毎フレームごとに、実行させるために、2フレーム目を追加しましたが、 追加しなくてもフレームごとにスクリプトを実行する方法があります。
レイヤー1の2フレームを、右クリック(macではcontorolクリック)で削除します。
onEnterFrame = function(){
mc._x += 10;
}
onEnterFrame = function(){}の中に書かれたスクリプトは、
毎フレームごとに実行されます。
7|三角形の奇跡を書く
if文とonEnterFrameの組み合わせで、三角形を作ります。
onEnterFrame = function(){
if(mc._x>200 && mc._y<350){
mc._x += 2;
mc._y += 4;
}else if(mc._x>50 && mc._y>=350){
mc._x -= 4;
}else{
mc._x += 2;
mc._y -= 4;
}
}
辺の動く範囲をxy座標で確定して、
動きの式(mc._x += 2;等)を書いていくと組みあがってきます。
何度もパブリッシュして、動きを完成させてください。
8|速度を変化させる
今までは一定の速度でしたが、 速度を変えてみたいと思います。 速度の変数speedを定義して、動きのパラメータを置き換えます。
speed = 2;
onEnterFrame = function(){
if(mc._x>200 && mc._y<350){
mc._x += speed;
mc._y += speed*2;
}else if(mc._x>50 && mc._y>=350){
mc._x -= speed*2;
}else{
mc._x += speed;
mc._y -= speed*2;
}
}
speed変数を2にしたので、
2はspeedに
4はspeedの2倍なので、speed*2とします。
(*は、掛け算の意味になります。)
on(press){
speed = 10;
}
ボタンを押すとspeedが3から10に変わるので、速度が早くなります。