2008-09-16 1 views
13

Я новичок в ActionScript 3 и столкнулся с проблемой:Что вызывает ошибку Flash # 2012 (не может создать экземпляр класса)?

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

ArgumentError: Error #2012: B class cannot be instantiated.

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

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

ответ

2

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

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

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

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

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

Майк камеры

[email protected]

0

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

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

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

21

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

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

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

+1

Это не может быть перехвачено компилятором, так как нет ключевых слов абстрактный, что компилятор может забрать ее. Он выполняется путем метания, следовательно, ошибки. – NebulaFox 2011-10-07 19:42:33