重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

FLASH CS3 AS2.0で作っています。

ステージの幅120とします。画像を7枚つなげてインスタンス名をmy_mc。
my_mcの左上を基準として左右ボタンを使い、移動させようとしています。

左右ボタンの配置が次の3種類になるためタイムラインが3フレーム必要になります。

1フレーム →

2フレーム ← →

3フレーム ←
  
こうした場合、パブリッシュすると連続して再生するため止める必要があり1フレームに
stop();を入れます。それでは、アクションスクリプトはそれぞれのボタンに記述しなければなりません。
疑問(1)通常、こんな使い方になるのでしょうか?
1フレームめにアクションスクリプトを記述するのが当たり前と思っているのですがこれは間違いになりますか。

→ボタン(画像は左方向に動く)  7番目の画像が出たら3フレームに進み←ボタンを表示はできました。

on (release) {
my_mc._x -=120;//左へ移動
if(my_mc._x<=-720){
//trace(my_mc._x);
gotoAndStop(3);
}
}

次に2から6番目の画像では、←と→が出なければならなく、この方法がわかりません。

7番目から1番にもどるまで← →の表示はできました。

on (release) {
my_mc._x +=120;//右へ移動
if(my_mc._x<=0){
//trace(my_mc._x);
gotoAndStop(2);
}
}

しかし、1番目は→だけが必要です。
こうなってくると何がなんやらとても混乱しています。疑問(1)回答ととアクションスクリプトの方法
について教えてください。

A 回答 (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--;
}
};
//----------------------------------------
 
「左右ボタンで方向切替」の回答画像1
    • good
    • 0
この回答へのお礼

とても丁寧にコメントを入れてくださり、ありがとうございます。
ボタンの非表示・表示、カウントを次に生かせるよう勉強してまいります。

お礼日時:2011/09/04 16:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!