Ну вот, в принципе уже больше похоже на то, что мне нужно.
Но всё-равно есть один косяк, с которым никак не могу справиться...
Когда объект сталкивается со стеной с левой стороны, и когда мышкой поворачиваем объект слева, то он как-то резко поворачивается, дёргается...
В общем, чтоб было более понятно, я прикрепила файл...
Может кто-нибудь знает, в чём дело? Очень буду рада за помощь!
Мой обновлённый код:

Код AS1/AS2:
step = 3;
onEnterFrame = function(){
var dx = _xmouse - p._x;
var dy = _ymouse - p._y;
//Направление (угол) к цели
var angle = Math.atan2(dy, dx);
var dist = Math.sqrt(dx*dx + dy*dy);
if(dist > step) {
//пробуем пройти напролом
tgtX = p._x + step * Math.cos(angle);
tgtY = p._y + step * Math.sin(angle);
p.p2.play();
if (zone.hitTest(tgtX, tgtY, true)){
p.p2.stop();
if (!zone.hitTest(p._x, p._y, true)) {
tgtX = p._x;
tgtY = p._y;
p._rotation = angle * 180/Math.PI;
}
}
var timeDx = tgtX - p._x;
var timeDy = tgtY - p._y;
//направление движения
direction = Math.atan2(timeDy, timeDx);
var dAngle = dAngleDegree(direction*180/Math.PI, p._rotation);
//поворачиваем клип в направлении движения на 5-ю часть
var r = p._rotation + dAngle * .2;
p._rotation = r;
p._x = tgtX;
p._y = tgtY;
} else {
//стоим
p.p2.stop();
tgtX = p._x;
tgtY = p._y;
}
}
function dAngleRadian(a1, a2) {
var da = a1 - a2;
if (da > Math.PI) {
da = -Math.PI*2 + da;
} else if (da < -Math.PI) {
da = Math.PI*2 + da;
}
return da;
}
function dAngleDegree(a1, a2) {
var da = a1 - a2;
if (da > 180) {
da = -360 + da;
} else if (da < -180) {
da = 360 + da;
}
return da;
}
function degree(a) {
return a / Math.PI * 180;
}
function radian(a) {
return a / 180 * Math.PI;
}