Форум 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)
-   -   То отображается, то не отображается текст. (http://www.flasher.ru/forum/showthread.php?t=92484)

Amra Kimmerian 26.02.2007 16:19

То отображается, то не отображается текст.
 
Здравствуйте.
Есть код, навешанный на movieClip:
Код:

onClipEvent (load) {
        stop();
        this.NewsVariables = new LoadVars();
        this.loadVariables("CurrentNews.txt");
                CurrentNewsCounterMax = 3;
        for (var i:Number = 1; i<CurrentNewsCounterMax; i++) {
                createTextField("TextBelowBut"+i, i, 0, i*75, 250, 65);
                this["TextBelowBut"+i].variable = "ttxxtt"+i;
                //this["TextBelowBut"+i].text="Some Text Some TextSome Text Some Text";
                this["TextBelowBut"+i].embedFonts=true;
                this["TextBelowBut"+i].selectable = false;
                                                               
                fmt=new TextFormat();
                fmt.font="Verdana";
                fmt.color=0xAA0000;
                this["TextBelowBut"+i].setTextFormat(fmt);
                }
}

В полях текст не отображается %(, хотя когда смотрю дебаг - поля имеют соответствующий текст латинскими буквами "aaaaaaa", "bbbbbbb", "ccccccc". Или например активирую зеленую строку а голубую деактивирую - текст "Some Text Some TextSome Text Some Text" отображается. Если все строки активирую, то этот текст мелькнет и видимо по загрузке переменных исчезнет. Но загруженного текста не видно. Что же делать?
И еще вопрос. Это все делается в 6 флэше. Когда я пытаюсь все это (кроме текстовых полей в клипе создаются вложенные клипы-кнопки, а сам мувик лежит под маской,но это то нормально функционирует) публиковать в более поздних версиях, то вообще все начисто пропадает. Что же, восьмая версия флэш не может сделать того что может шестая?
Спасибо заранее за ответы.

etc 26.02.2007 16:48

У вас же есть LoadVars, зачем пользовать древнее loadVariables?
Данные ещё не успели загрузиться, а вы пытаетесь сразу их использовать.
Читайте про событие onLoad у LoadVars.

Amra Kimmerian 27.02.2007 16:35

__etc, спасибо, ознакомился и сделал с LoadVars, но все же нет текста. Вот код
Код:

onClipEvent (load) {
        stop();
        var NewsVariables:LoadVars = new LoadVars();
        NewsVariables.onLoad = function(success:Boolean) {
                if (success) {
                        CurrentNewsCounterMax = 3;
                        for (var i:Number = 1; i<CurrentNewsCounterMax; i++) {
                                createTextField("TextBelowBut"+i, i, 0, i*75, 250, 65);
                                this["TextBelowBut"+i].text = "NewsVariables.ttxxtt";
                                this["TextBelowBut"+i].embedFonts=true;
                                this["TextBelowBut"+i].selectable = false;
                                fmt=new TextFormat();
                                fmt.font="Verdana";
                                fmt.color=0xAA0000;
                                this["TextBelowBut"+i].setTextFormat(fmt);
                                trace("Правильно");
                                }
                }else {
                        trace("Неправильно");
                        }
        }
        NewsVariables.load("CurrentNews.txt");
}

Интересно что trace не выводится совсем - ни правильный, ни неправильный. И дебаг переменные вообще не показывает и текст пуст. Как будто до функции onLoad дело не дошло. Опять наверно синтаксис хромает или ссылку неправильно указал. Текстовик CurrentNews лежит там же где и исходник. И попутно - обязательно сам процесс load указывать после функции проверки полной загрузки onLoad? Так почему то везде делается.

etc 27.02.2007 16:41

Необязательно, в любом случае onLoad будет объявлен раньше, чем данные успеют загрузится.
А вот почему не загружается, неясно. Выкладывайте исходник.

Мыкыта 28.02.2007 01:35

я тоже мучался с онлоад так и непоняв в чем кариес попробуйте убрать проверку буленовскую вообще тобишь оставить только функцию
Код:

onClipEvent (load) {
        stop();
        var NewsVariables:LoadVars = new LoadVars();
        NewsVariables.onLoad = function() {
               
                        CurrentNewsCounterMax = 3;
                        for (var i:Number = 1; i<CurrentNewsCounterMax; i++) {
                                createTextField("TextBelowBut"+i, i, 0, i*75, 250, 65);
                                this["TextBelowBut"+i].text = "NewsVariables.ttxxtt";
                                this["TextBelowBut"+i].embedFonts=true;
                                this["TextBelowBut"+i].selectable = false;
                                fmt=new TextFormat();
                                fmt.font="Verdana";
                                fmt.color=0xAA0000;
                                this["TextBelowBut"+i].setTextFormat(fmt);
                                trace("Правильно");
                               
                        }
        NewsVariables.load("CurrentNews.txt");


Amra Kimmerian 02.03.2007 12:10

Вложений: 1
Спасибо Мыкыта, но дело в том что стандартный код загрузки (который предлагает хелп и ливдок) работает нормально, по крайней мере когда поле, в которое загружается текст и переменные находятся в руте. Я только так пробовал просто тестить это дело. А вот у меня в руте лежит пустой мувиклип и там программно создаются текстовые поля, в которые уже грузится нужный текст. Плюс это все под маской. Там этот код не работает. Попробовал и по Вашему предложению, все одно - не работает. Причем я бы еще понял что просто из за маски или еще чего нибудь текст просто не видно. Но дело в том что дебаг показывает отсутствие переменных вообще, что очень прискорбно. Делал и так - вытаскивал из под маски на рут клип в котором создаются текстовые поля - без толку. Уже возникает ощущение, что этого сделать нельзя.
Уважаемый __etc выразился что
Цитата:

У вас же есть LoadVars, зачем пользовать древнее loadVariables?
Данные ещё не успели загрузиться, а вы пытаетесь сразу их использовать.
Читайте про событие onLoad у LoadVars.
Я согласен, это лучше, но меня это не спасло. Хотя ответ похож на панацею. Теперь данные должны успевать загрузиться, но раньше (с loadVariables) они в дебаге хотя бы отображались (значит загрузились, пусть хоть и позже), а теперь нет переменных в помине. И я так понял что с с LoadVars не важна версия плеера для которой публикуешь результат? Я работаю в 8 флэше. Исходник прилагаю.
Очень жду ответы на мои вопросы, потому как потратил на освоение загрузки текста (ну и переменных) наверное уже месяц, а нужного результата так и не добился, хотя следовал инструкциям и хелпа, и ливдока, и фака, и уважаемых пользователей и даже модераторов сайта.
ПОМОГИТЕ ПОЖАЛУЙСТА! :wacko:

etc 02.03.2007 12:31

Цитата:

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

За месяц можно было разобраться не только с LoadVars, но и с остальными видами связи. Не верю, что за месяц невозможно было разобраться, налицо явное нежелание понимать и помочь самому себе.

И ещё: никогда, ни при каких обстоятельствах в пути к swf и к данным не должно быть русских букв. Это первое. Второе — никогда не использовать useCodepage. Третье — типизировать код и использовать устаревшие конструкции on, onClipEvent как минимум глупо.

this.create 02.03.2007 20:43

Цитата:

Сообщение от __etc
Третье — типизировать код и использовать устаревшие конструкции on, onClipEvent как минимум глупо.

Почему?

Мыкыта 02.03.2007 21:09

пользуйте трейс начиная с головы чтобы проверить ход загрузки
может косяг из за кодировки, у вас UTF-8? в файле который грузите?

etc 02.03.2007 23:57

Цитата:

Сообщение от this.create
Почему?

Потому что код на клипах сам по себе изжил из себя, не надо пользовать древние конструкции времен четвертого-пятого флеша, они перестанут работать. А использовать при этом типизацию бессмысленно, потому как в AS1 нет типизации. Типизированный код — не AS2 никоим образом и типизировать AS1 надо или весь или вообще ничего. «Местная» типизация свидетельствует о невысоком уровне разработчика.


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

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