Просмотр полной версии : Обновление текста во время выполнения цикла
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();
}
}
Как сделать, чтобы значение поля текста обновлялось во время выполнения цикла???
Заранее спасибо
Нужно в тело цикла поместить оператор присваивания my_txt=newVar, и сделать так, чтобы newVar обновлялось, а у тебя что-то странное написано, попробуй в тело цикла вставь trace(freq) и протестируй клип, увидишь что получается.;)
Velaskes
13.05.2006, 18:42
Да, понимаешь, когда я делаю trace - все получается. После завершения цикла мне выдает столбец со значениями. А мне надо ВО ВРЕМЯ выполнения... Как обновлять переменную?
Значит все обновляется во время цикла, просто если тебе выдается столбец сразу, значит с такой же скоростью и происходит обновление, с какой формируется каждое поле столбца, то есть твоя задержка не работает, и все происходит быстро, что не успеваешь заметить. Еще сделай трэйс своей переменной, может быть флэш не может ее найти из цикла, и ему надо подробнее написать к ней путь.
тема перенесенна в раздел для новеньких
Velaskes устное предупреждение, за не использование тэгов [ code ]
Velaskes
13.05.2006, 18:58
Задержка работает 100 пудов (я могу менять ее значение, от этого зависит скорость выполнения цикла). Даже если я в цикле ставлю trace(freq) у меня после раздумий сразу выдает окошко Output и столбец цифр. Может быть просто задержка неправильная? Если есть идеи - подскажи плиз!
_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:
Я надеюсь вы внимательно прочитали пост номер 5, вы исчерпали лимит устных замечаний.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.