アクションスクリプトの初歩的質問

このQ&Aのポイント
  • アクションスクリプトの勉強中に、enterFrameイベントとremovedFromStageイベントを使ってオブジェクトの移動と停止を行いたいが、停止しない問題が発生している。
  • タイムラインを使ってオブジェクトが消えるように設定すると、removedFromStageイベントが正常に動作する。
  • ステージ上から動いても外に出ただけではオブジェクトが消えたとはみなされず、removedFromStageイベントが発火しないと思われる。
回答を見る
  • ベストアンサー

アクションスクリプト 初歩的質問

今アクションスクリプトを勉強しています。 かなり初歩的な質問ですが、お願い致します。 まずenterFrameイベントを使ってオブジェクトをフレームごとに 「進む」と出力パネルに表示させながら10ずつ左に移動させていきます。 そこでオブジェクトがステージ上から完全に出てしまったら removedFromStageイベントを使ってenterFrameイベントを停止させたいのですが、停止しません。 タイムラインを使ってオブジェクトがパッとその場から完全に消えるようにしてremovedFromStageイベントを使うと、ちゃんと停止しました。 ステージ上から動いて外に出るというのはステージから消えたことにはならないからでしょうか? ちなみにmacでcs4を使っています。 かなり初歩的すぎて申し訳ないですが、周りに質問できる方もいないので、お願い致します。 乱文失礼致しました。

  • ikka3
  • お礼率100% (3/3)
  • Flash
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

>ステージ上から動いて外に出るというのはステージから消えたことにはならないからでしょうか? そうです. removedFromStageはFlashPlayer上で見えなくなったとき、ではなく 「表示リスト」から削除されようとするときに送出されるイベントです. ENTER_FRAMEイベントを停止させたいのであれば、 オブジェクトからリスナーを削除します. removeEventListener(Event.ENTER_FRAME, リスナー関数) オブジェクトがステージから完全に出たときに オブジェクト(の表示)もActionScriptで消すのであれば、 removeChildを使いますが、これで削除できるのは ASで配置したオブジェクトだけです. そこでオブジェクトの元のシンボルをリンケージでクラスとして 書き出して動的にオブジェクトを配置するようにします. 以下、メインタイムラインに書く場合の一例です. (リンケージでクラス名を"MC"で書き出しているとします) なお簡潔にするためシンボル内にはASは書いていません. var mc:MC = new MC(); addChild(mc); mc.x = stage.stageWidth;//どこでも良い mc.addEventListener(Event.ENTER_FRAME, onEnterFrame); function onEnterFrame(e:Event){ mc.x -= 10; trace("左に10進む"); if(mc.x < 0 - mc.width){ mc.removeEventListener(Event.ENTER_FRAME, onEnterFrame); removeChild(mc); mc = null; } }

ikka3
質問者

お礼

すごく丁寧に回答して下さって とても分かりやすかったです^^ ありがとうございました!

