Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Ошибка Coercion внутри библиотечного клипа (http://www.flasher.ru/forum/showthread.php?t=169001)

mikhailk 26.09.2011 17:35

Ошибка Coercion внутри библиотечного клипа
 
Есть библиотечные мувиклипы ClipA и ClipB. ClipB вложен в ClipA и имеет инстанснэйм сlipВ. Библиотека (файл swf) подгружается на этапе выполнения стандартным образом (libraries - массив библиотек):

Код AS3:

libraries[libraryIndex] = loader.contentLoaderInfo.applicationDomain.getDefinition;

Потом объект класса ClipA создается следующим образом:

Код AS3:

var objectClass:Class = libraries[libraryIndex]("ClipA") as Class;
var object:Object = new objectClass;

Все работает и objectClass==[class ClipA] , однако периодически вылетает эксепшн:
Error #1034: Ошибка типа Coercion: невозможно преобразовать flash.display::MovieClip@94ee4a1 в ClipB.

Кто сталкивался и как победить?

Добавлено через 11 минут
getStackTrace():

Код:

Error #1034: Ошибка типа Coercion: невозможно преобразовать flash.display::MovieClip@8a040f9 в ClipB.
        at flash.display::Sprite/constructChildren()
        at flash.display::Sprite()
        at flash.display::MovieClip()
        at ClipA()


-De- 26.09.2011 18:24

Не понятно. instance name не имеет никакого отношения к имени класса. Т.е. если там мувик с именем ClipB, то он не обязан приводиться к типу ClipB.

mikhailk 26.09.2011 18:39

Инстанстэйм действительно ни при чем.
После перекомпиляции библиотеки проблема вроде исчезла, но немного смущает плавающий характер.

Да, забыл сказать, проявляется только при запуске из под FD.

Добавлено через 49 часов 54 минуты
Опубликую результат локализации (вдруг кто столкнется).

1. Опытным путем выяснилось, что ошибка возникала только в дебагплеерах (пробовал 10.1-10.3), при этом при показе через браузер ошибки не происходило.

2. Ошибка возникала, когда вложенный клип (в примере - ClipB) имел класс и настройки "Эскпорт для ActionScript в первый кадр". Соответственно, там где вложенным клипам классы для доступа из кода не нужны, я эти классы убрал, а там, где нужны, сдублировал вложенные клипы - т.е. ClipB остался для доступа из кода, а ClipBInsider без класса - заменил ClipB внутри ClipA.


Часовой пояс GMT +4, время: 14:16.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.