Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Загрузка SWF внутрь другого SWF (http://www.flasher.ru/forum/showthread.php?t=95882)

d0cent 18.05.2007 07:30

Загрузка SWF внутрь другого SWF
 
Ситуация такая: есть несколько swf роликов, и есть один swf с интерфейсом, и "экранчиком" в котором эти самые swf должны крутиться. Загружаю в основную флешку один из этих роликов посредством MovieClipLoader. Флешка загружается, но обнаруживаются неприятные вещи:

1. так как основная флешка "резиновая", занимает весь экран браузера и способна тянуться под его размеры, сохраняя при этом неизменным размер и форматирование всех элементов интерфейса, включая "экранчик" в который грузятся внешние флешки - загружаемые флешки не получается закрепить на одном нужном месте, хотя мувиклип в который флешки грузятся, обрабатывается "выравнивающим" скриптом как и остальные элементы интерфейса.
2. подгружаемая флешка берет некий текст из txt файла, если ее отдельно запускать все нормально, но если она открывается внутри основной флешки - текст в ней не грузится.

Привожу свой код:
Код:

// настройки сцены
Stage.scaleMode = "noScale";
Stage.align = "TL";

// создадим объект для реагирования на изменение габаритов окна
var resize_obj = {};

// запомнили нормальную ширину
resize_obj.normal_width = 800;

// запомнили нормальную высоту
resize_obj.normal_height = 600;

// самое главное: список объектов, которые будем перемещать
resize_obj.position = [fon, ramka, bg];

// собственно, реакция на изменения габаритов окна
resize_obj.onResize = function()
{
    var clip;
    for (var i in this.position) {
        // перебираем все клипы в списке
        clip = this.position[i];
       
        // восстанавливаем пропорции координат для каждого клипа
        clip._x = Stage.width*clip._xRatio;
        clip._y = Stage.height*clip._yRatio;
       
        // если для клипа определена пропорция по ширине
        if (clip._widthRatio != undefined) {
            clip._width = Stage.width*clip._widthRatio;
        }
        // если для клипа определена пропорция по высоте
        if (clip._heightRatio != undefined) {
            clip._height = Stage.height*clip._heightRatio;
        }
    }
};

// связь между классом Stage и объектом resize_obj
Stage.addListener(resize_obj);

/* запоминаем пропорции координат
(отношение координат к нормальной ширине/высоте) */
var clip;
for (var i in resize_obj.position) {
    // перебираем все клипы в списке
    clip = resize_obj.position[i];

    // пропорция координаты по горизонтали
    clip._xRatio = clip._x/resize_obj.normal_width;

    // пропорция координаты по вертикали
    clip._yRatio = clip._y/resize_obj.normal_height;
}

/* запоминаем пропорции высоты и ширины
(отношение габарита к нормальной ширине/высоте) */
fon._widthRatio = fon._width/resize_obj.normal_width;

// подгружаем внешнюю флешку
var my_mcl:MovieClipLoader=new MovieClipLoader();
var my_obj:Object=new Object();
my_mcl.loadClip("house.swf",bg);
my_mcl.addListener(my_obj);

//ресайз
resize_obj.onResize();


d0cent 18.05.2007 23:55

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

screamge 19.05.2007 00:06

Ответ на второй вопрос скорее всего в путях, к сожалению нет этой части скрипта что бы дать досканальный ответ.

etc 19.05.2007 00:07

А _root используется в подгружаемой флешке?

d0cent 19.05.2007 01:32

Цитата:

Сообщение от __etc
А _root используется в подгружаемой флешке?

Теперь да, но что с ним что без него - на результате никак не сказывается

etc 19.05.2007 01:43

А должно. _lockroot в помощь. Если не поможет — выкладывайте исходник.

d0cent 19.05.2007 02:25

Цитата:

Сообщение от __etc
А должно. _lockroot в помощь. Если не поможет — выкладывайте исходник.

Не совсем понял в какую флешку пихать _lockroot в загружающую или в загружаемую?

d0cent 19.05.2007 04:38

_lockroot не помог, или я не так его использовал.
А вот код, который загружает текст из файла в загружаемой флешке:
Цитата:

var my_lv:LoadVars = new LoadVars();
my_lv.onData = function(txt:String):Void {
txt1.html = true;
txt1.wordWrap = true;

txt1.htmlText = txt;
};
my_lv.load("text1.html");

screamge 19.05.2007 05:23

нужно на текстовое поле txt1 ссылку давать от рута подгружающего

d0cent 19.05.2007 05:28

Цитата:

Сообщение от screamge
нужно на текстовое поле txt1 ссылку давать от рута подгружающего

А подробней можно? Как ссылка выглядит?


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

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