関連するQ&A

  • 移動に関するアクションスクリプトがわかりません

    あるムービークリップをクリックした時にX座標を0の位置にもっていきたいのですが、アクションスクリプトをどう書いたら良いのか分かりません。 瞬間的に移動するのではなくスーッという感じで動かしたいのです。 on (release){ this._x = 0} と onClipEvent(enterframe){ this._x += -2 } これを融合させたような感じにしたいのですが、書き方が分かりません。メインのタイムラインに動くフレームをつくりgotoAndPlay()で飛ばしても良いんですが、アクションスクリプトだけで作ることは不可能でしょうか?

    • ベストアンサー
    • Flash
  • Flashのアクションスクリプトについて質問があります。

    Flashのアクションスクリプトについて質問があります。  FlashのCS2を使って選択式クイズを作っています。タイトルや問題などのフレームにはラベルを付けて、ラベルレイヤーのキーフレームにスタートや選択肢のボタンを配置しました。そして、タイトルラベルにあるスタートボタンを押すと問題1に飛ぶようにアクションスクリプトを設定しました。その後、きちんと設定出来ているか再生して確認してみたところ、問題1から再生されて、タイトルから再生されなくなりました。何回かやり直してみたのですが、タイトルから再生されませんでした。アクションスクリプトの設定は、「タイトルラベルのキーフレームをクリック→スタートボタンが選択されていることを確認→F9を押してアクションスクリプトの設定画面を表示→スクリプトアシストをオンにする→グローバル関数の中にあるgotoをダブルクリック→移動して再生を停止をオンにする→タイプをフレームラベルに変更→フレームのメニューをクリックして問題1を選ぶ」というふうにしました。 なぜ、タイトルからではなくスタートボタンを押さないと表示されない問題1が表示されたのかわかりません。どこで設定を間違えているのか分からないので、わかる方がいらっしゃたら教えていただきたいと思います。お願いします。

  • FLASH アクションスクリプト

    画面のサイズを拡大縮小しても 常にセンターに表示させる アクションスクリプトで質問がございます。 back_mcが【背景】 main_mcが【オブジェクト】 _root.main_mc._x = ( Stage.width - _root.main_mc._width ) /2; _root.main_mc._y = ( Stage.height - _root.main_mc._height) /2; このアクションスクリプトで【オブジェクト】が最初から常にセンター表示になる事は分かるのですが、例えば座標x600 y500で始まるようにするのはどうしたら良いのでしょうか。 下記のアクションスクリプトでは、【オブジェクト】がx600 y500の位置に最初はあるのですが画面のサイズを拡大縮小してもピクリとも動きません。 Stage.align = "TL"; Stage.scaleMode = "noScale"; Stage.addListener(this); this.onResize = function() { _root.main_mc._x = 600;( Stage.width - _root.main_mc._width ) /2; _root.main_mc._y = 500;( Stage.height - _root.main_mc._height) /2; _root.back_mc._width = Stage.width; _root.back_mc._height = Stage.height; } this.onResize(); いまいち分かりにくい質問ですが伝わりますでしょうか。 分かる方、宜しくお願い致します。

    • ベストアンサー
    • Flash
  • FlashMXでのスクリプトの質問。

    FlashMXでのスクリプトの質問です。 1~30フレームまで5回繰り返して、その後31フレームに移り最後の60フレームでストップするというアクションをさせるには、どのようなスクリプトを使えばいいのでしょうか? 30フレーム目に1フレーム目に戻り5回繰り返すというアクション(これが分かりません。)、その後、6回目には31フレームに移り(gotoAndPlay(31);でしょうか?)そのまま最後の60フレームまで進み、60フレーム目で停止(stop();)。 これくらいしか私には分かりません。 どうか知恵をお貸し下さい。 宜しくお願いします。

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

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

  • オブジェクトアクションの設定について

    FlashMXでバナーを作成する際、オブジェクトアクションの指定があり、ヘルプを読んで設定しましたが、初心者なものでわからない点が多々ありました。初歩的な質問ばかりですみませんが・・・わかる方教えてください。 Q1.オブジェクトアクションは、インスタンスごとに設定するとあったので下記のように行ったのですが・・・ (1)シンボルを配置したフレームをクリックして、 (2)インスタンスをクリックして、 (3)プロパティでグラフィック(作成したのはすべてグラフィックシンボルでした)をボタンに変更して、 (4)アクションパネルにスクリプトを記入する。 これを全フレーム内のインスタンスすべてに 繰り返す、というのでよかったのでしょうか? 長いフラッシュだと大変な作業ですし、もしかしたら間違っているのではと思っています。。 Q2.グラフィックシンボルなのに、ボタンに変更しないとスクリプトが書き込めないのはなぜですか。 Q3.ボタンにはインスタンス名を書き込む欄が出てきますが、これはどんな役割があるのでしょうか。 Q4.スクリプトは、 on (release) { getURL(_root.clickTAG, _root.targetTAG);} という内容ですが、これの正確な意味を教えてください。

    • ベストアンサー
    • Flash
  • アクションスクリプトで、ムービークリップを5回だけ回転させたい。

    アクションスクリプトのど素人です。 ムービークリップを何回転かさせてストップさせたいのですが、うまくいかず永久に回転し続けます。 どこに問題があるのでしょうか・・・。使用バージョンは8です。 onClipEvent (enterFrame) { for(i=0; i<5; i++) this._rotation += 40; } 初歩的な質問ですいません(> <)

    • ベストアンサー
    • Flash
  • アクションスクリプト オブジェクト指向

    アクションスクリプトを独学で勉強しています。 クラスの所、難しいです。オブジェクト指向を 勉強したいのですが、何か良い本ないでしょうか? またXMLもチンプンカンプンです。あくまで アクションスクリプトを勉強しているという 観点でお願い致します。

    • ベストアンサー
    • Flash
  • Flash CS4のアクションスクリプトについて

    Flashを初めて購入しました。CS4です。 Flash CS4の解説書はまだ4冊ぐらいしか出版されていません。 全て基本的な使い方しか載っていませんでした。 ウェブサイトを実際に作る「実践編」の本はCS3を見るしかない現状です。そこで質問です。 (1)CS3とCS4の違いはモーショントゥイーンの部分だけですか? (2)CS3とCS4ともに、アクションスクリプトは同じ3.0となっていますが、それであれば、アクションスクリプトの設定の仕方などはCS3の本に書かれていることと同じでしょうか? どなたかわかる方お願いします。

    • ベストアンサー
    • Flash
  • アクションスクリプトについて質問です。

    アクションスクリプトについて質問です。 ◆やりたいこと◆ 曜日を取得して、その曜日のフレーム内容を表示させたいです。 ◆試したこと◆ アクションスクリプトをいろいろなサイトを見ながら作ってみました。 myDate = new Date(); myDay = myDate.getDay(); if (myDay == 0) { gotoAndStop("sun"); } else if (myDay == 1) { gotoAndStop("mon"); } else if (myDay == 2) { gotoAndStop("tue"); } else if (myDay == 3) { gotoAndStop("wed"); } else if (myDay == 4) { gotoAndStop("thu"); } else if (myDay == 5) { gotoAndStop("fri"); } else if (myDay == 6) { gotoAndStop("sat"); } ◆不具合内容◆ データは表示されるのですが、myday のsun がまず表示されてしまいます。 ブラウザの更新をかけないと、その曜日のフレームの内容が表示されません。 3台のPCで試しましたが、同様な状態になります。 アクションスクリプトに不具合があるかと思うのですが 無知なため、これ以上のアイデアがでません。 どこを修正すれば良いのかお教えいただけませんでしょうか? こちらの作成ソフトはfrimo 3 で ActionScript2.0、Flash Player8で吐き出ししております。

専門家に質問してみよう