
Код AS3:
//Создаём квадрат
var quad:Shape = new Shape();
quad.graphics.beginFill(0x000000);
quad.graphics.drawRect(0, 0, 32, 32);
addChild(quad);
var points:Array = [];
var min:int = 5, max:int = 10; //Сколько точек будет - случайное число между 5 и 10.
var numPoints:int = min + Math.round((max - min) * Math.random());
for(var i:int = 0; i < numPoints; i ++) points.push(new Point(Math.random()*(stage.stageWidth - quad.width), Math.random()*(stage.stageHeight-quad.height)));
var position:Number = 0; // позиция анимации
var speed:Number = 1; // пикселей в кадр
var distance = calculateDistance(points); // Общая длина пути
this.addEventListener(Event.ENTER_FRAME, update);
function calculateDistance(arr:Array):Number
{
var distance = 0;
for(var i:int = 1; i < arr.length; i++)
distance += Point.distance(arr[i] , arr[i-1]);
return distance;
}
function update(e:Event):void
{
//Эта функция будет вызываться каждый кадр
if(position > distance)
return;
var distanceSum:Number = 0;
for(var i:int = 1; i < points.length; i++)
{
var currDist = Point.distance(points[i], points[i-1]);
if(distanceSum + currDist > position) //Мы нашли промежуток, в котором находимся
{
var pos:Point = Point.interpolate(points[i], points[i-1], (position - distanceSum)/currDist);
quad.x = pos.x; // quad меняем на кастомную фигуру
quad.y = pos.y;
break;
}
distanceSum += currDist;
}
position += speed;
}