Показать сообщение отдельно
Старый 17.06.2010, 10:22
SaloS вне форума Посмотреть профиль Отправить личное сообщение для SaloS Найти все сообщения от SaloS
  № 8  
Ответить с цитированием
SaloS

Регистрация: Jun 2010
Сообщений: 21
в обработчике STAGE_ADDED
Код AS3:
loaderInstance = new Loader();
 
var loadContext:LoaderContext = new LoaderContext();
loadContext.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
//loadContext.applicationDomain = ApplicationDomain.currentDomain;
loaderInstance.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
loaderInstance.contentLoaderInfo.addEventListener(Event.INIT, onInit);
loaderInstance.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
			loaderInstance.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
loaderInstance.load(new URLRequest(gameURL), loadContext);
 
addChild(loaderInstance);
Код AS3:
private function onComplete(event : Event) : void 
{
	var curDomainEvent:Class = getDefinitionByName("game.GameParams") as Class;
	var classGameEvent:Object = loaderInstance.loaderInfo.applicationDomain.getDefinition("interfaces.UserActionEvent");
	var classGame:Object = loaderInstance.loaderInfo.applicationDomain.getDefinition("interfaces.IMainClass");
	var thisclassGame:Class = ApplicationDomain.currentDomain.getDefinition("interfaces.IMainClass") as Class;
	//mainGameClass = IMainClass(loaderInstance.content);
	unsubscribeLoaderEvents();
 
	//mainGameClass.addEventListener(UserActionEvent.USER_ACTION, onUserAction);
}
Это игра вконтакте.
При попытке грузить с помощью URLLoader выдает SandboxSecurityError, типа грузим из другого домена, но на старте и в загружающей и в загружаемой swf есть строка
Код AS3:
Security.allowDomain("*");
Может это из-за секьюрити мне не удается получить дефинишины.

Добавлено через 15 минут
Вот такая ошибка
Код:
Exception fault: ReferenceError: Error #1065: Variable GameParams is not defined.
Добавлено через 47 минут
С загрузкой по getDefinitionByName рахзобрался. Нахрен не нужен этот метод если работаешь со внешней swf.
нужно загружать с помощью ApplicationDomain
Код:
loaderInstance.contentLoaderInfo.applicationDomain.getDefinition("game.GameParams") as Class;
Добавлено через 1 час 41 минуту
короче получаются разные инстансы интерфейсов, которые в загружаемой swf и в лоадере, поэтому и нельзя привести. Получается на флэше невозможна нормальная реализация паттерна Factory, а жаль. Придется делать через жопу, то есть через динамические классы, что не есть гут.