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

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

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

Регистрация: Nov 2010
Сообщений: 6
По умолчанию Загрузка swf с другого домена (loadClip)

Добрый вечер!
Я делаю флеш-прелоадер, главная задача которого состоит в загрузке swf-файлов как локальных, так и находящихся на другом домене. С первым случаем всё работает отлично, со вторым уже несколько дней бьюсь с проблемой:

При попытке загрузить swf-файл (условно назову его game.swf), содержащий собственный прелоадер, мой контейнер (_loader.swf, исходник в приложении) загружает этот файл, но прелоадер самого game.swf остается на нуле, то есть дальше загрузка не идет.
Такая ситуация бывает, когда я открываю _loader.swf через локальный сервер.
Если же запустить скомпилированный файл из Adobe Flash, всё полностью загружается.

Помогите пожалуйста, в чём может быть проблема?
Пример работы _loader.swf на сервере можно посмотреть тут.

[UPD] Пробовал загружать разные swf-ки. Некоторые ведут себя адекватно, некоторые так, как описано выше, а некоторые начинают в цикле воспроизводить первый кадр или несколько (внешне выглядит как мигание картинки с первым кадром загруженного клипа, если есть звуки - успевает проигрываться доля секунды и сначала начинается).

Код AS1/AS2:
Stage.showMenu = false;
Stage.scaleMode = _root.external_scale;
Stage.align = "TL";
 
stop();
System.security.allowDomain('*');
 
bar_mc._xscale = 0;
 
var loader:MovieClipLoader = new MovieClipLoader();
var loadHandler:Object = new Object();
loader.addListener(loadHandler);
 
loadHandler.onLoadInit = function(_mc:MovieClip) {
	bar_mc._visible = false;
	bar_border._visible = false;
	percentage._visible = false;
	_mc._visible = true;
	_mc._lockroot = true;
};
 
loadHandler.onLoadProgress = function(_mc:MovieClip, loaded:Number, total:Number) {
	_mc._visible = false;
	bar_mc._xscale = loaded / total * 100;
	percentage.text = int(loaded / total * 100) +'%';
};
 
loader.loadClip("http://www.koowee.org/games/swf/2triangles.swf", game_mc); //остановка прелоадера на 0
//loader.loadClip("http://www8.agame.com/mirror/flash/f/fatpig_spil.swf", game_mc); //мигание картинки и звука после загрузки
//loader.loadClip("http://www.ivashka.com/Flash/games/logic/egypt_puz.swf", game_mc); //все нормально загружается
Вложения
Тип файла: zip _loader.zip (12.1 Кб, 52 просмотров)


Последний раз редактировалось Inker; 06.11.2010 в 21:41. Причина: добавлен исходный код
Старый 06.11.2010, 21:50
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Возможно проблемы с секьюрностью.
http://www.flasher.ru/forum/showthread.php?t=145324
почитайте с 5-го поста начиная.
__________________
Идите первым!

Старый 06.11.2010, 22:00
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 3  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
mooncar, у автора загрузка выполняется.
Возможно, game_mc._lockroot = true поможет.

Старый 06.11.2010, 22:05
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Исходник открыть не могу из-за версии, но судя по приведенному коду у него вроде запирается после инициации:
Код AS1/AS2:
_mc._lockroot = true ;
К тому же вот это:
Цитата:
Если же запустить скомпилированный файл из Adobe Flash, всё полностью загружается.
В IDE будет все грузится и манипулирование контентом возможно без кроссдоменника, а с сервера - нет.
__________________
Идите первым!


Последний раз редактировалось mooncar; 06.11.2010 в 22:10.
Старый 06.11.2010, 22:20
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 5  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
но судя по приведенному коду у него вроде запирается после инициации
Логично это делать до.

Старый 06.11.2010, 22:35
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Всегда считал, что после загрузки это свойство сносится и писал его внутри onLoadInit.
Сейчас проверка показала, что безразлично, когда писать, свойство живет и после загрузки контейнера чем-то (как и _visible, например).

