Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   [as] Вызов swf с форматированным текстом (http://www.flasher.ru/forum/showthread.php?t=74631)

Nomen Omen 24.01.2006 16:02

[as] Вызов swf с форматированным текстом
 
Что было: в _root грузился некий mc.swf, при наведении на который он вызывал в _root txt.swf, в котором было организовано текстовое поле и загружена в это поле переменная. В _root был контейнер под txt.swf. Работало.
Что надо: получить в _root txt.swf с обработанным текстом.
Что есть: не грузится уже отформатированный текст, хотя в самом txt.swf все нормально. В txt.swf на загрузку и форматирование применен обработчик onData. В рут переменная поступает, но не отображается. Если onData убрать, то текстовое поле отображается, но не форматированным.

Nox Noctis 24.01.2006 16:25

слишком запутанное описание.
лучше покажи код...

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

Nomen Omen 25.01.2006 14:22

код в запускаемом run.swf

Код:

createEmptyMovieClip("con", 2); //грузим swf при наведении на которую загружается ld.swf в run.swf
        con._x = 720;
        con._y = 150;
        con.loadMovie("p.swf");

createEmptyMovieClip("fon", 16);//место под ld.swf
        fon._x = 40;
        fon._y = 160;

код в p.swf, исполняется по наведении на кнопку

Код:

_root.fon.loadMovie("ld.swf", 5);
код ld.swf

Код:

this.onData = function(){
        loadVariables("1.txt", this);
        this.createTextField("tf", 0, 0, 0, 230, 420);       
            tf.multiline = true;
        tf.wordWrap = true;
        tf.variable = "textfriend";
        var myformat:TextFormat = new TextFormat();
        myformat.font = "Arial
        myformat.size = 12;
        myformat.color = 0x00AA00;
        tf.setTextFormat(myformat);
        };

Убираем onData - в run.swf отображается нужный текст без форматирования. С onData - ld.swf при компилляции выглядит правильно, но при запуске run.swf этот ld не виден (и поля текстового не создается тоже)

Пробовал делать функцию в ld.swf глобальной и вызывать ее в run. но окончательно запутался :mad:
Может подскажете работоспособный способ? Тут советует товарищ onLoadInit попробовать... что скажете?

Nox Noctis 25.01.2006 14:50

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

но если всё оставить как есть...
- вызвал загрузку
- файл загрузился
- сработал код его первого кадра

именно в таком порядке. заметь, код первого кадра срабатывает ПОСЛЕ окончания загрузки. поэтому создавать в первом кадре обработчик, который должен сработать при окончании загрузки, бессмысленно... загрузка-то уже завершилась. :)

поэтому onData у тебя просто не срабатывает. но даже если бы сработала - это был бы бардак. :) потому что онДата реагирует и на loadMovie и на loadVariables... а ты в самой онДате loadVariables и запускаешь. :)

и второй момент - текстформат нужно задавать ПОСЛЕ того, как ты записал в текстовое поле. а ты это делаешь ДО того, как текст попал в текстовое поле (потому что переменные естесственно не грузятся мгновенно).

итого:

1. убрать онДату
2. использовать setNewTextFormat() вместо setTextFormat()
3. лучше юзать объект LoadVars вместо loadVariables.
например так:

Код:

var loader = new LoadVars();
loader.onLoad = function()
{
        _root.createTextField("tf", 0, 0, 0, 230, 420);
        var tf = _root.tf;
        tf.multiline = true;
        tf.wordWrap = true;
        tf.text = this.textfriend;
        var myformat:TextFormat = new TextFormat();
        myformat.font = "Arial";
        myformat.size = 12;
        myformat.color = 0x00AA00;
        tf.setTextFormat(myformat);
};
loader.load("1.txt");


Nomen Omen 25.01.2006 15:18

Все работает! Но теперь можно в run изменить код на
Код:

createEmptyMovieClip("fon", 16);//место под ld.swf
т.к. координаты можно задавать в
Код:

_root.createTextField("tf", 0, 0, 0, 230, 420);
А насчет управления из одной сфв - это у меня пережитки хтмлного прошлого, больше маленьких файликов. Спасибо за идею, попробую...


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

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