• ベストアンサー

教えて下さい!ActionScriptで・・・

Flash8をWindowsXP SP2で使用しております。 Fumio Nonaka.com様の3D_Boxについての質問です。 Fumio Nonaka.com様の3D_Boxのアクションスクリプトを、 フレーム1に記入して、 ボタンでフレーム2に移動するようにしていますが、 フレーム2に移動しても立方体が消えずにずっと描画されています。 どなたか消す方法を教えて下さい。よろしくお願いします。 <利用させて頂いているアクションスクリプトの掲載URL> http://www.fumiononaka.com/Sample/3D_Box/3D_Box.html 下段のSource to download (約192KB/Flash 8形式): 3D_Box.zip

  • Flash
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • is_may
  • ベストアンサー率65% (58/89)
回答No.1

原作をいじらなかった場合は2フレーム目に my_mc.removeMovieClip (); を追加すれば消えます。

rose_web
質問者

お礼

ありがとうございます!消えました! my_mc.removeMovieClip ();” でどのようなことが起きているのか教えて頂けたら嬉しいです。 フレーム1・2・3間をボタンで移動する場合、 フレーム2に3D_Boxのアクションスクリプトを記入した場合は、 フレーム1と3に”my_mc.removeMovieClip ();”を記入したら消えるのですが、 フレーム移動が多数ある場合は、各フレームの開始位置に記入していく以外方法はないのですか? たくさんの質問申し訳ございません。

その他の回答 (1)

noname#35109
noname#35109
回答No.2

