Форум 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=95521)

Batur 07.05.2007 18:57

Как узнать, обновилась переменная или нет?
 
Здравствуйте, участники форума.

Столкнулся с задачей, решения найти не могу:
Есть flash-счетчик. Он якобы считает посетителей на сайте. На самом деле происходит это посредством вытягивания переменной из текстового файла и показа ее в виде Dynamic text. Для того, чтобы обновление происходило каждые 5 секунд, а не только при перезагрузке страницы сделано 5 кадров длительностью 1 сек. каждый. В первом кадре код, который вытягивает переменную. Поскольку .swf зациклен, каждые 5 секунд код заново вытягивается и показывается. Способ, конечно, деревянный, но все прекрасно работает и я доволен.

А теперь сама задача:
Мне очень надо, чтобы при изменении переменной проигрывался определенный Movie Clip.
Но сама переменная изменяется значительно реже, чем .swf ее обновляет. Т. е. проигрывать Movie Clip после каждого обновления нельзя. Надо, чтобы флеш каким-то образом определял, изменилась переменная или нет и, если изменилась, запускал Movie Clip.

Буду очень благодарен как за конкретное решение задачи, так и за совет, где найти. Под рукой оба тома Библии пользователя, но проблема в том, что я даже не знаю, в каком из разделов искать.

Заранее спасибо и... простите ламера :( (надо себе эту фразу уже в подпись поставить).

P. S. Flash MX 2004 Pro

MINASTIS 07.05.2007 19:36

В 5-ом кадре ставишь
Код:

old = твоя_переменная;
В первом кадре ставишь после вытягивания переменной
Код:

if (твоя_переменная!=old) {
//здесь действия которые хочешь чтобы были после изменения счетчика
}

Вобще не знаю сохранится или нет переменная old,
я бы тебе для такого просчета посоветовал использовать или onEnterFrame или setInterval.

Batur 08.05.2007 13:00

Неа, не функционирует :(
А как правильно записать переменную today? Я pаписал вот так:
if (this.today != old)

iNils 08.05.2007 13:15

Код:

function idChange (prop, oldVal, newVal) {
        trace (newVal + " обновилась");
        return newVal;
}
this.watch ("id", idChange, 55);
id = 0;
this.onEnterFrame = function () {
        id++;
};


Kikasso 08.05.2007 13:37

Код:

function idChange (prop, oldVal, newVal) {
 trace("было "+ oldVal + " стало " + newVal );
 if( oldVal == newVal) return oldVal;
 trace (" обновилась");
 return newVal;
}
// ставим "id" под контроль:
this.watch ( "id", idChange );

// а теперь каждый кадр сажаем id, каждый 25-й раз он поменяется
// это просто для примера
var num:Number = 0;
this.onEnterFrame = function () {
 num++;
 id = Math.floor( num / 25 );
};

Так немного нагляднее.
И почему 55?

iNils 08.05.2007 13:41

Из примера в хелпе )

Batur 08.05.2007 15:54

Цитата:

Сообщение от Kikasso
Код:

function idChange (prop, oldVal, newVal) {
 trace( newVal );
 if( oldVal == newVal) return oldVal;
 trace (" обновилась");
 return newVal;
}
this.watch ( "id", idChange );
var num:Number = 0;
this.onEnterFrame = function () {
 id = Math.floor( num++ / 25 );
};

Так немного нагляднее.
И почему 55?

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

Kikasso 08.05.2007 16:08

Я снабдил комментами. Посмотрите в хелпе про watch. Это очень полезная штука.

Batur 08.05.2007 17:28

2 Kikasso: Чтобы хелп читать, надо, как минимум, английский знать :( . А за комментарии большое спасибо, но они мне, к сожалению, ровным счетом ничего не говорят. Во всем этом безобразии я понимаю только суть: при помощи кода из текстового файла вытягивается переменная, и транслируется в текстовое поле в виде динамического текста. В какой-то момент другой код проверяет изменилась ли со времени последнего обновления переменная. И, если изменилась, запускает Movie Clip.

Фраза «// ставим "id" под контроль:» мне совершенно непонятна, потому что непонятно что этот самый id идентифицирует и зачем это вообще в данном случае нужно :(

Когда я создавал тему, то ожидал, что всё окажется проще, но, как всегда в таких случаях, ошибся.

iNils 08.05.2007 18:16

Цитата:

Сообщение от Batur
Фраза «// ставим "id" под контроль:» мне совершенно непонятна, потому что непонятно что этот самый id идентифицирует и зачем это вообще в данном случае нужно

>>>>>
Цитата:

Как узнать, обновилась переменная или нет?


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

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