Проблема в том, что вы ссылаетесь на ArrayCollection, не импортируя его сначала в вызывающую программу. Я точно знаю, что вы пытаетесь сделать - включить этот класс во время выполнения для стандартного использования, но Flash не допустит этого. Без явной ссылки на класс flash вынужден угадывать, что такое «ArrayCollection» - поэтому выдает ошибку проверки при компиляции. Я попробовал это с несколькими различными типами классов = и его стандартным поведением.
Примечание - если вы создаете экземпляр класса в вызываемом объекте - вы можете получить ссылку в вызывающем объекте на правильно типизированный объект:
package ro.vnc.modules
{
import mx.collections.ArrayCollection;
public class ModuleManager
{
public var d:ArrayCollection;
public function ModuleManager()
{
d = new ArrayCollection();
var c:Number=5;
trace('ModuleManager', c);
}
}
}
, но как только вы указываете его как тип в вызывающей программе, вы получаете ошибку проверки.
protected function hndComplete(event:Event):void
{
var cls:Class=(event.target as LoaderInfo).applicationDomain.getDefinition('ro.vnc.modules.ModuleManager') as Class;
var instance:Object=new cls();
trace(instance.d); //[object ArrayCollection]
var d1:ArrayCollection = instance.d; // throws verify error
var d2:* = (event.target as LoaderInfo).applicationDomain.getDefinition(instance.d); // throws reference error
}
Решение состоит в том, чтобы импортировать тип в вызывающем классе.
(Хотя я бы хотел, чтобы кто-то придумал решение для этого сценария, которое работает без дополнительного импорта ...)
ура!