PDA

Просмотр полной версии : ребятушки! глупенький вопрос, спасите - горю


Stas3D
04.08.2005, 20:48
Так вот
я кароче гружу текст. Текст гружу из файла .txt
каждую минуту я этот текст перегружаю (знова прыгаю на 1 кадр в Клипе - и соответственно текст снова перегружается)
так вот! Мне нужно сравнить предыдущий загруженный текст, и следующий, и если текст изменился (хоть на 1 буковку, хоть на чуть чуть) - я должен сделать определенное действие
ну допустим GotoAndPlay (20)

как это сделать?:(( :confused:

загружаю я таким макаром:
var myVars:LoadVars = new LoadVars();
var styles = new TextField.StyleSheet();
var txt_url = "my_text.txt";
var css_url = "htmll_style.css";
myVars.load(txt_url);
myVars.onData = function(content) {
storyText = content;
};

ну и дальше я его с классами вывожу...

Ромастый
04.08.2005, 20:59
Ты сам на свой вопрос и ответил. Сравнивай.
Присваивай предыдущий текст какой-нибудь переменной, а потом
if(переменная!=текущий текст) {gotoAndPlay(кудаХотца)}

iNils
04.08.2005, 21:00
перед новой загрузкой текущий текст сохранить в другую переменную, а потом сравнить новый загруженный и старый.

Stas3D
04.08.2005, 21:06
Не работает так
вот смотри
пишу после текста который я написал выше, вот это:

if (txt_url !== txt_oldvar) {
gotoAndPlay(20);
}

тобишь. Сравнил, если он старый - то и фиг с ним
а в конце кода приравниваю вот так

txt_oldvar = txt_url;

типа, теперь эта переменная будет тем текстом, чтобы потом снова сравнить
и кароче после 1 загрузки - он говорит, что да! Они не равны, перепрыгивает на след. текст, а вот потом уже фиг. Постоянно говорит что ничего не изменилось, хотя даже на экране видно что текст выводимый меняется.

iNils
04.08.2005, 21:16
сравнивают не
txt_url !== txt_oldvar
а
txt_url != txt_oldvar

Stas3D
04.08.2005, 21:27
не работает всё равно
после рефреша в экслоере 1 раз он ловит что не равны, а потом каждый раз становятся равны, хотя я только что вообще очистил загружаемый текст, на экране появилось "undifined", и при этом он всё равно проглотил и не дернулся. Как буд-то равны.
ну блин. чё делать то:((

может нельзя так тексты сравнивать? может работа с переменными неправильная?

iNils
04.08.2005, 21:31
ты наверно сравниваешь до того как текст подгрузился. сначала дождись загрузки.

Stas3D
04.08.2005, 22:03
О! сравнивать нужно не переменную txt_url, а StoryText! в ней то текст походу содержиться
заработало!
Но! почему-то реагирует на изменения, только после второй проверки:) бред:)
тоесть первая проверка - проглатывает, а на вторую орет. Что-то здесь не так:)

iNils
04.08.2005, 22:07
а ты два раза проверяешь?

Stas3D
04.08.2005, 22:24
нет
просто - обновился > проверил , не заметил > снова обновился , и вот уже тут заметил и сделал гоу ту

бред какой-то

iNils
04.08.2005, 22:33
покажи конечный скрипт.

Stas3D
04.08.2005, 22:50
var myVars:LoadVars = new LoadVars();
var styles = new TextField.StyleSheet();

var txt_url = "new_viruses.txt";
var css_url = "kvwhtml_styles.css";

myVars.load(txt_url);
myVars.onData = function(content) {
storyText = content;
};
// Загружаем таблицу стилей и определяем обработчик события onLoad:
styles.load(css_url);
styles.onLoad = function(ok) {
if (ok) {
// Если таблица стилей загрузилась без ошибок,
// присваиваем ее текстовому полю, затем
// присваиваем ему же текст
viruses_txt.styleSheet = styles;
viruses_txt.text = storyText;
}
};
if (storyText != textOld) {
gotoAndPlay(17);
}
textOld = storyText;

iNils
04.08.2005, 23:20
1. Этот код должен быть внутри myVars.onData

if (storyText != textOld) {
gotoAndPlay(17);
}
textOld = storyText;

Stas3D
05.08.2005, 13:29
ничего не изменилось.
Первый раз он пропускает что текст изменился, а на второй раз срабатывает

хотя, абсолютно не понятно - как можно после рефреша браузера, не среагировать на условие, когда textOld вообще еще не обозначен, и равен нулю. И реагирует на это, только на второй проход. (как я уже говорил, каждые 10 сек я прыгаю на 1 кадр и снова создаю текстовые поля, и сравниваю)
Пепец

Stas3D
05.08.2005, 13:44
Балин!!! Вот скотина! прикинь
у меня после скрипта, в следующем кадре пустой кейфрейм стоял
я его удалил, и пепец - скрипт начал срабатывать сразу - тобишь в первый же раз после изменений стал прыгать на 17 кадр
Я В ШОКЕ!
ActionScript пепец, корявый как хрен знает что:(

Ромастый
05.08.2005, 14:30
ActionScript пепец, корявый как хрен знает что:(
Корявыми бывают только руки программиста.
Ты бы лучше исходник положил, потому как код кодом, а что у тебя там с фреймами и их порядком - это задача для телепата.
А мы все-таки флэшеры, а не экстрасенсы. ;)

Stas3D
05.08.2005, 16:44
ну ладно, парни. спасибо. в принципе работает - и работает
просто зону фрейма со скриптом растянул на кадров 20. и всё окей

но блин, чёж так всё сложно то - 2 строчки, а весь извозишься, пока заработает.

пасиба чуваки, большое:)

mr<Xepypr>
05.08.2005, 17:36
Попробуй заменить onData na onLoad.