ОК, основная причина для того, чтобы сделать вещи статичными, заключается в том, что если вы хотите сделать его независимым от экземпляра, например, для математических функций в as3 (вы вызываете Math.min (), а не var math = new Math (); math.min () ...) это полезно для справки, повторного расчета, простых действий (добавьте 10 к значению x) и т. д.
проблема с объединением статической и нестатической функциональности заключается в том, что при вызове статической функции существует вероятность того, что класс не имеет экземпляра в этой точке, или (в этом случае) имеется какая-либо ссылка на функцию, которая бы имеет смысл в компиляции (если отдельный класс называется функцией, как он будет ссылаться на openDetailsMenu?).
вам нужно либо получить функцию по имени (например, объект «имя функции»), создать анонимные функции в вашем массиве, либо добавить метод обратного вызова в вашу статическую функцию, что-то похожее на это:
public static function doAction(object:Menu, event:String){
if(event == "details") object.openDetailsMenu() ;
}
В общем, вы просто добавляете слои сложности, которые действительно не помогут. если вы просто добавите функцию класса и заставите их выполнять одно и то же действие, это не займет больше места или усилий, чем если бы вы вызывали статическую функцию. вам нужно подумать о том, как и почему функция будет использоваться в классе (или вне его).