Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   подгрузка сложной *.swf (http://www.flasher.ru/forum/showthread.php?t=153463)

kmkdz09 03.04.2011 12:26

подгрузка сложной *.swf
 
с помощью load(); подгружаю на основную сцену внешнюю *.swf
если *.swf простая, то всё подгружается нормально
в моём случае подгружаемая *.swf является интерактивной панорамой, которая в свою очередь берёт данный из *.xml и из папки содержащей саму картинку панорамы - и в этом случае *.swf на основной сцене не появляется
как быть?

Код AS3:

package{        
        import flash.display.*;
        import flash.events.*;
        import flash.net.*;
        public class experiment1 extends MovieClip{       
                private var loader:Loader;
                private var urlReq:URLRequest;
                private var zal:Object;
                public function startExperiment(){
                        loader = new Loader();
                        urlReq = new URLRequest("zal00.swf");
                        loader.load(urlReq);
                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
                        addChild(loader);                       
                }
                private function loadComplete(evt:Event):void {
                        zal = loader.content;
                }
        }       
}

из-за панорамы архив тяжёлый получился - 8 Мб
experiment.rar

goodguy 03.04.2011 14:24

Код AS3:

Security.allowDomain("здесь нужный домен")

Это добавить в главный класс подкгружаемой swf + файл кроссдоменной политики в корень сервера, с которого грузятся данные

kmkdz09 03.04.2011 16:13

всё грузится локально. стоит ли указать root?
как-то так:
Код AS3:

public class experiment1 extends MovieClip{        
        private var loader:Loader;
        private var urlReq:URLRequest;
        private var zal:Object;
        public function startExperiment(){
                Security.allowDomain(this.root);
                loader = new Loader();
                urlReq = new URLRequest("zal00.swf");
                loader.load(urlReq);
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
                addChild(loader);       
                }
}

но это тоже не работает.

goodguy 03.04.2011 17:59

Какой еще root? Root в данном случае скорее всего = stage.
Сюда надо указывать домен, на котором запущена флешка. Для запуска из конакта я добавлял "vkontakte.ru"
Советую почитать оф документацию

kmkdz09 03.04.2011 19:38

я же написал, что всё локально
домена нет, будет запускаться с диска.
я документацию почитал
http://help.adobe.com/ru_RU/FlashPla...filter_air=2.6
там упоминаеться
Security.allowDomain(this.root.loaderInfo.loaderURL)
подумал его как-то преобразовать. видимо не правильно.

goodguy 03.04.2011 21:15

Если запуск окальный, то домен localhost или 127.0.0.1
Не может быть, чтобы домена не было

kmkdz09 03.04.2011 21:23

не работает

Код AS3:

package{        
        import flash.display.*;
        import flash.events.*;
        import flash.net.*;
        import flash.system.Security;
        public class experiment1 extends MovieClip{       
                private var loader:Loader;
                private var urlReq:URLRequest;
                private var zal:Object;
                public function startExperiment(){
                        Security.allowDomain("localhost")
                        loader = new Loader();
                        urlReq = new URLRequest("zal00.swf");
                        loader.load(urlReq);
                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
                        addChild(loader);                       
                }
                private function loadComplete(evt:Event):void {
                        zal = loader.content;
                }
        }       
}

а что забавное, внутри *.swf есть trace(); функция, и она себя проявляет. из чего я делаю вывод, что флешка грузиться, а вот файлы-панорамы в подгруженную флешку - нет!

goodguy 03.04.2011 21:26

очевидно из-за отсутствия э того:
Код AS3:

import flash.system.Security;

Но и после добавления эта конструкция не будет работать.
Что-то мне подсказывает, что там сам файл какой-то неправильный. Из той же папки, где лежит основной файл вообще должно все работать без ограничений
А если уж добавлять эту строку, то не в загружающий файл, а в загружаемый.

teion 03.04.2011 22:09

часто бывает так, что при подгрузке внешней свф в основную, эта свф теряет пути ко всяким ресурам.. попробуйте прописать пути к ресурсам относительно главной флешки

kmkdz09 03.04.2011 23:34

суть в том, что подгружаемая *.swf была создана какой-то фотографической программкой и исходника для неё нет. а при декомпилировании она безвозвратно ломается.
так что в ней прописать пути не получится.
оба файла и основная *.fla и подгружаемая *.swf находятся в одной и той же папке и по сути пути не должны нарушаться.
отдельно подгружаемая *.swf работает.
в основной *.fla подгружаемая *.swf подгружается.
а вот всё остальное...
как и где прописать пути я не уразумею к сожалению.
в *.xml? так там вроде нечего менять, если оба файла в одной папке. или как-то всё-таки надо?


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

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