Вход

Просмотр полной версии : То отображается, то не отображается текст.


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

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

etc
02.03.2007, 12:31
Очень жду ответы на мои вопросы, потому как потратил на освоение загрузки текста (ну и переменных) наверное уже месяц, а нужного результата так и не добился, хотя следовал инструкциям и хелпа, и ливдока, и фака, и уважаемых пользователей и даже модераторов сайта.
За месяц можно было разобраться не только с LoadVars, но и с остальными видами связи. Не верю, что за месяц невозможно было разобраться, налицо явное нежелание понимать и помочь самому себе.

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

this.create
02.03.2007, 20:43
Третье — типизировать код и использовать устаревшие конструкции on, onClipEvent как минимум глупо. Почему?

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

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

this.create
03.03.2007, 00:08
Ясно.

Amra Kimmerian
05.03.2007, 10:05
__etc, кто Вам сказал что в течение месяца я разбирался только с LoadVars? Кроме этого много чего еще интересного узнал. Особенно учитывая то, что времени на это выделить могу немного, что делаю урывками на работе или дома, уставший, с медленным инетом с мобильника и в одиночестве (без соратников по флэшу). И лицо мое Вы не видели и не можете сказать что на нем (тоже метафорически). А желание понять очень большое и помочь самому себе тоже. Иначе я бы не стал заходить на сайт, писать вопросы, да и вообще открывать Flash.
На первое: я снова просмотрел свой код, но так и не нашел там русских букв в пути к файлу.
На второе: useCodePage удалил, спасибо за совет.
На третье: что значит "типизировать код"? Писать по стандарту? Но разве не так всегда делается, когда нужно достичь одного и того же, конечно со своими нюансами? Или у этого словосочетания другой смысл? А использую on и onClipEvent только потому что всего лишь ученик своих учителей, которые так посоветовали. В данном случае это флэшевский хелп, книга про восьмой флэш (толстая такая, оранжевая, купил себе), ну и некоторые документы с различных сайтов. Наверняка, например, в хелпе флэша, есть и другие методы работы (о которых вы умолчали), но почему то именно on и onClipEvent попадаются на глаза первыми. И нигде, заметьте, нигде не написано что использование этих конструкций говорит о глупости. Так что глуп все таки не я, наверное, с этим утверждением Вам нужно пройти инстанцией выше, как минимум ;).
А вот в утверждении "о невысоком уровне разработчика" Вы абсолютно правы.:rolleyes: Меня и разработчиком то сложно назвать пока. И вопросы я задаю не в теме "...для профессионалов", а здесь, для новичков. И действительно для меня все ново и на первый взгляд все подходит. Я Вас понимаю, __etc. Если ко мне подходит человек и спрашивает, как скопировать файлы в папку, да и не один раз в день с подобными вопросами, это раздражает. Тогда я стараюсь вспомнить себя, каким я был неумехой когда-то и объясняю и разжевываю ему всю суть. Вы же не будете ругать своего годовалого ребенка за то, что однажды сумев пройти от кроватки до стенки, потом будет еще много раз падать на ровном месте. Он старается, уверяю Вас, еще как старается не упасть.
Лирическое отступление: в одной школе учился мальчик, скромный и непримечательный, а когда он поступил в восьмой класс, то очень ему понравился предмет - информатика. Он настолько стал проявлять рвение, что быстро стал лучшим в классе по программированию на Бейсике, он стал получать отдельные задания от учителя и с удовольствие оставался после уроков первой смены в школе (голодный как волк) чтобы до 6 вечера заниматься программированием с учителем. А учитель вкладывал в него все что знал и умел. В итоге мальчик занял первое место в городе на олимпиаде по Квикбейсику, с синтаксисом которого (хоть и похожего на обычный бейсик) он столкнулся в первый раз. Потом судьба на 7 лет разделила его с программированием, а теперь он хочет вернуться сам к этому делу, потому как стал самостоятельным. Он - ваш покорный слуга. Который действительно хочет творить чудеса из кода. И написал он первую строку во флэше всего 4 месяца назад, ну как обычно onRelease :) .
Возможно Вы ответите сейчас, что разжевывать мне никто ничего не будет. И даже будете правы. Но, как говорится, назвались груздем, полезайте в кузов - от Вас, как от авторитета, новички ожидают точных, четких и конструктивных ответов на ВСЕ ВОПРОСЫ, следуя которым они начнут делать успехи. Вы посмотрели мой код? У Вас получилось?
И еще... __etc, пожалуйста, не обижайтесь (мне почему то так почувствовалось из ваших ответов). Я никогда не хотел Вам ничего плохого и не захочу. Если в моих словах закралась нетерпимая острота, укажите на нее.

Да, Мыкита, UTF8. Трейс попробую, хотя еще не представляю точно как это делается.
А нет, понял, понял :) В смысле на каждое действие писать строку с помощью trace.

С уважением ко всем, Amra Kimmerian.

etc
05.03.2007, 12:31
Ух, сколько букв. Уважаю (без иронии).
Ладно, с английским языком есть проблемы?

Amra Kimmerian
05.03.2007, 13:53
Спасибо. С английским - в рамках университета, плюс что сам добрал. Со словарем можно перевести практически все, но иногда неясен смысл тех или иных слов или выражений в данном контексте.

Мыкыта
05.03.2007, 13:54
про трейс после загрузки проверяете что загрузилось к примеру по ваше му кодуtrace(NewsVariables);
еще конечно можеть и сохроняете как юникод из ворда например а он на самом деле кривой... посему лутше спец редакотр какой инть поставить для скриптов в нем и набивать

etc
05.03.2007, 14:04
Спасибо. С английским - в рамках университета, плюс что сам добрал. Со словарем можно перевести практически все, но иногда неясен смысл тех или иных слов или выражений в данном контексте.
Ну хорошо. Стоит начать с подробного изучения LoadVars:
http://livedocs.macromedia.com/flash/8/main/00002323.html
http://www.novemberain.com/livedocs/Help/ActionScriptLangRef/00001408.html
Что, куда и каким образом переменные попадают в этот объект и при каком событии.