![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Nov 2010
Сообщений: 6
|
Добрый вечер!
Я делаю флеш-прелоадер, главная задача которого состоит в загрузке swf-файлов как локальных, так и находящихся на другом домене. С первым случаем всё работает отлично, со вторым уже несколько дней бьюсь с проблемой: При попытке загрузить swf-файл (условно назову его game.swf), содержащий собственный прелоадер, мой контейнер (_loader.swf, исходник в приложении) загружает этот файл, но прелоадер самого game.swf остается на нуле, то есть дальше загрузка не идет. Такая ситуация бывает, когда я открываю _loader.swf через локальный сервер. Если же запустить скомпилированный файл из Adobe Flash, всё полностью загружается. Помогите пожалуйста, в чём может быть проблема? Пример работы _loader.swf на сервере можно посмотреть тут. [UPD] Пробовал загружать разные swf-ки. Некоторые ведут себя адекватно, некоторые так, как описано выше, а некоторые начинают в цикле воспроизводить первый кадр или несколько (внешне выглядит как мигание картинки с первым кадром загруженного клипа, если есть звуки - успевает проигрываться доля секунды и сначала начинается). 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); //все нормально загружается Последний раз редактировалось Inker; 06.11.2010 в 21:41. Причина: добавлен исходный код |
|
|||||
|
Модрон-ветеринар
|
Возможно проблемы с секьюрностью.
http://www.flasher.ru/forum/showthread.php?t=145324 почитайте с 5-го поста начиная.
__________________
Идите первым! |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
mooncar, у автора загрузка выполняется.
Возможно, game_mc._lockroot = true поможет. |
|
|||||
|
Модрон-ветеринар
|
Исходник открыть не могу из-за версии, но судя по приведенному коду у него вроде запирается после инициации:
К тому же вот это: Цитата:
__________________
Идите первым! Последний раз редактировалось mooncar; 06.11.2010 в 22:10. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Цитата:
|
|
|||||
|
Модрон-ветеринар
|
Всегда считал, что после загрузки это свойство сносится и писал его внутри onLoadInit.
Сейчас проверка показала, что безразлично, когда писать, свойство живет и после загрузки контейнера чем-то (как и _visible, например). Автор, попробуйте совет udaaff.
__________________
Идите первым! Последний раз редактировалось mooncar; 06.11.2010 в 22:37. |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 6
|
К сожалению, совет udaff не помог.
С кодом 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) +'%'; }; Обновленные исходники с CS3 версией тут. Пробовал добавить кросдоменник в папку по совету mooncar, после этого с примером, где все работало, начались глюки (изображение переместилось вбок за границу swf-ки и стало мигать на первом кадре), остальные примеры без изменений. Последний раз редактировалось Inker; 06.11.2010 в 23:14. |
|
|||||
|
Модрон-ветеринар
|
Цитата:
По существу: 1) Хотя это вряд ли что-то изменит, по совету udaaff следовало просто написать в начале кода, а не по мере прогресса помногу раз присваивать. 2) Отсутствие кросдоменника все же может быть причиной - то есть загрузка идти может, а вот некие функции загружаемых роликов работать откажутся. Совет еще такой: посмотрите сниффером (типа HTTPfox), что грузят эти сторонние ролики при загрузке со "своих" хостов. А потом посмотрите в вашем случае что происходит. Возможно, что-то может проясниться. И еще - возможно они просто запрограммированы авторами на невозможность нормальной работы вне своего домена. Добавлено через 7 минут UPD: Судя по всему, то, что вы грузите, само в свою очередь является контейнером для третьесторонней флешки. При наличии такой структуры внятное решение вашей задачи затруднительно. + скорее возникают вопросы организационного плана.
__________________
Идите первым! Последний раз редактировалось mooncar; 06.11.2010 в 23:31. |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 6
|
Спасибо большое, последнее сообщение помогло - теперь работает два случая из трех, "мигающий" первый кадр остался во втором примере.
Вполне вероятно, там и стоит защита от других доменов, постараюсь как-нибудь это проверить. Кстати, обновленный пример с этим миганием. Звук тоже "мигает", так что, если будете смотреть, сделайте потише громкость. Попутный вопрос - есть какое-то отличие между и .xml файлом в директории? |
|
|||||
|
Модрон-ветеринар
|
Разница большая.
crossdomain.xml - авторы удаленной флешки регулируют на своем хосте доступ к своему контенту, а вызовом System.security.allowDomain() в своей флешке вы разрешаете сторонним флешкам ковыряться внутри вашей, когда они загружены в нее.
__________________
Идите первым! Последний раз редактировалось mooncar; 06.11.2010 в 23:50. |
![]() |
![]() |
Часовой пояс GMT +4, время: 04:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|