#1の方ではありませんが。 > my_mc.removeMovieClip ();” > でどのようなことが起きているのか教えて頂けたら嬉しいです。 その向学心は良いと思いますが, 以降はなるべく自分で調べるようにしましょう。 調べて意味が分かって実際に使って行かないと先には進めませんよ。 ActionScript でも,それ以外の言語でもそうですが, 「こうしたいときにどの言葉をどういうように使うのか」 という部分を知る部分が難関なのです。 「こうしたいときにどの言葉をどういうように使うのか」 さえわかれば, 「その言葉は何を意味するのか」ということは ネット検索やヘルプでいくらでもその意味は調べることができるはずです。 Flashドキュメンテーション(Flash 8 ヘルプのネット版) removeMovieClip (MovieClip.removeMovieClip メソッド) http://livedocs.adobe.com/flash/8_jp/main/00002510.html  ~引用~ > duplicateMovieClip()、MovieClip.duplicateMovieClip() > MovieClip.createEmptyMovieClip() または > MovieClip.attachMovie() で作成した > ムービークリップインスタンスを削除します。 それに removeMovieClip の remove はもともと英語ですね。 「re・move - goo 辞書」 http://dictionary.goo.ne.jp/search.php?MT=remove&kind=ej&mode=0&base=1&row=0 片づける とか 除去する とか取り去る という意味です。 MovieClip はムービークリップ です。 したがって,  my_mc.removeMovieClip();  → my_mc というインスタンス名の    ムービークリップインスタンスを削除する となります。 3D_Box のスクリプト中にある // 立方体描画用のMovieClipインスタンス作成 var my_mc:MovieClip = this.createEmptyMovieClip("scene_mc", this.getNextHighestDepth()); これで作成された my_mc を削除します。 my_mc.removeMovieClip(); の文法は,  オブジェクト . メソッド(); となっています。 メソッドはオブジェクトに対する命令のようなものです。 この文法で日常的な例文を書くと  5963ナンバーの車 . 止まりなさい(); というような感じになります。 > フレーム移動が多数ある場合は、 > 各フレームの開始位置に記入していく > 以外方法はないのですか? 普通に考えたら,すぐに思い付きませんでしょうか? > フレーム1・2・3間をボタンで移動する場合 なのですから, フレーム1 以外への移動するボタンに my_mc.removeMovieClip(); を書けば良いでしょう。 ---例-------------------- on (release) { gotoAndStop(2); my_mc.removeMovieClip(); } ------------------------- 他のフレームのボタンには書く必要はありません。 フレーム1 に 3D_Box のスクリプトが書いてあるのであれば, フレーム1 が表示されるときにだけ 3D_Box が登場します。 例えば フレーム2 から フレーム3 に行くボタンには, my_mc.removeMovieClip(); を書く必要はありません。 それとも, フレーム1 の各ボタンに書くのも面倒なのでしょうか? それも面倒なのでしたら,Flash は作成できないと思いますが...。 もし,それも面倒なのであれば自分でしっかり考えましょう。 「手間暇かけて作る」か,「脳細胞を使って考える」か のどちらかは必要です。 my_mc.removeMovieClip(); を使うタイミングは, #1 の方が回答してくださっている案のように, 「他のフレームに行ったときに実行」 しても良いですし, 上の案のようにように, 「ボタンをクリックしたときに実行」 しても良いです。 その両方ともが面倒なのであれば, 「○○したときに実行」の ○○ を考えるしかありません。  ~私の考え~  「フレーム1 を脱出したときに実行」 これで良いのではないでしょうか。 しかし,最初にも書きましたように, 「こうしたいときにどの言葉をどういうように使うのか」 を知ることが難関なのですよ。 「フレーム1 を脱出したときに実行」 は考えとして良かったとしても, それを実行させる方法や言葉を見つけなければなりません。 そこで考えます。 上の例に従うと,  ムービークリップを削除=removeMovieClip なのですから,  フレームを出る=exitFrame これで行けるのではないでしょうか! 3D_Box の長いスクリプトの後に, 次の ××× 内を追加して書けばできる気がします。 ×××××××××××××××××× // このフレームを出るときに実行 this.onExitFrame = functiion(){ // my_mc を削除 my_mc.removeMovieClip(); } ×××××××××××××××××× できましたか? もしやってみると....... できないと思います。 できないのが正常です。 上の ××× のスクリプトはまっ赤な嘘ですから。 ExitFrame という言葉は, 同じ Adobe の Director の Lingo という言語には存在しますが, ActionScript には存在しません。 また Director であっても,ボタンで違うフレームにジャンプするような場合は使えません。 ただ自然にそのフレームを抜け出るときだけにはたらくイベントハンドラです。 Google検索「ExitFrame」 http://www.google.co.jp/search?hl=ja&q=ExitFrame&lr=lang_ja やはり, 「こうしたいときにどの言葉をどういうように使うのか」 というのが難関ですよね。 この嘘は,そのことが言いたかっただけの嘘です。 次こそは本当のスクリプトです。 3D_Box の長いスクリプトの後に, 次の ------ 内を追加して書けばできると思います。 「フレーム1 を脱出したときに実行」 を実現できるように私なりに考えたものです。 --------------------------- // 1フレーム進時間ごとに毎回実行 this.onEnterFrame = function() { // もしこの階層のフレームが 1 でなけでば if (this._currentframe != 1) { // my_mc を削除 my_mc.removeMovieClip(); // この onEnterFrame を削除 delete this.onEnterFrame; } }; --------------------------- これで,各フレームにも,各ボタンにも, my_mc.removeMovieClip(); は書かずに済みます。 ネット上の一般サイトにもたくさん参考になるページはあると思いますが, 一応ヘルプだけから上のスクリプトの意味を知る上での参考ページのURLを書いておきます。 Flashドキュメンテーション(Flash 8 ヘルプのネット版) // コメント行区切り記号演算子 http://livedocs.adobe.com/flash/8_jp/main/00001836.html . ドット演算子 http://livedocs.adobe.com/flash/8_jp/main/00001821.html this プロパティ http://livedocs.adobe.com/flash/8_jp/main/00001795.html onEnterFrame (MovieClip.onEnterFrame ハンドラ) http://livedocs.adobe.com/flash/8_jp/main/00002490.html if ステートメントの使用 http://livedocs.adobe.com/flash/8_jp/main/00001241.html _currentframe (MovieClip._currentframe プロパティ) http://livedocs.adobe.com/flash/8_jp/main/00002449.html != 不等価演算子 http://livedocs.adobe.com/flash/8_jp/main/00001829.html delete ステートメント http://livedocs.adobe.com/flash/8_jp/main/00001865.html ヘルプは難しいですから, 読んだだけで全てを理解することは不可能だと思いますし, また,全てを理解する必要はありませんよ。 とりあえず「そんな感じのことか…」だけで良いと思います。 もっと理解したい場合はネット検索もしてみる方が良いです。 ネット検索でもヘルプでも良いですから, 「そんな感じのことか…」をまず理解して, 自分で使って行くと "実感で"「そういうことか!」がわかるようになります。 自分で使って実感しないと理解はできません。

rose_web
質問者

お礼

