No.1ベストアンサー
- 回答日時:
とりあえず
オブジェクト も ゴミ箱 もそれぞれを各ムービークリップで作成します。
(絵などをムービークリップに変換します という意味です。)
そして各ムービークリップにインスタンス名を付けます。
仮に オブジェクト は 4つ で,ゴミ箱 は 3つ であったとします。
その場合 7つ のムービークリップになるわけですが,
例えば4つのオブジェクトムービークリップには
「obj_0」 「obj_1」 「obj_3」 「obj_4」,
例えば3つのゴミ箱ムービークリップには
「box_0」 「box_1」 「box_3」 というインスタンス名を付けます。
各ゴミ箱ムービークリップ内の フレーム2 には
「ゴミ箱がふくらんだ状態」の絵を置きます(描きます)。
ここまでの状態を表したのが 【下の図】↓ です。
※「ゴミ箱がふくらんだ状態」の絵は,
シーン1 などメインのタイムラインのフレーム2に置くのではありません。
"各ゴミ箱ムービークリップ内" のタイムラインの フレーム2 に置きます。
これら7つのムービークリップが存在するフレームに
次のようなスクリプトを書けば,
ご質問で書かれていらっしゃるようなことができます。
---------------------------------------------
// ゴミ箱(box_○)に関するループ
for (var i:Number = 0; i<=3; i++) {
// 「box_0」~「box_3」内をフレーム1で停止
_root["box_"+i].stop();
}
// オブジェクト(obj_○)に関するループ
for (i=0; i<=4; i++) {
//
// 「obj_0」~「obj_4」を押したときの動作を定義
_root["obj_"+i].onPress = function():Void {
// このムービークリップのドラッグを開始
this.startDrag();
};
//
// 「obj_0」~「obj_4」を放したときの動作を定義
_root["obj_"+i].onRelease=_root["obj_"+i].onReleaseOutside=function():Void {
// このムービークリップのドラッグを終了
this.stopDrag();
// ゴミ箱(box_○)に関するループ
for (i=0; i<=3; i++) {
// もしそのときゴミ箱(box_○)がマウスに接触していたら
if (_root["box_"+i].hitTest(_root._xmouse, _root._ymouse, true)) {
//なおかつそのゴミ箱のフレームが1であれば
if (_root["box_"+i]._currentframe == 1) {
// そのゴミ箱内のフレームを2に進めて停止
_root["box_"+i].gotoAndStop(2);
// そしてこのオブジェクトを非表示にする
this._visible = false;
}
}
}
};
}
---------------------------------------------
・バージョン
ActionScript 2.0
Flash Player 6 以上用のSWFパブリッシュで動作
上に書いた「これら7つのムービークリップが存在するフレーム」とは
例えば「obj_0」~「obj_4」をムービーのタイムラインの上レイヤーのフレーム1,
「box_0」~「box_3」をムービーのタイムラインの下レイヤーのフレーム1に作成した場合,
同じムービーのタイムラインの同じフレーム1にスクリプトを書くという意味です。
↓↓↓
~ムービーのタイムライン例~
レイヤー3 ・・・|○| ←スクリプトはこのフレームに書く
レイヤー2 ・・・|●| ←例えば「obj_0」~「obj_4」
レイヤー1 ・・・|●| ←例えば「box_0」~「box_3」
スクリプトの内容に関してです。
まず,
// ゴミ箱(box_○)に関するループ
for (var i:Number = 0; i<=3; i++){…}
これは for(繰り返しループ)文 です。
何のことかわからない場合は次のページなどを参考にしてみてください。
「繰り返し文 for - FLASHアクションスクリプト入門編」
http://isvalid.jp/actionscriptLab/ASlesson/actio …
次に,
// 「box_0」~「box_3」内をフレーム1で停止
_root["box_"+i].stop();
で書いたような _root["box_"+i] の [ ] を「配列アクセス演算子」と言います。
使い方や意味などは,そのままを Google で検索してもらえば
説明や参考になるサイトが出てきます。
Google検索「配列アクセス演算子」
http://www.google.co.jp/search?hl=ja&source=hp&q …
○○.onPress=function(){…};
○○.onRelease=function(){…};
○○.onRelease=function(){…};
これらのようなものを「イベントハンドラメソッド」と言います。
これも何のことかわからない場合は次のページなどを参考にしてみてください。
「ムービークリップのイベントハンドラ」
http://homepage3.nifty.com/ginga-b/MX/mc_eventha …
ムービークリップ.hitTest(○○)
これは ムービークリップクラスの接触判定メソッド です。
次のページなどが参考になると思います。
「Flashゲーム講座&ASサンプル集【当たり判定について】」
http://hakuhin.hp.infoseek.co.jp/main/as/hittest …
あと,
:Void とか :Number が少し出てきていますが,
これは変数や関数の型指定をしているだけで
ActionScript 2.0 の場合は特に大きな意味はありません。
デバッグ時にエラーを発見しやすいとか
他人が見たときにその変数が何であるのかがわかりやすいとか
その程度のものです。
var i:Number → 変数 i には数値が入りますよ~
function():Void → この関数に戻り値はありませんよ~
というようなことです。
何のことかわからなければ無視しても良いですし,
コロン以下を削除してもらっても全く問題はありません。
※ Void を理解しようにも まず,
「戻り値がある関数とはどういうものか」を理解しない限り,
「戻り値がない関数とは何なのか」は理解できないと思う。
「熱い」がわからなければ「熱くない」がわからない と同様
「明るい」がわからなければ「明るくない」がわからない と同様
※ ActionScript 3.0 では話が別です。
ActionScript 3.0 の型指定には動作上の意味があります。
=== 以下は質問外の補足 =============================
各オブジェクトのムービークリップは,
// そしてこのオブジェクトを非表示にする
this._visible = false;
で非表示にしただけです。
これを
_visible = true
にしてやると戻って来ます。
例えば,
「各ゴミ箱をクリックしたときに,
オブジェクトを元の表示状態に戻したい。」
という場合は次のようにスクリプトを書き換えます。
書き換えると言うよりも最後の部分を付け足します。
---------------------------------------------
// ゴミ箱(box_○)に関するループ
for (var i:Number = 0; i<=3; i++) {
// 「box_0」~「box_3」内をフレーム1で停止
_root["box_"+i].stop();
}
// オブジェクト(obj_○)に関するループ
for (i=0; i<=4; i++) {
//
// 「obj_0」~「obj_4」を押したときの動作を定義
_root["obj_"+i].onPress = function():Void {
// このムービークリップのドラッグを開始
this.startDrag();
};
//
// 「obj_0」~「obj_4」を放したときの動作を定義
_root["obj_"+i].onRelease=_root["obj_"+i].onReleaseOutside=function():Void {
// このムービークリップのドラッグを終了
this.stopDrag();
// ゴミ箱(box_○)に関するループ
for (i=0; i<=3; i++) {
// もしそのときゴミ箱(box_○)がマウスに接触していたら
if (_root["box_"+i].hitTest(_root._xmouse, _root._ymouse, true)) {
//なおかつそのゴミ箱のフレームが1であれば
if (_root["box_"+i]._currentframe == 1) {
// そのゴミ箱内のフレームを2に進めて停止
_root["box_"+i].gotoAndStop(2);
// そしてこのオブジェクトを非表示にする
this._visible = false;
}
}
}
};
}
// ---以下を付け足し------
// ゴミ箱(box_○)に関するループ
for (i=0; i<=3; i++) {
// 「box_0」~「box_3」をクリックしたときの動作を定義
_root["box_"+i].onRelease = function():Void {
// オブジェクト(obj_○)に関するループ
for (i=0; i<=4; i++) {
// もしこのゴミ箱がオブジェクト(obj_○)に接触していたら
if (this.hitTest(_root["obj_"+i])) {
// このゴミ箱内のフレームを1に戻して停止
this.gotoAndStop(1);
// そしてその接触しているオブジェクトを表示する
_root["obj_"+i]._visible = true;
}
}
};
}
---------------------------------------------
おお~!できました!
完璧です!すばらしいです!
こんなに丁寧に、細部まで分かりやすくご説明いただいてありがとうございます!
ご回答をいただくまでは1つ1つに延々と動作をつけてがんばってみたのですが、期待した結果が得られず・・・
for文ってすごい!
10年以上前に意味もわからず受けていた Visual C++ の授業をちょっぴり思い出しました
いただいたURLを参考にしてしっかり勉強していきたいと思います
本当にありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 掃除・片付け みなさんおうちにゴミ箱って 何個設置してますか? 私は1LDKの部屋に住んでて リビングに1つ キッ 5 2023/06/27 13:58
- 数学 仕事で使う算数の計算が難しいです 2 2023/02/01 22:26
- 統計学 確率計算について 1 2022/06/07 16:55
- その他(悩み相談・人生相談) これは変えた方がいいと思いますか?理由も教えてください。 1.3つの箱がある。1つは賞金1000万円 1 2022/12/13 10:24
- Excel(エクセル) 2つのマクロを連続して動かしたい 3 2022/09/20 23:46
- クラフト・工作 2つの同じ箱を使って引き出しを作ります。(菓子箱など) また、2つの同じ箱を使って引き出しを作ります 3 2023/04/22 08:44
- 数学 【 数A 条件つき確率 】 問題 2つの箱A、Bがあり、箱Aの中には赤玉が4個、白玉が3個入っている 6 2022/10/07 21:15
- 数学 3つの箱A,B,Cの1つに賞品がはいっているが、外からはわからない。A,B,Cのどれかを選んだとき、 14 2022/09/26 17:49
- Java 複数TBLのオブジェクトを1つの変数(オブジェクト)でまとめて管理したい 1 2022/12/17 00:12
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
else if文の順序を変えることに...
-
node* ってなんなのでしょうか?
-
Excel VBAで読み込んだテキスト...
-
python ボタンを押すと複数の関...
-
PYTHONのtkinterについて
-
PythonでSetWindowPosを使うに...
-
FLASHで「かるた」を作りたいの...
-
オブジェクトのランダムな位置表示
-
二分探索木のプログラム
-
プログラミング、アーキテクチ...
-
photoshopで書いた四角の枠の中...
-
VBAで改行の入ったデータの正規...
-
五芒星は、悪魔崇拝とどういう...
-
ExcelでVBAを利用してオートシ...
-
C言語でのマウスを移動とマウス...
-
RPG(AS400)の本、サイトってあ...
-
HTMLのtextbox類に文字を残す
-
VB6.0 でメニューを作りたいん...
-
UWSCのBTN関数について。
-
YOASOBI
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python ボタンを押すと複数の関...
-
else if文の順序を変えることに...
-
PYTHONのtkinterについて
-
Pythonのtkinterについて
-
四乗根を英語で言うと・・・
-
pythonの画像の貼り付けについて
-
SNMPの標準MIBについて
-
PythonでSetWindowPosを使うに...
-
pythonのグローバル変数
-
ボタンの上にマウスを置くと虫...
-
関数をプロパティとして代入する際
-
ADに参加していないPCからADサ...
-
レイヤーに配置されたムービー...
-
[FlashMX2004]動的にファイルを...
-
メニュースクロール
-
パーセントで配置したフラッシ...
-
Flashの表示サイズを動的に変更...
-
スライドショーのフェードイン...
-
swfがきちんと動作しない!
-
フルウィンドウのFlash Firefox...
おすすめ情報