

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)回答ととアクションスクリプトの方法
について教えてください。
No.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--;
}
};
//----------------------------------------

とても丁寧にコメントを入れてくださり、ありがとうございます。
ボタンの非表示・表示、カウントを次に生かせるよう勉強してまいります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
uwscでExcelに自動記入
-
スクリップト
-
arduino プログラムについて
-
ダウンロードしたデジブックはa...
-
パソコンのリカバリーについて
-
大学からの課題をやるのに、Ado...
-
アメリカから買ったダウンロー...
-
アメブロで音声ファイルを貼る方法
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
私のコンピューター上のファイ...
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
-
Flashをブロックしないで
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
potplayerについて質問です
-
flash (.swf) を編集したい
-
ゲオでカードを作るのは何歳か...
-
ダウンロードしたデジブックはa...
-
uwscでExcelに自動記入
-
アメブロで音声ファイルを貼る方法
-
[開発形態]UIレイアウトまでデ...
-
換気扇・経年変化
-
私のコンピューター上のファイ...
-
iframe インラインフレームにつ...
-
スマホでサイトの画像を長押し→...
-
Flash ブラウザ 段階的に排除 ...
-
ActionScript 3.0についての質...
-
アクションスクリプトを簡素化...
-
パソコンについて質問なんです...
-
Flashと普通のHTMLの表示速度に...
-
arduino プログラムについて
-
自分でチラシを作りたいです!...
-
更新されて起きた問題
-
ウディタで作ったゲームを公開...
おすすめ情報