上手く説明出来ないのですが、
ムービークリップのメニューを作ろうとしています。
マウスオーバーで全部のムービーが止まる様にしたくて、
一つのムービークリップに全部のムービークリップのメニューをまとめ、選択すると
ーーーーーーーーーーーーーーーーここから
シーン=シーン1,レイヤー=menu,フレーム マウスイベントはボタンインスタンスでのみ使用できます。
シーン=シーン1,レイヤー=menu,フレーム マウスイベントはボタンインスタンスでのみ使用できます。
ーーーーーーーーーーーーーーーーここまで
とエラーになってしまいます。
だからといってメニュー一つ一つに
on(rollOver){
stop();
}
on(rollOver){
play();
}
を記述しても、マウスオーバーしているメニューだけが止まって、
他のメニューは動いてぐちゃぐちゃになってしまいます。
ひとつのメニューをマウスオーバーするだけで他全部のムービークリップも停止、
マウスをはずすと同じ所から動きだす事って出来ますか?
いい方法がありましたら教えて下さい。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
インスタンスのタイプを[ボタン]にせず、[ムービークリップ]に変換します。
インスタンスに適当な名前を付けます。
例 btn01 , btn02 , btn03 , btn04
メインフレームにスクリプトを書きます。
btn01.onRollOver = btn02.onRollOver = btn03.onRollOver = btn04.onRollOver = function()
{
stop();
}
btn01.onRollOut = btn02.onRollOut = btn03.onRollOut = btn04.onRollOut = function()
{
play();
}
ryo2501様
お答え頂きありがとうございます!
記述も少なく簡単そうなのでやってみたいと思います(^^)
いろんなやり方があって勉強になります。
No.1
- 回答日時:
エラーが出る件に関しましては,
いったいどんな操作をされたのかよくわかりませんが,
とにかく,
「フレームに on(○○) という onハンドラ を書いたから」
というのが理由でそのエラーが出ます。
onハンドラ はボタンインスタンス自体,もしくはムービークリップインスタンス自体にしか書けません。
元々Flash 5 までは ボタンインスタンス自体 にしか書けなかったので(ボタンのみが持つイベントハンドラだったので),
エラーメッセージが 「マウスイベントはボタンインスタンスでのみ使用できます。」 と出てきます。
このエラーは本題とはほとんど関係がないので,この件は置いておきます。
本題のご質問は,
ムービークリップをたくさん用意して,
それらのムービークリップ内のタイムラインの動きを一斉に止めたり動かしたりする方法ということですよね。
これは単純に,
それらのムービークリップ1個1個にその指示をしなければなりません。
スクリプトの書き方によっては,
簡単になる(短くなる),大変になる(長くなる)はありますが,
結局どんなスクリプトを書いても,
「1個1個に指示をする」 ということには変わりありません。
例えば シーン1 などメインのタイムライン(_root)に,
20個のムービークリップがあったとします。
その場合,個々のムービークリップに20通り別々のインスタンス名を付けます。
インスタンス名は半角英文字から始まっていて
全体的に半角英数文字であればたいてい何でも問題はありません。
ただ,スクリプトを簡単にするには,
インスタンス名を「文字列+連番数字」という形の名前にしておく方が良いです。
例えば 20個のムービークリップに,
「myMC1」,「myMC2」,「myMC3」,…,「myMC20」
と命名します。
命名は,各ムービークリップ1個ずつを選択して,
下のプロパティインスペクタの左の方の,
[ <インスタンス名> ]
とグレー文字になっている部分に myMC1 などを書いて行きます。
(1個ずつです。まとめて選択するのではなく1個ずつ選択して命名です。)
順番はどうでも構いません。
動かしたり止めたりするムービークリップ全てに書き忘れがないように書きます。
そして,
全てのムービークリップを再生させたり停止させたりするインスタンス(ムービークリップもしくはボタン)に,
次のように書きます。
----------------------------------------
// このインスタンスにロールオーバーしたとき
on (rollOver) {
// 変数 i を 1~20 で 1 ずつ加算しながらループ
for (i=1; i<=20; i++) {
// _root の myMC1~20 を停止
_root["myMC"+i].stop();
}
}
// このインスタンスからロールアウトしたとき
on (rollOut) {
// 変数 i を 1~20 で 1 ずつ加算しながらループ
for (i=1; i<=20; i++) {
// _root の myMC1~20 を再生
_root["myMC"+i].play();
}
}
----------------------------------------
「何にロールオーバーしたとき」 に実行すべきかを考えると,
「全てのムービークリップを再生させたり停止させたりするインスタンスにロールオーバーしたとき」
に実行すべきとなります。
ちゃんと考えて "狙ってスクリプトを書く" ことが大切です。
そして,そのときに,
「全てのムービークリップを再生させたり停止させたりする」 のです。
for文が出てきています。
もし for文 がわからない場合は,
「ActionScript for文」 などとGoogleなどで検索するか,
次のページなどの解説を読んで理解してみてください。
「FLASHアクションスクリプト入門編 for文」
http://isvalid.jp/actionscriptLab/ASlesson/actio …
_root["myMC"+i].stop();
などにある [ ] を,配列アクセス演算子 と言います。
もしこれもわからない場合は,
「配列アクセス演算子」 とGoogleなどで検索してみてください。
http://www.google.co.jp/search?hl=ja&q=%E9%85%8D …
最初にも書きましたが,
for文を使っても使わなくても,結局すること(PCにさせること)は同じです。
// 変数 i を 1~20 で 1 ずつ加算しながらループ
for (i=1; i<=20; i++) {
// _root の myMC1~20 を再生
_root["myMC"+i].play();
}
と書いても良いですし,
次のように1つずつ書いてもかまいません。
// _root の myMC1 を再生
_root.myMC1.play();
// _root の myMC2 を再生
_root.myMC2.play();
// _root の myMC3 を再生
_root.myMC3.play();
// _root の myMC4 を再生
_root.myMC4.play();
// _root の myMC5 を再生
_root.myMC5.play();
// _root の myMC6 を再生
_root.myMC6.play();
// _root の myMC7 を再生
_root.myMC7.play();
// _root の myMC8 を再生
_root.myMC8.play();
// _root の myMC9 を再生
_root.myMC9.play();
// _root の myMC1 を再生
_root.myMC1.play();
// _root の myMC10 を再生
_root.myMC10.play();
// _root の myMC11 を再生
_root.myMC11.play();
// _root の myMC12 を再生
_root.myMC12.play();
// _root の myMC13 を再生
_root.myMC13.play();
// _root の myMC14 を再生
_root.myMC14.play();
// _root の myMC15 を再生
_root.myMC15.play();
// _root の myMC16 を再生
_root.myMC16.play();
// _root の myMC17 を再生
_root.myMC17.play();
// _root の myMC18 を再生
_root.myMC18.play();
// _root の myMC19 を再生
_root.myMC19.play();
// _root の myMC20 を再生
_root.myMC20.play();
書き方が違うだけでしていることは同じです。
CPUを使う度合もほぼ同じくらいだと思います。
ファイル容量やメモリを考えると for文 の方がほんの少し良いかもしれませんが,
差はそのくらいのことです。
for文 に似たものに for..in文 というものもあります。
これを使うとインスタンス名を付けなくて済むというメリットはありますが,
これでも結局することは同じですし,
「狙った物を狙い通りに動かす」という感覚がなくなるので,
とりあえずはキッチリとインスタンス名を付けて狙った通りに for文 で動かすか,
または1個1個に対して1行1行指示することをお薦めします。
なお,
次のようにすると for文 使用でも実行に制限をかけることができます。
----------------------------------------
// このインスタンスにロールオーバーしたとき
on (rollOver) {
// 変数 i を 1~20 で 1 ずつ加算しながらループ
for (i=1; i<=20; i++) {
// i が 3 で割りきれなかったときだけ実行
if (i%3 != 0) {
// _root の myMC1~20 を停止
_root["myMC"+i].stop();
}
}
}
// このインスタンスからロールアウトしたとき
on (rollOut) {
// 変数 i を 1~20 で 1 ずつ加算しながらループ
for (i=1; i<=20; i++) {
// _root の myMC1~20 を再生
_root["myMC"+i].play();
}
}
----------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ExcelVBA】動的にボタン、ボタン名を生成できますか? 7 2022/04/08 12:54
- AJAX 自作の地図をグーグルマップのようにしたい 3 2022/11/15 11:53
- docomo(ドコモ) 通話録音が(最初から)自動的に始まるアプリは? 7 2023/01/16 15:53
- 画像編集・動画編集・音楽編集 動画をディスク作成すると画像が乱れる。 4 2022/06/24 07:49
- ブルーレイ・プレーヤー・レコーダー 動画のDVD出力と再生について 6 2022/12/07 09:47
- 防犯カメラ・監視カメラ・小型カメラ Windowsのカメラ機能。設定した通りのfpsでの撮影ができず、コマ落ち動画になる。修正するには? 2 2023/01/29 09:50
- Excel(エクセル) [貼り付けオプション]とは? 3 2022/04/17 08:15
- その他(プログラミング・Web制作) マウスオーバー→ホイール回転でスクロールできない 2 2022/10/31 10:06
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- 筋トレ・加圧トレーニング 高校生女子です。 私は一年ほど前から自宅で腹筋トレーニングをしているんですが、なかなかメニューを安定 2 2022/10/06 14:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PYTHONのtkinterについて
-
パーセントで配置したフラッシ...
-
PythonでSetWindowPosを使うに...
-
python ボタンを押すと複数の関...
-
経過時間を計るには
-
photoshopで書いた四角の枠の中...
-
VBAで改行の入ったデータの正規...
-
VBScriptでMsgBoxのYesNoボック...
-
テキストボックスの中身をリセ...
-
YOASOBI
-
【Photoshop】レイヤー効果の境...
-
別のアプリケーションのテキス...
-
RPG(AS400)の本、サイトってあ...
-
PythonのTkinterイベントについて
-
五芒星は、悪魔崇拝とどういう...
-
VBAユーザーホームテキストボッ...
-
プログラミング、アーキテクチ...
-
×ボタンを無効化したいのですが...
-
キープレスとボタンクリックの...
-
UWSCのBTN関数について。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python ボタンを押すと複数の関...
-
else if文の順序を変えることに...
-
四乗根を英語で言うと・・・
-
PythonでSetWindowPosを使うに...
-
ADに参加していないPCからADサ...
-
tkinterからplt.plot()を呼びたい
-
Pythonのtkinterについて
-
pythonのグローバル変数
-
PYTHONのtkinterについて
-
flash 大きさの異なる写真のス...
-
関数をプロパティとして代入する際
-
pythonの画像の貼り付けについて
-
SNMPの標準MIBについて
-
2分木を中順でなぞりたいので...
-
Flashvars getURLの書き方
-
リンクでのエスケープシーケン...
-
Flashの表示サイズを動的に変更...
-
■外部jpgをクロスフェードさせ...
-
ゲージと連動したムービークリ...
-
ボタンの上にマウスを置くと虫...
おすすめ情報