(AS3)影片剪辑的运动路径作为舞台上的形状



我正在为一个学校项目制作游戏。这个概念很简单,你需要固定电路导线(矩形路径),这样电流就可以穿过电路并点亮灯泡。

我正试图找到一种方法,让一个电影剪辑穿越电线。我看过很多教程,其中列出了运动路径的坐标和角度,但我想让它自动遵循舞台上的形状路径,这样即使路径发生了变化(对于不同级别),电影剪辑也会遵循该路径。到目前为止,我所能做的就是在电影剪辑中创建一个预定义的引导路径,以跟踪路径。

后续问题:是否还有一种方法可以检测形状路径是否完整?系统将检查导线是否相互连接。

你应该在移动你想要的东西之前进行元数据计算,这样你首先计算你的谜题是否解决了,一旦解决了,或者一旦你确定了你的可移动对象应该停止并显示错误的点,然后你从简单的部分中创建一条路径,然后让你的对象一个接一个地移动,直到最后一点,然后显示结果。这是总体思路。分段移动对象的简单代码如下所示:

var sections:Vector.<Point>; // we need x&y sequence. Fill this prior to launching the routine
var position:int=0; // where are we now
var velocity:int=8; // pixels per frame, adjust as needed
movable.addEventListener(Event.ENTER_FRAME,moveABit);
function moveABit(e:Event):void {
    var nextPoint:Point=sections[position];
    var do:DisplayObject=e.target as DisplayObject; // what we are moving
    var here:Point=new Point(do.x,do.y);
    if (Point.distance(here,nextPoint)<velocity) {
        // this means we are too close to interpolate, just place
        do.x=nextPoint.x;
        do.y=nextPoint.y;
        position++;
        if (position>=sections.length) {
            // movement finished
            // TODO make your final animation
            do.removeEventListener(Event.ENTER_FRAME,moveABit); // stop moving
        }
    } else {
        // interpolate movement
        var angle:Number=Math.atan2(nextPoint.y-here.y,nextPoint.x-here.x);
        do.x+=Math.cos(angle)*velocity;
        do.y+=Math.sin(angle)*velocity; 
        // if the object will move to wrong direction, fix this code!
    }
}

如果你想看看你的"形状"是否完整:您可以创建一个布尔变量的向量(每个变量都表示导线的一个节点-连接时将变量设置为true),并且您需要一个函数来检查向量中的所有变量是否为true(带循环),这意味着您的形状是完整的。希望这个想法能有所帮助!