тогда можно попробовать как-то так
делаем интерфейс

Код AS3:
interface IClassWhoCanCallGrandSuper{
function callGrandSuper(funcName:String, level);
}
//и наследуем его в базовом классе определив функцию
function callGrandSuper(funcName:String, level){
if (level==0) return this[funcName]();
else return super.callGrandSuper(funcName, level-1);
}
вызываем
obj.callGrandSuper(myfunc, 3); //myfunc прадедушки
ну, это только идея, я не проверял как оно работать будет. И даже если будет работать - решение не очень. Не факт, что вызов функции в прадедушки сработает в прадедушку - очень может быть, что этого не произойдет, и тогда просто прийдется прицеплять такой кусок к той функции, которую вы хотите вызывать:

Код AS3:
function myfunc(level=0){
if (level>0) return super.lmyfunc(level-1); //это цепляем на каждом уровне вложенности
блаблабла ;//это код самой функции на данном уровне вложенности
}
//и вызываем:
obj.myfunc(1);//родитель
obj.myfunc(2);//дед
obj.myfunc(3);//прадед и тд
//этот вариант будет работать точно.
//может так даже удобней - не надо писать конструкции типа
//obj.super.super.super.super.myfunc()
и можно еще попытаться (UPD: попытался - не работает, может кто скажет почему?) с именем класса поиграться как-то так (тут тоже не знаю сработает ли проверка (super is NeedClass) ):

Код AS3:
function myfunc(NeedClass){
if (super is NeedClass) renturn super.myfunc(NeedClass);
блаблабла;//код на текущем уровне вложенности
}
Добавлено через 23 минуты
последний вариант рабочий если в сравнении написать так:
if (prototype != NeedClass.prototype) return super.myfunc(NeedClass);