- ベストアンサー
FLASHで、メニューボタンクリック→サブメニュー開く、再びクリック→サブメニュー閉じる、と設定する方法は?
タイトルの通りですが、 メニューボタンを・・・ クリック→サブメニュー開く 再びクリック→サブメニュー閉じる ・・・とするには、 どのようなアクションスクリプトを設定すればよいのでしょうか? あらかじめ、タイムライン上のフレームに サブメニューが開くモーションを作成し、 メニューボタンのアクションに on(release){gotoAndPlay(*);} *はサブメニューを開きはじめるフレームを指定 を設定したものの、 そこから先がわからず行き詰っています・・・ アドバイスよろしくお願いいたします<(_ _)>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> この問題を解決できますか? はい。解決できます。 ↓DDDのボタンアクション on(release){ if (_root.ddd.check == 0) { if (他のメニューを何も開いていない状態を判定する式) { gotoAndPlay("open1"); _root.ddd.check = 1; //サブメニューが開いている } else if(すでにaaaaを開いている状態を判定する式){ gotoAndPlay("open2"); _root.ddd.check = 1; //サブメニューが開いている } else if(すでにaaaaとbbbbを開いている状態を判定する式){ gotoAndPlay("open3"); _root.ddd.check = 1; //サブメニューが開いている } else { gotoAndPlay("open4"); _root.ddd.check = 1; //サブメニューが開いている } }else { gotoAndPlay("close"); _root.ddd.check = 0; //サブメニューが閉じている } } 開閉をチェックする変数は、checkは、aaa,bbb,ccc,dddのムービークリップインスタンスにそれぞれ設定しておきます。 ........説明の仕方が難しいです。 ある程度ActionScriptを理解していないと難しいと思います。 お役に立てなくてすみません。
その他の回答 (2)
- ika3
- ベストアンサー率64% (29/45)
まず、_rootの1フレームに、 サブメニューが開いているか、閉じているかを判定するための変数を設定します。これはフレームアクションです。 check = 0; //サブメニューが閉じている 次に、メニューボタンのアクションを次のように記述します。 on(release){ if (_root.check == 0) { gotoAndPlay("open"); _root.check = 1; //サブメニューが開いている } else { gotoAndPlay("close"); _root.check = 0; //サブメニューが閉じている } } こんな感じでわかりますか?
補足
ご回答ありがとうございます。 まだアクションスクリプトを使い始めたばかりなので、 いまいちよく意味が分かりません・・・ #1の方の方法でとりあえずはうまくいきましたが、 新たな問題が発生しました・・ 例えば・・・ AAAAAA BBBBBB CCCCCC DDDDDD というメニューがあるとして、 AAAAAAのみサブメニューを開く場合はいいのですが、 AAAAAA aaaa BBBBBB CCCCCC DDDDDD 下のようにすべてのボタンにサブメニューをつける場合、 AAAAAA aaaa BBBBBB bbbb CCCCCC cccc DDDDDD dddd ddddのサブメニューを開く場合で考えると、 ●他のメニューを何も開いていない状態 ●すでにaaaaを開いている状態 ●すでにaaaaとbbbbを開いている状態 ●すでにaaaaとbbbbとccccを開いている状態 それぞれの状態で位置がズレて変わってくるため、 これまでの方法では対応できなくなりました... (ちょっとわかりにくい説明かもしれませんが汗) ika3様の、 サブメニューが閉じているか開いているかを 判定するという変数ならば、 この問題を解決できますか? もしできるのであれば具体的な方法を アドバイスお願いいたします!
- mappi_mappi
- ベストアンサー率43% (231/527)
サブメニューを開いた所でキーフレームを配置、そのフレームのメニューボタンのスクリプトを元に戻るように書き換えてあげたらどうでしょうか? 閉じたメニューが1フレーム目でしたら、メニューボタンの on(release){gotoandplay(*)} を on(release){gotoandstop(1)} にしてあげれば良いと思います。
お礼
ご回答ありがとうございます。 参考になりました!
お礼
う~む・・・ アクションスクリプトは奥が深いですね 「状態を判定する式」というのがさっぱり・・・(汗 とりあえず今は理解できないので、 妥協したやり方で代用することにします。 今回はいろいろありがとうございました。 またよろしくお願いいたします!