// koordinatsystem lineStyle(1, 0x000000, 100); moveTo(200, 0); lineTo(200, 400); moveTo(0, 200); lineTo(400, 200); attachMovie("foo", "foo", getNextHighestDepth()); foo._x = foo._y = 200; foo.onEnterFrame = function() { this._rotation = calc_rotation_angle(this, {_x: _root._xmouse, _y: _root._ymouse}); } _root.onEnterFrame = function() { var angle = calc_rotation_angle(this, {_x: _root._xmouse, _y: _root._ymouse}); if (Key.isDown(Key.UP)) { foo._x = foo._x + Math.cos(angle) * 3; foo._y = foo._x + Math.sin(angle) * 3; } if (Key.isDown(Key.DOWN)) { foo._x = foo._x - Math.cos(angle) * 3; foo._y = foo._x - Math.sin(angle) * 3; } } function calc_dist(mc1, mc2) { var a = mc1._x - mc2._x; var b = mc1._y - mc2._y; return Math.sqrt(a*a + b*b); } function calc_rotation_angle(mc1, mc2) { var a = mc1._x - mc2._x; var b = mc1._y - mc2._y; var angle = Math.atan(b / a) / Math.PI*180; if (angle < 0 && b < 0) { angle = 180 + angle; } else if (angle > 0 && b > 0) { angle = -180 + angle; } if (angle == 0 && a > 0) angle = 180; return angle; } function calc_absolute_angle(mc1, mc2) { var a = mc1._x - mc2._x; var b = mc1._y - mc2._y; var angle = Math.atan(b / a) / Math.PI*180; if (b > 0) { if (angle < 0) angle *= -1; // quad 1 else angle = 180 - angle; // quad 2 } else { if (angle < 0) angle = 180 - angle; // quad 3 else angle = 360 - angle; // quad 4 } return angle; }