Это ошибка, которую я получаю в handleModuleReady функции:
[Fault] exception, information=TypeError: Error #1034: Type Coercion failed:
can not convert MyModule@39b8479 to IModuleInterface.
У меня есть настройка приложения, и я создал модули для загрузки во время выполнения, чтобы уменьшить размер файла (поскольку большинству пользователей когда-либо понадобится только один из модулей).
<!-- maker.mxml -->
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns="*"
layout="absolute"
creationComplete="init(event)">
<mx:Style source="css/maker.css" />
<mx:Script>
<![CDATA[
//Modules
import mx.events.ModuleEvent;
import mx.modules.ModuleLoader;
import mx.modules.ModuleManager;
import mx.modules.IModuleInfo;
private var info:IModuleInfo;
...
private function init(e:Event):void {
info = ModuleManager.getModule("MyModule.swf");
info.addEventListener("ready", handleModuleReady);
info.addEventListener("error", handleModuleError);
info.load(ApplicationDomain.currentDomain);
}
private function handleModuleReady(moduleEvent:ModuleEvent):void {
var ichild:IModuleInterface = IModuleInterface(moduleEvent.target.factory.create());
if (ichild != null) {
//call class functions here via ichild object
}
else {
trace("Something has gone wrong.");
}
}
...
</mx:Script>
...
Я создал класс IModuleInterface (IModuleInterface.as), и файл MyModule.mxml компилируется без проблем, но я продолжаю получать ошибку при наборе типов, несмотря на попытки применения различных потенциальных решений, таких как загрузка модуля через ModuleLoader, ModuleManager, и совсем недавно настройка приложения домен.
Пожалуйста, скажите мне, если вы знаете, как это исправить. Остальной интернет не делает. Поверь мне, я посмотрел.
Если уместно, интерфейс выглядит примерно так.
//IModuleInterface.as
package
{
public interface IModuleInterface {
function getSomeClass():Class;
function getSomeArray():Array;
function getSomeInt():int;
}
}