• 締切済み

flsh クリックで表示させたり消したり

今 flashでボタンを作ってます。 1つのボタンで クリックすると画像Aが表示され もう一回 クリックすると画像Aが消える. そんなのがつくりたいんですが。 コードスペニックで クリックして画像を表示する事はできたんですが、 消す事ができません。 どうぞ よろしくお願いします。

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1です。 #1の補足に書かれていらっしゃる内容のスクリプトからすると (そのままの現状が維持できていれば), スクリプトを次のように変更すれば 元のご質問で書かれていらっしゃるような内容のことができると思います。 ------------------------------------- //カウント用の変数 cnt を作成し初期値を 0 とする var cnt:int = 0; //変数 libImage の宣言 var libImage:MyImage; //「text01」をクリック時に関数fl_ClickToLoadImageFromLibrary_7を実行 text01.addEventListener (MouseEvent.CLICK, fl_ClickToLoadImageFromLibrary_7); //関数fl_ClickToLoadImageFromLibrary_7の定義; function fl_ClickToLoadImageFromLibrary_7 (event:MouseEvent):void { //もし 変数 cnt の値が 0 であれば if (cnt == 0) { // MyImageクラスのインスタンス libImage を作成 libImage = new MyImage(); //そのlibImageの座標を(50,30)に設定 libImage.x = 50; libImage.y = 30; //メインタイムラインにlibImageを配置 addChild (libImage); //変数 cnt の値を 1 にする cnt = 1; } else if (cnt == 1) { //もし 変数 cnt の値が 1 であれば libImage を非表示にする libImage.visible = false; //変数 cnt の値を 2 にする cnt = 2; } else if (cnt == 2) { //もし 変数 cnt の値が 2 であれば libImage を表示する libImage.visible = true; //変数 cnt の値を 1 にする cnt = 1; } } ------------------------------------- #1の補足以降に何かあがくなどして インスタンス名やクラス名を変えていたら 上記スクリプトでは無事に動作しないと思います。

neoQ
質問者

お礼

ありがとうございました。

neoQ
質問者

補足

できました。 思ってたとうりの動きになりました。 ほんと ありがとうございました。

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

コードスペニック ではなくて コードスニペット でしょうね...。 Flash でその言葉(コードスニペット)が登場したのは Flash CS5 が初めてで 確か ActionScript 3.0 設定のときのみにその機能が使用できたと思います。 (私は Flash CS5 を持っていないため その他 詳細は不明です。) ※ Flash は バージョン が大切です。   たまたま コードスペニック? という  1バージョン限定用語 が使われていたため  Flash CS5 の ActionScript 3.0 だと推測できましたが  普通は バージョン を書かないと回答できませんよ。。。 > クリックして画像を表示する事はできたんですが、 その表示させた方法の逆をすれば良いと思いますが。。。 その表示させた方法がわからないため何ともいえませんね。 または消すとはどういうことかをちゃんと書くか。 例えば 何らかの形で画像を addChild して表示させたのでしたら その 画像の親階層に対して removeChild で画像を消す方法がまず考えられます。 Google検索 「removeChild ActionScript 3.0」 http://www.google.co.jp/search?hl=ja&q=removeChild+ActionScript+3.0 また、画像インスタンス の visible プロパティ を false にしても良いと思います。 Google検索 「visible false ActionScript 3.0」 http://www.google.co.jp/search?hl=ja&q=visible+false+ActionScript+3.0 上のように検索しますと たまたまちょうど「ActionScript 3.0におけるパフォーマンス向上のヒント」というページが一番上にヒットしました。 「ActionScript 3.0におけるパフォーマンス向上のヒント」 http://www.adobe.com/jp/devnet/flash/articles/ac3_performance.html 上記ページの 「04 visibleとalphaとremoveChild()」辺りが結構参考になるかと。 http://www.adobe.com/jp/devnet/flash/articles/ac3_performance.html#04 しかし非表示にすると言ってもそれだけではありません。 例えば 画像 の x座標 を ステージ外 のとんでもない場所に移動させても非表示になりますし また例えば 画像 の 大きさ を 0 にしても非表示になりますし また例えば 画像 の存在しないフレームに gotoAndStop() しても非表示になりますし また例えば 画像 の上に別の画像を作成しても非表示になりますし  …まだまだ方法はあります… というわけで 「消すとはどういうことかをちゃんと決める」ことがまず最初にするべきことでしょうね。

neoQ
質問者

補足

使用しているのは、cs5です。 flashは 初心者で actionscriptに関しては ぜんぜん理解していません。 なので コードスニペットみたいな 簡単な操作を使ってます。 画像の表示のしかたは コードスニペットにある 『クリックをして ライブラリーからイメージをロード』という所を選択すると flashが勝手にアクションパネルに書いてくれるので 画像のクラス名を記入して配置位置を記入するという方法を使ってます。 text01.addEventListener(MouseEvent.CLICK, fl_ClickToLoadImageFromLibrary_7); function fl_ClickToLoadImageFromLibrary_7(event:MouseEvent):void { var libImage:MyImage = new MyImage(); libImage.x=50; libImage.y=30; addChild(libImage); } アクションパネルはこんな感じです。意味は全然理解していませんが これでちゃんと表示されました。 画像を非表示というのは、クリックしたら画面から消えればいいんですが 色んな方法があるんですね。 この 画像を表示 非表示の操作を一つのボタンでやりたくて、 参考になる様なリンク先があれば良いんですが 見つけようと思うとなかなか見つからなくて、申し訳ないです。

関連するQ&A