AS3を使用する準備ができていると言ったので、ここに解決策があります。
メインのタイムライン/ステージに配置するクモのアニメーションを含む別のムービー クリップがあるとします。
1.ムービークリップをステージに配置し、「スパイダー」のインスタンス名を付けます。
2. この MovieClip の最初のフレームにこのコードを配置します (アニメーションの反転を処理します)。
import flash.events.Event;
stop();
var _dir:int = 1;
addEventListener(Event.ENTER_FRAME, onEF);
function onEF(e:Event):void
{
getNextAnimationFrame();
}
function getNextAnimationFrame():void
{
var frameNum:int = currentFrame + _dir;
if (frameNum < 1 || frameNum > totalFrames)
{
removeEventListener(Event.ENTER_FRAME, onEF);
}
frameNum = Math.max(1, Math.min(totalFrames,frameNum));
gotoAndStop(frameNum);
}
function changeDirection($dir:int):void
{
_dir = $dir;
removeEventListener(Event.ENTER_FRAME, onEF);
addEventListener(Event.ENTER_FRAME, onEF);
}
3. メイン タイムライン (最初のフレーム) に次のコードを配置します。
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.MouseEvent;
var timer:Timer = new Timer(60 * 1000, 1);
timer.start();
timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTime);
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
function onTime(e:TimerEvent):void
{
trace("it's time");
spiders.changeDirection(1);
}
function onMove(e:MouseEvent):void
{
timer.reset();
timer.start();
spiders.changeDirection(-1);
}
マウス、タイマー、アニメーションを 1 つのコードで処理することは可能ですが、現在のビルド方法は OOP のようなものです。ある時点で適切にビルドすることにした場合、このコードを次のように「書き直す」のは非常に簡単です。別々のクラス。