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

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

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

Регистрация: Jun 2009
Сообщений: 9
По умолчанию Загрузка в SWF другой SWF и использование его методов

Есть основной swf с назначенным ему классом AS3. в него пытаюсь загрузить другой swf, у которого в свою очередь свой класс. При попытке обратиться к методам загруженного swf из Основного swf возникает ошибка - TypeError: Error #1006: playerList не является функцией.
Код AS3:
		private function onChatBtn(event:Event)
		{
 
			var context:LoaderContext = new LoaderContext();
			context.checkPolicyFile = true;
 
			chatLoader = new Loader(); 
			chatLoader.contentLoaderInfo.addEventListener( Event.INIT, loadChat ); 
			chatLoader.load( new URLRequest("http://127.0.0.1/chat.swf"),context ); 
 
		}
		public function loadChat(event:Event)
		{
			var arr:Array = ["1","2"];
			var chatMovie:* = event.target.content;
			this.addChild(chatMovie);
			chatMovie.playerList(arr);
			//chatMovie.chatStart(socket);
		}
в загруженном SWF есть метод:
Код AS3:
		public function playerList(list:Array)
		{
			plList = list;
			this.playerSpis.text=plList.join("\n");
		}
оба файла находятся в корне одного домена, там же лежит crossdomain.xml

Добавлено через 2 минуты
в конструкторах классов обоих swf имеется след. код:
Код AS3:
Security.loadPolicyFile('http://localhost/crossdomain.xml');			
			Security.loadPolicyFile('xmlsocket://localhost:666');
			Security.allowDomain("http://127.0.0.1/");
в приложении используется и обычная загрузка и загрузка через сокет

Старый 30.06.2009, 18:13
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 2  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Используйте интерфейсы.
__________________
Griver

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

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
А чем считает флеш playerList?
Т.е. если ошибка типа хотелось бы понять что по чем... Я там звездочку видел, мало ли...

Старый 01.07.2009, 11:50
Gal4enochek вне форума Посмотреть профиль Отправить личное сообщение для Gal4enochek Найти все сообщения от Gal4enochek
  № 4  
Ответить с цитированием
Gal4enochek

Регистрация: May 2008
Адрес: Днепропетровск
Сообщений: 151
Отправить сообщение для Gal4enochek с помощью ICQ
Я что-то подобное делала, у меня так работает:
Код AS3:
private var swf_loader				: Loader;
//....
swf_loader = new Loader();
swf_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadSWFCompleteHandler);
swf_loader.load(new URLRequest(DataContainer.BITMAP_SWF_PATH));
//...
 
private function loadSWFCompleteHandler(event :Event):void{
	var lib :Object = swf_loader.content;
	var bmp :BitmapData = lib.getBitmapData(id); // вызов функции из класса в загруженной свф-ке
}

Старый 01.07.2009, 12:07
Snut вне форума Посмотреть профиль Отправить личное сообщение для Snut Посетить домашнюю страницу Snut Найти все сообщения от Snut
  № 5  
Ответить с цитированием
Snut
 
Аватар для Snut

Регистрация: Jun 2005
Адрес: Москва
Сообщений: 489
Отправить сообщение для Snut с помощью ICQ Отправить сообщение для Snut с помощью MSN Отправить сообщение для Snut с помощью Skype™
Adomax, куда типизацию потеряли?
__________________
Работаю

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

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

Код AS3:
var chatMovie:* = event.target.content;
и
Код AS3:
var lib :Object = swf_loader.content;
Даю подсказку: content Вы берете у чего?

UPD. Я ошибся. Эти ссылки указывают на один и тот же объект.
Тогда все должно работать, при условии наличия playerList в document class'е подгружаемой swf.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 01.07.2009 в 12:33.
Старый 01.07.2009, 14:39
Adomax вне форума Посмотреть профиль Отправить личное сообщение для Adomax Найти все сообщения от Adomax
  № 7  
Ответить с цитированием
Adomax

Регистрация: Jun 2009
Сообщений: 9
mre, допустим написал интерфейс в базовом классе iChat, перечислил в нем все public методы класса chat.
как мне потом сказать flash-у, что загруженный мувик использует интерфейс iChat.
И нужно ли написать в классе chat : implements iChat? и если нужно, где тогда хранить интерфейс?
или вообще нужно создать отдельный as3 файл с классом chat и интерфейсом iChat?

dimarik, я пробовал вот так:

Код AS3:
var chatMovie:* = chatLoader.content;
this.addChild(chatMovie);
chatMovie.playerList(arr);
не работает, а вот это:
Код AS3:
var chatMovie:Object = chatLoader.content;
this.addChild(chatMovie);
chatMovie.playerList(arr);
выдает ошибку:
1118: Implicit coercion of a value with static type Object to a possibly unrelated type flash.displayisplayObject.

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Код AS3:
chatMovie['playerList'](arr);
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 01.07.2009, 15:08
Adomax вне форума Посмотреть профиль Отправить личное сообщение для Adomax Найти все сообщения от Adomax
  № 9  
Ответить с цитированием
Adomax

Регистрация: Jun 2009
Сообщений: 9
dimarik,
Код AS3:
chatMovie['playerList'](arr);
так же выдает 1006 ошибку

Код AS3:
var arr:Array = ["1","2"];
            var chatMovie:Object = chatLoader.content;
            chatMovie.playerList(arr);
тоже ничего не дало.

Snut, можно подробней про типизацию..... верней что я забыл?

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от Adomax Посмотреть сообщение
dimarik,
так же выдает 1006 ошибку
Значит, у content нет такого метода.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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