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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.03.2010, 02:53
NewFolder вне форума Посмотреть профиль Отправить личное сообщение для NewFolder Найти все сообщения от NewFolder
  № 1  
Ответить с цитированием
NewFolder
 
Аватар для NewFolder

Регистрация: Nov 2006
Сообщений: 155
По умолчанию Подгружаемый swf и общий интерфейс

Есть две swf'ки: main.swf подгружает test.swf
Они обе подключают один и тот же интерфейс ITransition
Document Class файла test.swf реализует этот интерфейс
Когда я подгружаю его в main.swf и пытаюсь конвертировать в ITransition, то получаю null
Перепробовал все варианты ApplicationDomain в LoaderContext - ничего не помогло

Main.as
Код AS1/AS2:
package {
	...
 
	import transitions.ITransition;
 
	public class Main extends Sprite {
		protected var _loader:Loader;
		protected var _transition:ITransition;
 
		protected function onSWFLoaded(e:Event = null):void {			
			initLoader();
			_loader.load(new URLRequest("test.swf"));
		}		
 
		//Once file is successfully loaded
		protected function loadComplete(e:Event):void {
			trace(_loader.content as ITransition);//Выдает null, а мне нужен объект
		}
 
		//Once load error happened
		protected function loadError(e:*):void {
			//ERROR
		}		
 
		//Destroys old object and creates new one
		protected function initLoader():void {
 
			//Destroy old loader object
			if (_loader) {
				_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadComplete);
				_loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, loadError);
				_loader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, loadError);
				_loader = null;
			}
 
			//Init the new loader
			_loader = new Loader();
			_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
			_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
			_loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, loadError);
		}
	}	
}
Test.as
Код AS1/AS2:
package {
	...	
	import transitions.ITransition;
 
	public class Test extends Sprite implements ITransition {
 
		//Constructor
		public function TestTransition() {
 
		}
 
		public function start():void {
			trace("Started");			
		}
 
	}
 
}
__________________
Нет ничего невозможного

Старый 27.03.2010, 04:02
ratin вне форума Посмотреть профиль Отправить личное сообщение для ratin Найти все сообщения от ratin
  № 2  
Ответить с цитированием
ratin
 
Аватар для ratin

Регистрация: Sep 2009
Сообщений: 127
http://help.adobe.com/ru_RU/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f41.html
Вы не можете _создать интерфейс, и тем более его загрузить, вы лишь можете его реализовать. Естественно, на этапе компиляции.


upd: сорри, не увидел ночью, что вы подключаете ITransition к обоим флешкам 0_о


Последний раз редактировалось ratin; 27.03.2010 в 13:18.
Старый 27.03.2010, 10:44
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 3  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от ratin Посмотреть сообщение
Вы не можете _создать интерфейс, и тем более его загрузить, вы лишь можете его реализовать. Естественно, на этапе компиляции.
Не надо умничать.. лучше сами почитайте.
Всё нормально загружается.. более того интерфейсы для этого и нужны чтобы скастовать классы из разных доменов.
по сабжу.. на первый взгляд ничего подозрительного не вижу..попробуйте просто
Код AS3:
trace(_loader.content );
заведите только метод toString. может проблема не в касте?
__________________
Отряд Котовскага

Старый 27.03.2010, 13:09
ratin вне форума Посмотреть профиль Отправить личное сообщение для ratin Найти все сообщения от ratin
  № 4  
Ответить с цитированием
ratin
 
Аватар для ratin

Регистрация: Sep 2009
Сообщений: 127
Цитата:
Сообщение от Котяра Посмотреть сообщение
Не надо умничать.. лучше сами почитайте.
Не надо хамить, ага?

Старый 27.03.2010, 20:17
NewFolder вне форума Посмотреть профиль Отправить личное сообщение для NewFolder Найти все сообщения от NewFolder
  № 5  
Ответить с цитированием
NewFolder
 
Аватар для NewFolder

Регистрация: Nov 2006
Сообщений: 155
Цитата:
Сообщение от Котяра Посмотреть сообщение
Не надо умничать.. лучше сами почитайте.
Всё нормально загружается.. более того интерфейсы для этого и нужны чтобы скастовать классы из разных доменов.
по сабжу.. на первый взгляд ничего подозрительного не вижу..попробуйте просто
Код AS3:
trace(_loader.content );
заведите только метод toString. может проблема не в касте?
мне нужно что-то типа такого
Код AS3:
_transition = _loader.content as ITransition;
если я сделаю, как вы говорите, то флеш даже не скомпилируется
Код AS3:
_transition = _loader.content;
1067: Implicit coercion of a value of type flash.displayisplayObject to an unrelated type transitions:ITransition.
__________________
Нет ничего невозможного

Старый 27.03.2010, 20:50
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 6  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
я имел в виду проверить - а загрузился ли сам класс и проиницализировался ли он? может попробовать на событие INIT? а не COMPLETE? не могу сейчас сам проверить.
__________________
Отряд Котовскага

Старый 27.03.2010, 21:09
NewFolder вне форума Посмотреть профиль Отправить личное сообщение для NewFolder Найти все сообщения от NewFolder
  № 7  
Ответить с цитированием
NewFolder
 
Аватар для NewFolder

Регистрация: Nov 2006
Сообщений: 155
В общем, проблема была в том, что я тестировал прям во флеше, а грузил файлы с локального сервера. Получилось, что у swf'ок были разные домены.

Так же нашел решение для кроссдоменных загрузок http://blog.aleksandarandreev.com/?p=42
__________________
Нет ничего невозможного

Старый 29.03.2010, 10:37
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 8  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
ага.
Код AS3:
var loader:Loader = new Loader();
var addedDefinitions:LoaderContext = new LoaderContext();
addedDefinitions.checkPolicyFile = true;
addedDefinitions.securityDomain = SecurityDomain.currentDomain;
addedDefinitions.applicationDomain = ApplicationDomain.currentDomain;
var request:URLRequest = new URLRequest(myUrl);
loader.load(request, addedDefinitions);
__________________
Отряд Котовскага

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
@Котяра
Не, не получится. У NewFolder

Цитата:
я тестировал прям во флеше
читай local-trusted sandbox.

Цитата:
а грузил файлы с локального сервера.
remote sandbox.

В такой ситуации использовать импортирующую загрузку, указав SecurityDomain запрещено.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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