Большое спасибо за комментарий, но я решил проблему немного по другому. Этот вариант немного неудобен, т.к. приходится создавать бесконечное количество экземпляров класса Tween, которые остаются висеть в памяти. Я решил все сделать на одном экземпляре. Получилось примерно так (my_mc - это клип, который нужно двигать):

Код:
import mx.transitions.Tween;
import mx.transitions.easing.*;
tween_start = this['my_mc']._x;
tween_finish = 350;
tween_time = 2;
tween_obj = this['my_mc'];
sub_menu_tween = new Tween(tween_obj, "_x", none, tween_start, tween_finish, tween_time, true);
// не совсем понимаю, для чего нужна следующая строка,
// но без этого не работает
sub_menu_tween.start();
sub_menu_tween.stop();
stop();
function showSubMenu(pos) {
sub_menu_tween.continueTo(tween_finish,tween_time/(tween_finish-tween_start)*(tween_finish-sub_menu_tween.position));
}
function hideSubMenu() {
sub_menu_tween.continueTo(tween_start, tween_time/(tween_finish-tween_start)*(sub_menu_tween.position-tween_start));
}