- ベストアンサー
FLASHの非表示
何度もすみません。 今回はこんなことでつまずいてます。 ゲームを作っているのですが、 入手したアイテムは画面右に表示しクリックできるようにしたいのですが アイテムが結構多く、入手するたびに用意した フレームに飛ばすのではあまりにも管理もプログラムも 大変です。 なんとか、スプリクトを使用して オブジェクトの表示・非表示を切り替えれないでしょうか? できれば、ボタンとして使用したいので ボタンの表示・非表示もスプリクトで操作できれば 助かります。 上記、壁にぶち当たるたびに質問してすみません。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
なんかすごいものを作られようとしてる(してた)のですね。 たぶんそのうち答えられなくなるでしょう,今も苦しい状態ですが。 #1さんの言われていることはわかりますか? 具体的に書くと下のようになります。 まず,ボタンにインスタンス名をつけます。 何でも良いですが「buttonA」というインスタンス名にしましょうか。 そしてその「buttonA」に --------------------------- on (release) { _root.buttonA._visible = false; } --------------------------- というスクリプトを書きます。 そしてこのボタンをクリックすると,このボタンは消えます。 しかし,この消えるという状態が微妙で, 本当はそこにあるのですが,存在が見えなくなってしまうという状態になります。 本当はあるのに存在が見えないため,もうボタンとしては機能しなくなります。 ですから,そのボタンに 「_root.buttonA._visible = true」というスクリプトが書いてあっても, ボタンとしては機能しないので,「buttonA」は現れてくれません。 そこで,外部から「_root.buttonA._visible = true;」を命令しないとならないわけです。 他のボタンを用意して, --------------------------- on (release) { _root.buttonA._visible = true; } --------------------------- と書き,そのボタンをクリックすると,「buttonA」が同じ場所に現れてくれます。 また,#1さんが言われるように,MC(ムービークリップ)からそういう操作をしても良いです。 >> オブジェクトの表示・非表示を切り替えれないでしょうか? 「buttonA」自体に「buttonA」を復活させることができないわけですから 「buttonA」自体を「buttonA」で表示非表示させるのはvisibleの場合難しいでしょうね。 結局,外からそのボタンの表示も非表示も切り換える方が良いような気がします。 でも「visible」を使わず「alpha」を使えば,透明になるだけなのでボタンの機能は残すことはできます。 次は,「buttonB」というインスタンス名のボタンをアルファ100にしたりアルファ0にしたりするスクリプトです。 「buttonB」を作り,そのボタンに, --------------------------- on (release) { if (_root.buttonB._alpha == 100) { _root.buttonB._alpha = 0; } else if (_root.buttonB._alpha == 0) { _root.buttonB._alpha = 100; } } --------------------------- 大まかに言うと もしbuttonBのアルファが100だったらアルファを0にする。 もしbuttonBのアルファが0だったらアルファを100にする。 ということです。 これでボタンが見えない状態のときでも,ボタンの機能だけは残るボタンができると思います。 でも見えなければボタンとして気付かないかもしれないので,アルファを0にしてしまうのではなく, 3行目 _root.buttonB._alpha = 30 から 60 くらいで使う場合に良いかもしれません。 これを使うと,外部から例えば「buttonA」を「visible = true」にしたり,「visible = false」にするボタンが作れますよね。 念のため「buttonA」のvisibleを切り換える別ボタンのスクリプトを書いておきます。 「buttonA」とは別の(インスタンス名は不要)ボタンを作ります。 そのボタンに, --------------------------- on (release) { if (_root.buttonA._visible == true) { _root.buttonA._visible = false; } else if (_root.buttonA._visible == false) { _root.buttonA._visible = true; } } --------------------------- と書けば「buttonA」が表示のとき,非表示に。 非表示のとき表示に。 というボタンができます。 全体的にどうされようとしているのかがよくわからないため, スクリプトが1つに絞れませんが,考えたのではこのくらいです。 よく似たことをここで回答しています↓。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1363849 何でしたら参考にしてみてください。 その他, attachMovie関数で作られたムービークリップをremoveMovieClip関数で全く消し去る方法もあります。 visible = false で存在を見えなくするのではなく,本当に消し去る方法です。 http://ft-lab.ne.jp/cgi-bin/wiki.cgi?page=%A5%E0%A1%BC%A5%D3%A1%BC%A5%AF%A5%EA%A5%C3%A5%D7%A4%CE%CA%A3%C0%BD_Flash 私が説明するより,この↑URLの方がわかりやすいと思います。 本当はremoveMovieClip,「アクションスクリプト解説例」 http://f-site.org/cont/02refere/act/removeMovieClip.htm などによると,attachMovie関数などで"生成された"ムービークリップでないと,できないはずなんです。 ~でもちょっと裏技~ 普通のムービークリップも消し去れます。 消し去りたいムービークリップを作ります。 インスタンス名を「movieA」としておきます。 別にボタンを作ってそのボタンに, --------------------------- on (release) { _root.movieA.swapDepths(1); _root.movieA.removeMovieClip(); } --------------------------- と書いてそのボタンをクリックすると,シュワッ! 「movieA」は全く消え去ります。(^-^)//""ぱちぱち ,大マジック! ボタンを消したいわけですから,この「movieA」の中にボタンを作ればボタンごと消えます。 _root.movieA.swapDepths(1);がミソで,「movieA」の深度を正の数にしておくと,removeMovieClipで消せるのです。 でもこれ,本当に消えたので復活はしません。attachMovieなどで生成してください。 とにかく,ボタンの表示・非表示も様々なやり方があります。 あと,思うのですが,このくらいの質問になるとこのカテゴリより, コンピューター [技術者向け] > プログラミング > Flash カテゴリの方が早く良い回答が得られると思いますよ。 #1さんをはじめ,他の方も良い回答をしてくれますし。 私はたまたま,「Flash」で検索をしたときだけ,質問者様の質問がヒットしてここに来ます。 めったに検索しないので回答も遅れます。 ここのカテゴリでも良いのですが,回答できることでも気付かなかったらすみません。
その他の回答 (1)
- rightegg
- ベストアンサー率41% (1357/3236)
こんにちは。 表示非表示は「visible」を切り替えれば良いと思います。 もしくはMCとボタンの組み合わせで開閉させても良いでしょう。
お礼
ありがとうございました。 かゆい所に手が届く文面で本当に助かりました。 (正直驚いています) それぞれのアクションに対し感想を書きたいのですが 全て見ただけで理解できるほど知識がないので 本ページをコピーして立証していきたいと思います。 簡単で申し訳ないですが、お礼の言葉と代えさせていただきます。