正しい構文が必要なだけです...エラーが発生し続けます。
現在のコードは次のようになります。
for (var i = movieClip.currentFrame; i<15; i++){
movieClip.currentFrame+1
}
正しい構文が必要なだけです...エラーが発生し続けます。
現在のコードは次のようになります。
for (var i = movieClip.currentFrame; i<15; i++){
movieClip.currentFrame+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などのトゥイーン エンジンを調べることができます。コード。フラッシュの世界では非常に一般的ですが、このような比較的単純なタスクの開発時間を節約できます。
ループの内側に置く
if (movieClip.currentFrame < theNumberToIncreaseTo) {
movieClip.currentFrame = movieClip.currentFrame + 1;
}
多分
movieClip.currentFrame = movieClip.currentFrame + 1
それ以外の
movieClip.currentFrame+1