честно говоря не въехал в код...но насколько я понимаю логику все происходит из за того что ты переписываешь второй раз onEnterFrame.

Код:
_root.ball._x = 150;
_root.ball._y = 0;
t = 0;
x0 = 10;
y0 = 1;
v0 = 18;
a = 10;
v1 = v0 * 0.8;
_root.onEnterFrame = function() {
vy = v0 * t + (a * t * t) / 2;
t = t + 0.6;
_root.ball._x = x0 + v0 * t;
_root.ball._y = y0 + vy * t + (a * t * t) / 2;
if (_root.ball._y > 400) {
trace("fall");
//при падении на землю
t = 0;
_root.ball._x = z;
//точка падения по x(правильно ли)
t = t + 0.5;
vy2 = -vy * 0.8;
_root.ball._x = z + v0 * t;
//на деле должно быть движение в правый верхний угол, а на деле лажа
_root.ball._y = 400 + vy * t - (a * t * t) / 2;
_root.ball._rotation += 10;
// вращение
}
};
а вот чтобы он двигался в другой угл надо еще повозиться