• ベストアンサー

FLASHの非表示

何度もすみません。 今回はこんなことでつまずいてます。 ゲームを作っているのですが、 入手したアイテムは画面右に表示しクリックできるようにしたいのですが アイテムが結構多く、入手するたびに用意した フレームに飛ばすのではあまりにも管理もプログラムも 大変です。 なんとか、スプリクトを使用して オブジェクトの表示・非表示を切り替えれないでしょうか? できれば、ボタンとして使用したいので ボタンの表示・非表示もスプリクトで操作できれば 助かります。 上記、壁にぶち当たるたびに質問してすみません。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.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」で検索をしたときだけ,質問者様の質問がヒットしてここに来ます。 めったに検索しないので回答も遅れます。 ここのカテゴリでも良いのですが,回答できることでも気付かなかったらすみません。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1363849,http://f-site.org/cont/02refere/act/removeMovieClip.htm
irukacyan
質問者

お礼

ありがとうございました。 かゆい所に手が届く文面で本当に助かりました。 (正直驚いています) それぞれのアクションに対し感想を書きたいのですが 全て見ただけで理解できるほど知識がないので 本ページをコピーして立証していきたいと思います。 簡単で申し訳ないですが、お礼の言葉と代えさせていただきます。

その他の回答 (1)

  • rightegg
  • ベストアンサー率41% (1357/3236)
回答No.1

こんにちは。 表示非表示は「visible」を切り替えれば良いと思います。 もしくはMCとボタンの組み合わせで開閉させても良いでしょう。