Автор, попробуйте совет udaaff.
__________________
Идите первым!


Последний раз редактировалось mooncar; 06.11.2010 в 22:37.
Старый 06.11.2010, 23:05
Inker вне форума Посмотреть профиль Отправить личное сообщение для Inker Найти все сообщения от Inker
  № 7  
Ответить с цитированием
Inker

Регистрация: Nov 2010
Сообщений: 6
К сожалению, совет udaff не помог.
С кодом
Код AS1/AS2:
loadHandler.onLoadProgress = function(_mc:MovieClip, loaded:Number, total:Number) {
	_mc._lockroot = true;
	_mc._visible = false;
	bar_mc._xscale = loaded / total * 100;
	percentage.text = int(loaded / total * 100) +'%';
};
внешний swf, у которого прелоадер остается на нуле, перестал загружаться даже при запуске из-под Adobe Flash.

Обновленные исходники с CS3 версией тут.

Пробовал добавить кросдоменник в папку по совету mooncar, после этого с примером, где все работало, начались глюки (изображение переместилось вбок за границу swf-ки и стало мигать на первом кадре), остальные примеры без изменений.


Последний раз редактировалось Inker; 06.11.2010 в 23:14.
Старый 06.11.2010, 23:16
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 8  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Цитата:
Сообщение от Inker Посмотреть сообщение
К сожалению, совет udaff не помог.
Обновленные исходники с CS3 версией тут.
Там версия старше CS3, наверное забыли выбрать CS3 при сохранении?

По существу:
1) Хотя это вряд ли что-то изменит, по совету udaaff следовало просто написать
Код AS1/AS2:
game_mc._lockroot = true;
в начале кода, а не по мере прогресса помногу раз присваивать.

2) Отсутствие кросдоменника все же может быть причиной - то есть загрузка идти может, а вот некие функции загружаемых роликов работать откажутся.

Совет еще такой: посмотрите сниффером (типа HTTPfox), что грузят эти сторонние ролики при загрузке со "своих" хостов.
А потом посмотрите в вашем случае что происходит. Возможно, что-то может проясниться.

И еще - возможно они просто запрограммированы авторами на невозможность нормальной работы вне своего домена.

Добавлено через 7 минут
UPD: Судя по всему, то, что вы грузите, само в свою очередь является контейнером для третьесторонней флешки.
При наличии такой структуры внятное решение вашей задачи затруднительно.
+ скорее возникают вопросы организационного плана.
__________________
Идите первым!


Последний раз редактировалось mooncar; 06.11.2010 в 23:31.
Старый 06.11.2010, 23:41
Inker вне форума Посмотреть профиль Отправить личное сообщение для Inker Найти все сообщения от Inker
  № 9  
Ответить с цитированием
Inker

Регистрация: Nov 2010
Сообщений: 6
Спасибо большое, последнее сообщение помогло - теперь работает два случая из трех, "мигающий" первый кадр остался во втором примере.
Вполне вероятно, там и стоит защита от других доменов, постараюсь как-нибудь это проверить. Кстати, обновленный пример с этим миганием. Звук тоже "мигает", так что, если будете смотреть, сделайте потише громкость.

Попутный вопрос - есть какое-то отличие между
Код AS1/AS2:
System.security.allowDomain('*');
и .xml файлом в директории?

Старый 06.11.2010, 23:47
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 10  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Разница большая.
crossdomain.xml - авторы удаленной флешки регулируют на своем хосте доступ к своему контенту, а вызовом System.security.allowDomain() в своей флешке вы разрешаете сторонним флешкам ковыряться внутри вашей, когда они загружены в нее.
__________________
Идите первым!


Последний раз редактировалось mooncar; 06.11.2010 в 23:50.
Создать новую тему Ответ Часовой пояс GMT +4, время: 04:33.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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