1

正しい構文が必要なだけです...エラーが発生し続けます。

現在のコードは次のようになります。

for (var i = movieClip.currentFrame; i<15; i++){

   movieClip.currentFrame+1

}
4

3 に答える 3

1

何を達成しようとしていますか?特定のフレームから別のフレームまで再生したい場合、これは適していません。とはいえ、与えられた現在の回答は理解できません。読み取り専用プロパティですMovieClip.currentFrame。そのため、実際に機能する答えはなく、コードをテストしたものもありませんでした。私はその答えに反対票を投じました。これが、エラーが発生する理由でもあります。

myMc.currentFrame = 5; 
// gives an error, since this property is read-only, you cannot set it.

特定のフレームにジャンプするには、 パラメータとして framenumber または framelabel を指定して または をgotoAndStop()使用します。gotoAndPlay()

myMc現在のフレームから (たとえば) フレーム15までと呼ばれるクリップを再生したい場合は、これを試してください

myMc.addEventListener(Event.ENTER_FRAME, onEnterFrame);

function onEnterFrame(event:Event):void
{
 if (myMc.currentFrame < 15)
 {
   myMc.gotoAndStop(myMc.currentFrame + 1);
 }
}

ご覧のとおり、enterframe リスナーを作成しました。それが何をするのか理解できない場合; これにより、onEnterFrame関数 (以下で定義) がフレームごとに実行されます。フレームごとに移動先を決定する必要があり、ループでは不可能なため、必要です。時間の経過とともに変更する必要があります。この例は機能しますが、順方向に再生する必要がある場合、またはより具体的にする必要がある場合にのみ機能します。いつcurrentFrame下にあり15ますか?フラムが 20 の場合は、立ち往生しています。必要に応じて、逆方向にも再生するようにして修正しましょう。

myMc.addEventListener(Event.ENTER_FRAME, onEnterFrame);

function onEnterFrame(event:Event):void
{
 if (myMc.currentFrame < 15)
 {
   myMc.gotoAndStop(myMc.currentFrame + 1);
 }
 else if (myMc.currentFrame > 15)
 {
   myMc.gotoAndStop(myMc.currentFrame - 1);
 }
}

よし、これで逆再生もできるはずだ。さて、目的のフレームに到達したらチェックをやめたほうがいいでしょう。そのため、イベントリスナーを削除する必要があります。

myMc.addEventListener(Event.ENTER_FRAME, onEnterFrame);

function onEnterFrame(event:Event):void
{
 if (myMc.currentFrame < 15)
 {
   myMc.gotoAndStop(myMc.currentFrame + 1);
 }
 else if (myMc.currentFrame > 15)
 {
   myMc.gotoAndStop(myMc.currentFrame - 1);
 }
 if (myMc.currentFrame == 15)
 {
   myMc.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
 }
}

これがあなたの質問の答えになるはずです。ただし、ターゲットのムービークリップと endFrame を指定できる関数を作成するとよいでしょう。

function playClipTo(clip:MovieClip, targetFrame:int):void
{
  clip.targetFrame = targetFrame;
  // since MovieClip is dynamic, you can add non-excisting properties. 
  // If your using classes, you would extend MovieClip and create a public variable for this. But for now its fine.
  clip.addEventListener(Event.ENTER_FRAME, onClipEnterFrame);
}

function onClipEnterFrame(event:Event):void
{
 var clip:MovieClip = MovieClip(event.target); // this referres to any clip with a listener
 if (clip.targetFrame)
 {
  if (clip.currentFrame < clip.targetFrame)
  {
   clip.gotoAndStop(clip.currentFrame + 1);
  }
  else if (clip.currentFrame > clip.targetFrame)
  {
   clip.gotoAndStop(clip.currentFrame - 1);
  }
  if (clip.currentFrame == clip.targetFrame)
  {
   clip.removeEventListener(Event.ENTER_FRAME, onClipEnterFrame);
   delete clip.targetFrame;
  }
 }
 else
 {
   clip.removeEventListener(Event.ENTER_FRAME, onClipEnterFrame);
 }
}

この関数を使用すると、これを行うことができます

playClipTo(myMc, 15); // ha, familiar example!
playClipTo(myMc2, 5); // another clip, play to frame 5

これが役立つことを願っています。ところで、フレームラベルからフレームラベルにジャンプする必要がある場合、または速度、イージング、遅延をさらに制御する必要がある場合は、TweenLiteなどのトゥイーン エンジンを調べることができます。コード。フラッシュの世界では非常に一般的ですが、このような比較的単純なタスクの開発時間を節約できます。

于 2012-09-30T21:30:07.323 に答える
-1

ループの内側に置く

if (movieClip.currentFrame < theNumberToIncreaseTo) {
     movieClip.currentFrame = movieClip.currentFrame + 1;
}
于 2012-09-30T17:41:45.407 に答える
-2

多分

movieClip.currentFrame = movieClip.currentFrame + 1

それ以外の

movieClip.currentFrame+1
于 2012-09-30T17:40:53.927 に答える