Вход

Просмотр полной версии : Обновление текста во время выполнения цикла


Velaskes
13.05.2006, 18:20
Проблема (не ругайтесь - новенький):
Есть текстовое поле, обозначеное переменной (freq_txt), есть начальное значение этой переменной.
Есть кнопка, которая запускает цикл увеличения этого значения на шаг, с задержкой в 10 милисекунд, до конечного значения.

on (press) {
a=getTimer();
for (i=freq; i<end_freq-st; i=j) {
if (j == undefined) j = freq;
if (getTimer() - a > 5) {
j = j+st;
freq+=st;
freq_txt=freq;
a = getTimer();

}
}

Как сделать, чтобы значение поля текста обновлялось во время выполнения цикла???
Заранее спасибо

Madasan
13.05.2006, 18:38
Нужно в тело цикла поместить оператор присваивания my_txt=newVar, и сделать так, чтобы newVar обновлялось, а у тебя что-то странное написано, попробуй в тело цикла вставь trace(freq) и протестируй клип, увидишь что получается.;)

Velaskes
13.05.2006, 18:42
Да, понимаешь, когда я делаю trace - все получается. После завершения цикла мне выдает столбец со значениями. А мне надо ВО ВРЕМЯ выполнения... Как обновлять переменную?

Madasan
13.05.2006, 18:50
Значит все обновляется во время цикла, просто если тебе выдается столбец сразу, значит с такой же скоростью и происходит обновление, с какой формируется каждое поле столбца, то есть твоя задержка не работает, и все происходит быстро, что не успеваешь заметить. Еще сделай трэйс своей переменной, может быть флэш не может ее найти из цикла, и ему надо подробнее написать к ней путь.

Nirth
13.05.2006, 18:52
тема перенесенна в раздел для новеньких
Velaskes устное предупреждение, за не использование тэгов [ code ]

Velaskes
13.05.2006, 18:58
Задержка работает 100 пудов (я могу менять ее значение, от этого зависит скорость выполнения цикла). Даже если я в цикле ставлю trace(freq) у меня после раздумий сразу выдает окошко Output и столбец цифр. Может быть просто задержка неправильная? Если есть идеи - подскажи плиз!

Madasan
13.05.2006, 18:58
_root.createTextField('myTxt', 10, 50, 50, 100, 20);
n = 0;
myButton.onPress = function() {
a = getTimer()+1000;
_root.onEnterFrame = function() {
if (a<getTimer()) {
myTxt.text = n;
n++;
_root.onEnterFrame = null;
}
};
};

Homo Sapiens
13.05.2006, 19:04
Ну, с onEnterFrame вариант далеко не идеальный:
var start:Number = 0;
var max:Number = 100;
var inter:Number;
function Update()
{
if(start == max)
{
clearInterval(inter);
return;
}
freq_txt.text = (++start).toString();
updateAfterEvent(); //Принудительное обновление
}

inter = setInterval(Update, 10);

Velaskes
13.05.2006, 19:17
ВО! Вот это работает!:yahoo:

Velaskes
13.05.2006, 19:26
Спасибо!:rolleyes:
Будут еще вопросы, вы не против?:away:

Nirth
13.05.2006, 19:31
Я надеюсь вы внимательно прочитали пост номер 5, вы исчерпали лимит устных замечаний.