Возможно ли динамическое расширение в AS2 / 3?

Я хотел бы знать, возможно ли и как динамически расширять класс в AS2 / 3.
Что-то вроде:

public class Main extends getDefinitionByName("com.parent") as Class{...}

Я знаю, что это неправильный код, но просто чтобы показать вам, что мне нужно. Может быть, с прототипом?


person user2054758    schedule 03.12.2014    source источник
comment
Не могли бы вы описать сценарий, в котором это было бы полезно? Вы потеряете всю статическую типизацию в своем классе.   -  person Marty    schedule 04.12.2014
comment
когда проект разделен на множество SWF-файлов и вы хотите использовать общие библиотеки без увеличения размера проекта   -  person user2054758    schedule 04.12.2014
comment
Если вы просто хотите совместно использовать ресурсы в файлах, вы можете взглянуть на Общие библиотеки времени выполнения.   -  person blvz    schedule 04.12.2014
comment
Кстати, ответ на этот вопрос заключается в том, что вы не можете сделать это в ActionScript 3, используя систему классов. Вы можете эмулировать систему классов с помощью ванильных объектов, которые наследуют свойства и методы других объектов точно так же, как люди пишут «наследование» в JavaScript.   -  person Marty    schedule 04.12.2014


Ответы (1)


На AS2 это просто:

trace("creating mc0");
this.attachMovie("libraryItemLinkage", "mc0", 0);

MovieClipPlus = function (){
  trace("hello world.");
};
MovieClipPlus.prototype = new MovieClip();
Object.registerClass("libraryItemLinkage", MovieClipPlus); 

trace("creating mc1");
this.attachMovie("libraryItemLinkage", "mc1", 1);

Для AS3 все не так просто. Фактически, это настолько сложно (и медленно), что легче придумать другой способ выполнить то, что вы пытаетесь.

Но если у вас еще есть время и силы, взгляните на flash.utils.Proxy, который даст вам несколько новых идей.

Также проверьте это:

Введение в прокси:
http://ltslashgt.com/2008/01/24/proxy-class-as3/

Создание динамического прокси-сервера с байт-кодом общего доступа AS3:
http://www.as3commons.org/as3-commons-bytecode/proxy.html

person blvz    schedule 03.12.2014
comment
в моем случае MovieClip - это внешний класс. Конечно, я могу загрузить его с помощью getDefinitionByName (MovieClip), но что произойдет, если MovieClip имеет статические поля? - person user2054758; 06.12.2014