Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.02.2011, 18:55
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 21  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
nOobCrafter, не упоминать всуе.

Старый 28.02.2011, 12:33
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 22  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
local - remote ( trace(loader.content is BaseScene) ) удалось победить только через Loader#loadBytes.

Добавлено через 10 минут
Не сталкивался в своих проектах с таким случаем. Мы делаем приложение, файлы ресурсов которого находятся на локальной машине, затем при релизе дружно выливаются на сервер. В этом случае, если вид песочниц у ресурса и загрузчика одинаков (local - local и remote - remote), то проблем с приведением нет.

Добавлено через 59 минут
Получился такой вот "всеядный" загрузчик.

Код AS3:
/*
 
  The MIT License, 
 
  Copyright (c) 2011. Dimarik
 
*/
package
{
 
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
import flash.system.LoaderContext;
import flash.system.Security;
import flash.system.SecurityDomain;
 
import baseSceneClasses.BaseScene;
 
/**
 *  @author				Dimarik
 *  @version			1.0
 *  @langversion		3.0
 *  @playerversion		9.0
 * 
 */
[SWF(width="800", height="600", frameRate="21", backgroundColor="#E0EEEE")]
 
public class ClassSubstitutionTest extends Sprite {
 
	//-------------------------------------------------------------------------
	//
	//   Constructor
	//
	//-------------------------------------------------------------------------
 
	public function ClassSubstitutionTest() {
		super();
		super.addEventListener(Event.ADDED_TO_STAGE, this.creationComplete);
	}
 
	//-------------------------------------------------------------------------
	//
	//   Private variables
	//
	//-------------------------------------------------------------------------
	/**
	 * @private 
	 */	
	private const _isRemote:Boolean = Security.sandboxType == Security.REMOTE;
 
	//-------------------------------------------------------------------------
	//
	//   Private methods
	//
	//-------------------------------------------------------------------------
 
	private function creationComplete(event:Event):void {
		super.removeEventListener(event.type, arguments.callee);
		const loader:Loader = new Loader();
		const li:LoaderInfo = loader.contentLoaderInfo;
		li.addEventListener(Event.COMPLETE, this.handler_complete, false, int.MAX_VALUE);
		li.addEventListener(Event.COMPLETE, this.handler_publicComplete);
		const lcxt:LoaderContext = this._isRemote ? new LoaderContext(false, null, SecurityDomain.currentDomain) : null;
		//loader.load( new URLRequest('http://example.com/module3.swf'), lcxt );
		//loader.load( new URLRequest('module3.swf'), lcxt);
	}
 
	//-------------------------------------------------------------------------
	//
	//   Event handlers
	//
	//-------------------------------------------------------------------------
	/**
	 * @private 
	 * Основной обработчик
	 */
	private function handler_publicComplete(event:Event):void {
		const li:LoaderInfo = event.target as LoaderInfo;
		li.removeEventListener(Event.COMPLETE, arguments.callee);
		const test:BaseScene = li.loader.content as BaseScene; // Bingo!
	}
 
	/**
	 * @private 
	 * Вспомогательный обработчик
	 */	
	private function handler_complete(event:Event):void {
		const li:LoaderInfo = event.target as LoaderInfo;
		li.removeEventListener(Event.COMPLETE, arguments.callee);
 
		if (
			   !li.sameDomain
			&& !this._isRemote
		) {
			event.stopImmediatePropagation();
			li.loader.loadBytes(li.bytes);
		}
 
	}
 
}
}
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 28.02.2011 в 15:55.
Старый 01.03.2011, 22:29
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 23  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
спс, на днях потестирую, сейчас срочно подкинули кой чего другое.

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:55.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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