厳しいご意見、丁寧なご説明に感謝します。 「こうしたいときにどの言葉をどういうように使うのか」まさに仰る通りだと思います。 もっと勉強して、色々なデザインのFLASHが作れるように頑張ります。

関連するQ&A

  • 前回のフェードイン/フェードアウトの続きなんですが・・・

    昨日、sassakun様にご回答いただいたように、 ムービークリップでFLASHを作り直させて頂きました。 基本的には無事に動いたのですが、 問題点が2点ありますので、もしよろしければ教えて下さい。 1つ目は、 ボタンでMCを読み込むにつれて、swfファイルの動きが大変遅くなってしまうという現象です。 不要になったMC(階層が一つ下になった時点/最上位階層でなくなった時点)を をremoviMovieClip()で消滅させたいと思い、 各ムービークリップの45フレーム目に (45フレームまでがフェードイン/アウトで重ねたい部分なので) そのMC以外を指定してアクションスクリプトを記入したのですが、 消えませんでした。 記入したアクションスクリプトは、 mc0の45フレーム目に mc1.removeMovieClip(); mc2.removeMovieClip(); mc1の45フレーム目に mc0.removeMovieClip(); mc2.removeMovieClip(); mc2の45フレーム目に mc0.removeMovieClip(); mc1.removeMovieClip(); です。 2つ目は、 Fumio Nonaka.com様の3D_Boxをmc2にコピーしたのですが、 立方体が表示されなくなってしまいました。 これについては全くわからないのですが、 深度に関係があるのでしょうか? <利用させて頂いているアクションスクリプトの掲載URL> http://www.fumiononaka.com/Sample/3D_Box/3D_Box.html 下段のSource to download (約192KB/Flash 8形式): 3D_Box.zip 以上、2点の解決方法を教えて頂けないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • ActionScript~ロールオーバー~について

    http://www.francfranc.com/ 上記URLにて使われております、 FLASH部分について教えてください。 私、初心者の予想では、Action Scriptでかかれていると思うのですが、 実際どのようにしたら、FLASHでロールオーバーしたときに 画像を置き換えることが出来るでしょうか? Action Scriptも知識が全然ありませんので、 サンプルコードなど教えていただけたら、幸いです。 どうぞ宜しく御願い致します。

    • ベストアンサー
    • Flash
  • 【ActionScript】 .asファイルの表示をアクションフレームで表示できますか?

    FLASH8(Win-XP)使用者です。 外部の .as スクリプトを参照する場合、なぜか通常の場所ではなく、描画をおこなう場所に表示されてしまいます。 通常ActionScriptを表示するアクションフレーム(?) →ウインドウ>アクション で出てくるウインドウ に表示されないもんですかね? CS3なら可能とかいうご回答でも結構です。よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 納得できないactionscript2.0のサンプルコード

    納得できないactionscript2.0のサンプルコード http://oshige.com/flash/f8/chap01/で紹介されている、「01-3フレーム移動を行うクラス」 のサンプルコードなのですが(リンク先でダウンロードしていただけるとありがたいです)、 理解できない部分があります。 サンプルコードによると、 doll.asで変数loopを宣言しており、 またNaviFrame.as内ではloopの値を用いた処理を記述しているのですが、 変数loopに関係する部分を全て削除しても挙動に変化は見られませんでした。 (手元にあるテキストの説明によると、「loopの値がtrueならフレーム1に戻り、 falseならフレーム移動を行わない」とありますが、 フレーム1に戻る/戻らないの処理は、 if(mc._currentframe == mc._totalframes) {……} の条件分岐だけで事足りるし、変数loopを宣言して条件分岐に用いたところで、 何の意味もなしていないと思うのです) 私には変数loopに関する一連の記述の必然性が全く分からないのですが、 どなたか教えていただけないでしょうか? 意味が無いように見えて、実は意味があるのでしょうか。 それとも、単なる誤植の類いなのでしょうか。 初心者ですので、できるだけ平易な解説でお願いします。

    • ベストアンサー
    • Flash
  • MCの中のActionScript

    初めまして。 本などを参考にスクロールするボタンのMCを作ったのですが、 その中のボタンにgoto And playで2フレーム目に飛ぶスクリプトを書いても、うまく飛んでくれません。 ですが、ttp://www.beautifulnippon.com/のサイトや、 他のスクロールするボタンを押したら別フレームかシーンかわかりませんが、移動しています。 MC中のボタンを押したときにフレーム、シーンが移動させるのにいい方法はないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • ActionScriptによるメニューの制御

    下記のサイトの様な各コンテンツ毎に所定の場所へ移動するメニューをActionScriptで作成したいと思っています。 http://www.facial-index.com/ どういったスクリプトを組めば作れるのでしょうか。 「HOME」ボタンの様な動きも再現したいです。 分かる方ご教授頂けないでしょうか。 環境はWinXP、flash8です。 宜しくお願いします。

  • (Flash Lite 1.0) フレームアクションでのキーイベント

    携帯用のFLASH(Flash Lite 1.0)で静止画像だけの絵本を作っています。 インタラクティブモードで、ページをめくって次のフレームへ移動させる方法についての質問をさせてください。 今までは、「次ページへ」のようなボタンシンボルを作って画面の下段に置き、そのボタンに対するaction scriptとして ************************************* on (release){ nextFrame(); } ************************************* のように書いて実現していました。 これだとそのボタンシンボル自体が画面レイアウト上邪魔になってきたので、ボタンは無くしてしまい、ボタンにフォーカスさせることなく、フレーム上のアクションスクリプトで記述して、いきなり0や1のキーをたたいて次のフレームへ移動させられないか、と考えています。 ところが、onイベントはボタンにしか使えないようで、身の程知らずながらエキスパートモードに切り替えて、強引にフレームに使おうとしてもシンタックスエラーになってしまいます。 FLASHの教則本などには、"keyListener()"などの手法が載っていますが、携帯FLASHでは、FLASH Player4という制約があり使えません。 以前、どなたかのサイトで入手した携帯FLASHで、確かにボタンを使わずにキーをたたくだけで次のフレームは移動させていたのは記憶にあるので、何らかの方法は存在すると思うのですが、完全に暗礁に乗り上げてしまっています。どなたかアドバイスがありましたらよろしくお願いします。

    • ベストアンサー
    • Flash
  • 二択のフレーム移動

    ボタンクリックで3216フレームか3062フレームの どちらかにランダムで移動させたいんですが、 アクションスクリプトをどう記述していいのか分かりません。 on (press){gotoAndPlay( この形の記述で出来るのでしょうか? それとも別の形なのでしょうか? 教えてください。 過去記事ではランダムに1から5の間のどれかに飛ばせる というものがおおく、特定の2フレームというのは なさそうでした…探しても見つけられませんでしたので、 どうぞお助け下さい。 当方バージョンは Flash8 プロフェッショナルです。

    • ベストアンサー
    • Flash
  • 携帯用flash

    自宅で、グリカやデコメなど作っている者です。 大昔、flash5の時代に、携帯用flashのグリカを作っていました。 この度、携帯用flashグリカの作成を受注したのですが 基本的な質問で、申し訳ありません。 ★使用ソフトはflash5です(flash lete1.1) ★携帯の1・2・3のボタンキーで指定されるカードに  移動するようなカード作成です。 この場合、アクションスクリプトで1ボタンを押すと ○フレーム目に移動して○フレーム目で止まるとする には、どう記述すればいいでしょうか? すごく基本的な質問で申し訳ありません。

    • ベストアンサー
    • Flash
  • チェックボックスの制御(onClipEvent)

    ムービークリップにボタンを二つ組み合わせて作ったチェックボックスをクリックした時に変数clickedの数を0または1に変更するようアクションスクリプトを入力しましたが作動しません。 ムービークリップは、 フレーム1に空ボックス→チェックと変化するボタン、フレーム2にチェック→空ボックスと変化するボタンを配置し、 on(press){ gotoAndStop(2); //フレーム2にはgotoAndStop(1) } とアクションスクリプトを入れています。 これでボタン自体は正常に動くのですが、ボタンがクリックされた状態かどうかを確認する為の変数clickedにクリックした際数字が足されません。 onClipEvent(mouseDown){ clicked++; } 確認のために上記のアクションスクリプトにgotoAndStop(10);のようにフレーム番号を入れ、クリックした際に移動するかも試してみましたが移動しません。こういう場合にonClipEventを使うのが間違っているということでしょうか。 ムービークリップの方に on(press){ gotoAndStop(2); clicked++; } として試してみましたがこちらも上手く行きませんでした。 何か解決法などありましたらアドバイスをよろしくお願いいたします。

    • ベストアンサー
    • Flash