• ベストアンサー

mcが停止していたら関数aaaを実行 AS3

ムービークリップ(mc)が停止していたら、mcは関数aaaを実行し、それ以外はmcは関数bbbを実行するAS3は、どう書いたらよいでしょうか function ugoki(evt:Event):void { //「mc」が停止していたら if (******************) { //「mc」は関数aaaを実行 ***********************; //それ以外は「mc」は関数bbbを実行 } else { ***********************; } }

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

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

ムービークリップが停止しているか再生しているかというプロパティは存在しないようです。 しかし、そのようなものは無くても普通は困らないわけで、 グローバルな場所(例:MovieClip(root) や MovieClip(stage) )などに 適当な変数でも作って(例:mc_play_flag)、 再生や停止させる度にその変数の値を true や false にすれば良いだけです。 ※ムービークリップの再生状態は  必ずActionScriptで変化させるはずです。  ActionScriptで変化させるのでしたら  それを把握できないのはおかしいです。  (勝手に 再生状態 が変化するのであれば  把握できなくても当然だと思いますが。) =*= =*= =*= 以上のような当たり前の普通な方法ではなくて、 「真に再生/停止状態を取得する方法を知りたい」 というご質問でしたら次のようにすればできます。 //----------------------------------------- //mcの再生状態を取得する関数getMCStateの定義 function getMCState(e:Event = null):void { //この関数が実行された時点でのmcの再生フレームを取得 var mc_flame:int = mc.currentFrame; //毎フレーム時間 以下のfunctionを実行 addEventListener(Event.ENTER_FRAME, function():void{ //もし上で取得したmcの再生フレームと //現在のmcの再生フレームが同じフレームであれば if(mc_flame == mc.currentFrame){ //関数aaaを実行 aaa(); //もし上で取得したmcの再生フレームと //現在のmcの再生フレームが違うフレームであれば }else{ //関数bbbを実行 bbb(); } //毎フレーム時間 このfunctionを実行するのをやめる removeEventListener(Event.ENTER_FRAME, arguments.callee); } ); } //関数aaaの定義 (例) function aaa():void{ trace("mcは停止してます"); } //関数bbbの定義 (例) function bbb():void{ trace("mcは再生してます"); } //----------------------------------------- =*= =*= =*= ...と、書いてはみましたが こんなことを毎回(同様にある あらゆるたくさんの場合について毎回)考えるより 最初に書いたように 適当な変数を用意してその値を見る方が良いですよ。 ActionScript 1.0 なのでそれ自体は参考になりませんが 「同様にある あらゆるたくさんの場合」の一例として 考え方自体は参考になると思います↓。 「if文 & else if 文」 http://suzupara.iinaa.net/kiso051.html  

koocom
質問者

お礼

BlurFiltan 様 ありがとうございます。勉強になります。 AS3がなかなか理解できないようで・・・・・。いろいろ試してみても検討違いが多いようです。 まだまだ先は長いようです。 頑張ります。

関連するQ&A