- ベストアンサー
Flash CS3での画像移動に関する疑問
- Flash CS3のAS2.0を使って、画像を左右に移動させる方法について疑問があります。具体的には、ステージの幅を120とし、7枚の画像を連続して表示し、左右ボタンを使って移動させたいです。ボタンの配置やアクションスクリプトの記述について教えてください。
- 1フレーム目には左向きのボタンを配置して、クリックすると画像を左に移動させることができます。また、7番目の画像まで移動すると3フレーム目に進むように設定しています。しかし、2から6番目の画像では、左右のボタンをどのように表示させれば良いのかわかりません。どのようなアクションスクリプトを記述すれば良いでしょうか。
- 1番目の画像では右向きのボタンのみ必要です。この場合、どのようにアクションスクリプトを記述すれば良いでしょうか。全体の動きについて教えていただけると助かります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 1フレームめにアクションスクリプトを記述するのが > 当たり前と思っているのですがこれは間違いになりますか。 そこに間違いとか正解とかはないでしょう。 1フレーム目のにスクリプトを書ける状況であった上で 1フレーム目のみにスクリプトを書きたい場合はそうすれば良いだけです。 1フレーム目のみにスクリプトを集約することができない場合はそうする必要はありません。 また 1フレーム目のみにスクリプトを集約することができたとしても,そうしたくない場合もそうする必要はありません。 「こうすべき」とかはありません。 「できることを臨機応変に最大限に生かす」という方向で考えるのが大切だと思います。 ちなみにご質問のものの場合は, 1フレーム目のみにスクリプトを集約することができます。 (過去のバージョンでしたらできない場合もありますが ActionScript 2.0(Flash Plaeyr 6 以上) でしたら十分できます。) また "私は" 1フレーム目のみにスクリプトを集約させたいと思います。 ですから "私だったら" 次のようにします。 まず 「→」ボタンと「←」ボタンと「my_mc」をフレーム1だけに配置します。 そして 「→」ボタンと「←」ボタンにインスタンス名を付けます。 ここでは 「→」ボタン には「R_btn」というインスタンス名を付け 「←」ボタン には「L_btn」というインスタンス名を付けるものとしておきます。 ※【図↓】参照のこと そしてタイムラインのフレーム1には次のように書きます。 //---------------------------------------- //画像1枚の横幅を設定 var g_w:Number = 120; //画像の枚数を設定 var g_n:Number = 7; //「L_btn(←ボタン)」を非表示にしておく L_btn._visible = false; //カウンタ用変数 var cnt:Number = 0; //「R_btn(→ボタン)」クリック時の動作を定義 R_btn.onRelease = function():Void { //もしカウンタが 画像の枚数-1 未満であれば if (cnt < g_n-1) { //画像の横幅分 左へ移動 my_mc._x -= g_w; //「L_btn(←ボタン)」を表示する L_btn._visible = true; //なおかつカウンタが 画像の枚数-2になれば if (cnt == g_n-2) { //「R_btn(→ボタン)」を非表示にする R_btn._visible = false; } //カウンタに1を加算 cnt++; } }; //「L_btn(←ボタン)」クリック時の動作を定義 L_btn.onRelease = function():Void { //もしカウンタが 0 より大きい場合は if (cnt > 0) { //画像の横幅分 右へ移動 my_mc._x += g_w; //「R_btn(←ボタン)」を表示する R_btn._visible = true; //なおかつカウンタが 1 になれば if (cnt == 1) { //「L_btn(→ボタン)」を非表示にする L_btn._visible = false; } //カウンタから1を減算 cnt--; } }; //----------------------------------------
お礼
とても丁寧にコメントを入れてくださり、ありがとうございます。 ボタンの非表示・表示、カウントを次に生かせるよう勉強してまいります。