下面是一个使用AS3实现通过不同的位置移动物体的代码示例:
import flash.display.Sprite;
import flash.events.Event;
// 创建一个物体对象
var object:Sprite = new Sprite();
object.graphics.beginFill(0xFF0000);
object.graphics.drawRect(0, 0, 50, 50);
object.graphics.endFill();
addChild(object);
// 设置物体的初始位置
object.x = 100;
object.y = 100;
// 定义目标位置数组
var targetPositions:Array = [
{ x: 200, y: 100 },
{ x: 200, y: 200 },
{ x: 100, y: 200 },
{ x: 100, y: 100 }
];
var currentTargetPositionIndex:int = 0;
// 添加帧侦听器来移动物体
addEventListener(Event.ENTER_FRAME, moveObject);
function moveObject(event:Event):void {
// 获取当前目标位置
var currentTargetPosition:Object = targetPositions[currentTargetPositionIndex];
// 计算物体的移动速度
var dx:Number = currentTargetPosition.x - object.x;
var dy:Number = currentTargetPosition.y - object.y;
var speed:Number = 2;
// 移动物体
object.x += dx * speed;
object.y += dy * speed;
// 检查是否到达目标位置
if (Math.abs(dx) < 1 && Math.abs(dy) < 1) {
// 切换到下一个目标位置
currentTargetPositionIndex++;
// 如果已经到达最后一个位置,则重置索引以重新开始
if (currentTargetPositionIndex >= targetPositions.length) {
currentTargetPositionIndex = 0;
}
}
}
在上面的代码中,我们创建了一个红色的方形物体,并定义了一个目标位置数组targetPositions
,其中包含了物体需要移动到的不同位置。然后,我们使用帧侦听器来在每一帧中移动物体。在每一帧中,我们计算物体需要移动的距离,并根据一个速度值来更新物体的位置。当物体接近目标位置时,我们切换到下一个目标位置,并在到达最后一个位置后重新开始。