• 締切済み

flash actionscriptとタイムライン

flash CS4 Xpでの開発環境です。 メインのタイムラインとムービークリップ自身が持つタイムラインの二つのラインがあります。メインのタイムラインは5fで構成されており、1Fずつキーフレームが設置してあります。 メインのタイムライン上にアクションスクリプト 1F目 var flag=0; stop(); if(flag=1){gotoAndPlay(2)} と書かれています。 ムービークリップはメインのタイムライン上の1F目に設置してあり,ムービークリップのタイムラインは60Fで構成されていて、60F目にactionscript flag=1; と書いています。 ムービークリップの動きがすべて終わってから、メインのタイムラインを2F目に進めたいのですが、現状ではすぐに2F目にうつってしまうような感じになってしまっています。 どこがいけないのでしょうか? もし知っている方がいましたらご教授いただきたいです。 よろしくお願いします。

みんなの回答

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

ActionScript2.0以下なのか3.0なのかがご質問からは判断できませんが, どちらにしても if(flag=1){gotoAndPlay(2)} これは変です。 flag=1 の 「=」 は代入演算子です。 変数flagに1を代入しなさい という意味になります。 if判定では true が返ります。 「=」ではなく「==」にする必要があると思います。 「==」が等価演算子です。

  • joy_28
  • ベストアンサー率84% (45/53)
回答No.2

AS3.0をお使いなら、 -MainTimeLine側: //ここから stop(); var flag:Boolean = false; var n:int=0;//フレームを数えるカウンターで、検証用 addEventListener(Event.ENTER_FRAME,xEnterFrame,false,0,true); function xEnterFrame(e:Event):void { n++; if (flag) { gotoAndStop(2); removeEventListener(Event.ENTER_FRAME,xEnterFrame); } trace(n); } //ここまで -MovieClipの最終フレーム: //ここから this.stop(); this.parent.flag=true; //ここまで となります。

  • joy_28
  • ベストアンサー率84% (45/53)
回答No.1

jjoe56513さん、 -MainTimeLine側 //ここから stop(); var flag = 0; var n:Number=0;//追記、フレームを数えるカウンターで、検証用 this.onEnterFrame = function():Void {//追記、flagの変化を常時監視し、 n++;//カウントアップ if (flag == 1) {//MovieClipの最後のフレームで、_root.flag=1としてるので、これが、達成されたら、 gotoAndStop(2);//MainTimeLineが第二フレームに移動して、停止 this.onEnterFrame=null;//同時に、不要なonEnterFrameを無効化する } trace(n);//検証用 }; //ここまで 尚、if(flag=1)は、変数 flagを1にしたならの意味で、if(flag==1)はflagが、1ならばの意味ですから、意味が異なります。このサイトだと、見えずらいのですが、一つのイコールと2つ連続したイコールの意味です。 -MovieClip側:最終フレームに、 this.stop(); _root.flag=1;//この場合は、this._parent.flag=1;でもいいです。

jjoe56513
質問者

お礼

回答ありがとうございます。 無事これでやりたいことができるようになりました。 ただ、actionscript3.0から_root.が廃止されたそうでthis._parent.flagをつかったところ無事できました。本当にありがとうございました。