関連するQ&A

  • FLASHのボタン操作について・・・・

    何度も何度も本当にスミマセン。 やりたいこと: ゲーム内でアイテムをGETすると画面横に用意してある アイテムボックスにアイテムが表示されボタン化される。 アイテムを入手するまでは非表示で、マウスを 近づけてもカーソルは変化しない。 ご指導受けた内容: 「visible」という命令にてボタンを有効・無効化する手引きを受けました。 他ページで参考文献としてステージから大きく移動させ 一見無いようにするという方法もあると知りました。 つまづいた点: ご指導頂いた命令では思ったとおりになるのはなったのですが その時の例えがボタンイベントにて消す・表示するといった方法でした。 それらの特性を利用してフレームで読み込んだ時に消しておいて アイテムゲットしたら表示すればいいのかと思いましたが いきなり初っ端からボタンイベント以外で消す方法が分かりませんでした。 エンターフレームとかLOADとか様々試してみましたが プレビューすると「エラーの神様」が叱ります。;; 恐らく、命令の書き方が間違っているか ボタンオブジェクトでは無理なのか・・・ その他の方法としてレイヤーを一番TOPに設け ボタン隠すとかしてみましたが数多いフレームなので 各所にそれを設けるのは頭がこんがらがって無理でした。 (また、アイテム入手の順番は決まってないので その順番毎にボタン隠すフレームを用意するのも考えただけで死にそうになりました) ごちゃごちゃと書いてしまいましたが 最初は何も入手してないので全て非表示。 変数を利用してフラグをたて、 入手したなら表示、してないなら非表示のまま ってな感じでやりたいのですが私のようなバカでも 理解できる方法はあるでしょうか。 ご指導いただけるようでしたら、宜しくお願い致します。

    • ベストアンサー
    • Flash
  • Flash オブジェクトの表示/非表示

    こんにちは。今回はオブジェクトの表示/非表示のことに関して質問させていただきます.使っているものは、Mac/FlashCS3/AS1&2 です. (フレーム名"s1"にて) MC(ムービークリップ)/pre_btn(ボタン)/del_btn(ボタン)/btn(ボタン)というオブジェクトが画面に表示してあります. (アクションフレームに) pre_btn.onRelease = function(){   MC._visible = true; } del_btn.onRelease = function(){   MC._visible = false; } (btnムービークリップアクションに) on(release){   _root.gotoAndPlay("s2") } (フレーム名"s2"にて) btn2(ボタン)のみ画面に表示されています. (btn2ムービークリップアクションに) on(release){   _root.gotoAndPlay("s1") } 以上のACを記述しました.これでMCを表示/非表示させることができ,btnをクリックし"s2"フレームに移動/btn2をクリックし"s1"フレームに移動することもできるようになりました. しかし,"s1"にて非表示にしたMCが,"s2"のフレームに移動し"s1"に戻ってきたとき,表示されている状態に戻ってしまいます. どうしたら,一度非表示にしたMCを,その後フレーム移動したとしても,非表示の状態に保つことができるのでしょうか?? どうか,ヒントだけでもいいので,何か教えていただけると嬉しいです. よろしくお願いします.

  • フラッシュのアクションスクリプトが上手く分からない

    画像をボタンに変換し右クリックをしアクションを選んだところ、「ActionScript 3.0 では、オブジェクトにコードを直接配置することはできません。フレームを選択するかコードスニペットパネルを使用して、ステージで現在選択しているオブジェクトにコードを適用してください。」と表示されました。 つまり、どういう事ですか? そこから先が進めないんです。指示を入れたい(他のとこではできました)のにできないんです。 なんとかなりませんか?

  • 【Flash】クリック回数制限

    お世話になっております。 AS2、CS3でこのたびFlashでガチャを作っております。 ポイント消費ではなく、一日に三回まで回せるという仕様にしたいと考えております。 ガチャ自体はこちらの http://allabout.co.jp/gm/gc/66791/2/ おみくじを参考にでた結果をアイテムとし クリックであらかじめアバターページに非表示で配置していたアイテムを visible=true;で表示させようと考えております。 1フレーム目に「ガチャへ」「アバターへ」というボタンを設けたいと思っております。 2フレーム目をアバターにし、3フレーム目からおみくじにしたいと考えておりますので 「ガチャへ」ボタンをクリックで3フレーム目に飛ばしたいのですが 「一日三回まで」という回数の制限ができず困っております。 一日三回までボタンのクリックができ、三回以上はフレーム移動をしないなど ボタンの無効化をしたいと考えております。 今日の日付の取得やSharedObjectを使用するのだとは思うのですが… ご教授いただけますと幸いです。

  • Flash表示させた子ウインドをFlash上からの操作で閉じたい

    FlashをJavaScriptで生成した子ウインド内に表示させています。 子ウインドを閉じるには、通常、 <INPUT TYPE=BUTTON VALUE="閉じる" onclick="window.close()"> とかを使い、ボタン操作で閉じると思いますが、 それは用いずに、Flash上に配置したボタン(または何らかのオブジェクト) 操作で閉じたいのですが、アクションスクリプトがイマイチよくわかりません。 このようなことが実現可能かどうかも含めて、お教えいただけると助かります。 お詳しい方がいらっしゃいましたら、どうかよろしくお願いします。

    • ベストアンサー
    • Flash
  • フレーム分割したページでの、FLASHデータの表示について

    こちら、まだまだFLASHビギナーです。 ただいまFLASHでHP用のコンテンツを作成しているのですが、 コンテンツのボタンをマウスオーバーすれば、 すぐ右にサブコンテンツを表示させるようにしたいと思ってます。 ただ、フレーム分割のページで・・・ 左)コンテンツフレーム 右)メインフレーム となっているため、 左)コンテンツフレーム にてサブコンテンツを表示させた場合、 右)メインフレーム にそのサブコンテンツが割り込んでしまいそうなんです... このような時、実際ブラウザで見た場合、 割り込んだ部分はどのように表示されるのでしょうか? もし、 右)メインフレーム の裏に隠れてしまうのであれば、 表に表示させる方法はあるのでしょうか? アドバイスお願いいたします<(_ _)>

  • エクセルの任意のシートをフォームに表示したい。

    いつも参考にさせていただいています。 宜しくお願いします。 Access2002,Excel2002でタイトルのようなことを 実現しようと思ってます。 現在やっていることは、 フォームに「非連結オブジェクトフレーム」を用意して エクセルファイルを表示させているのですが 任意のシートを表示させたいと思っています。 手動で任意のシートをアクティブにしてフォームを再表示すると アクティブなシートがオブジェクトに表示されるのですが、、 VBAの操作によりシートをアクティブにする ことは可能でしょうか。 なにかお気づきの方が居られましたら ご教授宜しくお願いします。

  • Flashでリンクを貼りたいのですが、、

    flash5を使い始めた初心者なのですが、ムービーが終わってからリンクボタンから リンクを貼ろうとしたのですが、オブジェクトアクションでなくフレームアクションの設定になってしまい、リンクボタンの操作無しにリンクしてしまいます。 複数のリンクボタンを設定しているのですが、アクション設定の画面には On mouse Event が選択できないので getURL のみURLを入力しました。 宜しくお願いします。

  • webブラウザー表示画面

    このスプリクトの実行を中止しますか? このページのスプリクトが.webブラウザーの実行速度を遅くしています このスプリクトを実行し続けるとコンピューターが応答しなくなる可能性があります  はい と いいえ のクリックボタンが表示されます この表示が何度も出て来ます。何をすれば良いのか ※OKWAVEより補足:「NEC 121ware :パソコン本体」についての質問です

  • デジカメ(ソニー)のフラッシュ操作

    当方SONYのDSC-W200を使用しています。 http://www.sony.jp/CorporateCruise/Press/200705/07-0514/ この機種、フラッシュ操作をするのにはボタンの右を押すのですが、押すと「フラッシュの操作は無効です」と表示されてしまいます。 調べてもどうしてもわからないのですが、これはボタン操作の無効機能を使用してしまっているという事でしょうか?! わかる方いましたらよろしくお願いします。

専門家に質問してみよう