В чем причина ошибки Flash # 2012 (не удается создать экземпляр класса)? - PullRequest
13 голосов
/ 16 сентября 2008

Я новичок в ActionScript 3 и столкнулся с проблемой:

Используя Flex Builder 3, я создал проект с несколькими простыми классами. Если код в классе A создает экземпляр объекта класса B (класс B находится в своем собственном исходном файле), тогда код компилируется нормально, но я получаю следующую ошибку времени выполнения:

ArgumentError: Ошибка № 2012: экземпляр класса B не может быть создан.

Может кто-нибудь объяснить, что я делаю не так?

Обновление: Пожалуйста, смотрите мой собственный ответ ниже (я не смог проголосовать за него, поскольку я еще не зарегистрирован).

Ответы [ 3 ]

21 голосов
/ 16 сентября 2008

Я наконец понял, что было не так: класс B был подклассом из DisplayObject, который теперь я вижу как абстрактный класс. В классе B не реализованы абстрактные члены, поэтому ошибка. Я, вероятно, вместо этого заменю класс B на подкласс от Sprite.

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

Спасибо за ответы всех, надеюсь, они помогут другим, кто столкнется с ошибкой 2012 года.

2 голосов
/ 16 сентября 2008

Обычно это означает, что информация о классе не была включена в SWF.

Убедитесь, что вы импортируете класс и где-то есть ссылка на него (чтобы компилятор включил его в SWF).

Кстати, вот коды ошибок времени выполнения:

http://livedocs.adobe.com/flex/201/langref/runtimeErrors.html

(хотя и мало полезной информации)

микрофонные камеры

mesh@adobe.com

0 голосов
/ 16 сентября 2008

Стоит отметить, что если вы включаете классы, которые кто-то создал, и они использовали Flash CS3, а вы используете Flex или наоборот, то основные библиотеки каждого из них различны, и некоторые вещи не включены , Проверьте два справочных документа, чтобы быть уверенным:

CS3: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/

Flex: http://livedocs.adobe.com/flex/2/langref/

...