PDA

Просмотр полной версии : Мигание фона динамического текстового поля трижды


Loobtuff
09.04.2007, 16:46
Как сделать мигание фона динамического текстового поля (т.е. изменение его цвета с ч. на б. трижды с интервалом примерно в 1 сек) программным способом?

iNils
09.04.2007, 16:59
var txt:TextField = this.createTextField ("txt", 0, 100, 100, 100, 20);
txt.text = "цвет";
txt.backgroundColor = 0x0;
txt.background = true;
function changeColor ():Void {
txt.background = !txt.background;
}
setInterval(this, "changeColor", 500);

Loobtuff
10.04.2007, 14:50
INils, вобщем, ситуация такова:
Необходимо было трижды поменять фон ДТП (ниже я меняю жёлтый фон на белый). Вот код, который превосходно работает в отдельном swf - файле:
var ii=0;
var meine_time:Number=setInterval(changeColor,100);
function changeColor ():Void {
txt.background = !txt.background;
ii++;//trace(ii);
if (ii>=5) {
clearInterval(meine_time);
trace(ii);
}
}но стоит мне его скопировать в мой проект (переменные все уникальны!), как функция clearInterval(meine_time) - перестаёт работать в то время как trace(ii) - выдаёт значения 6,7,8,9.............
Есть к-либо мысли по этому поводу??

Kikasso
10.04.2007, 15:00
Попробуй так, костыль конечно:
var ii=0;
var meine_time:Number=setInterval(changeColor,100,meine_time);
function changeColor (meine_time):Void {
txt.background = !txt.background;
ii++;//trace(ii);
if (ii>=5) {
clearInterval(meine_time);
trace(ii);
}
}

Loobtuff
10.04.2007, 15:07
Так не помогает, всё-равно мигает и мигает и не останавливается!
Ноооо, интересный факт:
Делаю кнопку не основной временной диаграмме, вешаю на неё код:

on (press) {
clearInterval(meine_time);
}

И нажатие на эту кнопку превосходно останавливает мигание...
Если честно, я немного удивлён.
Но пишите всё что вы думаете, плис!

Kikasso
10.04.2007, 15:17
а так?
var ii=0;
var meine_time:Number;
function changeColor ():Void {
txt.background = !txt.background;
ii++;//trace(ii);
if (ii>=5) {
clearInterval(meine_time);
trace(ii);
}
}
meine_time = setInterval(changeColor,100);
stop();

iNils
10.04.2007, 15:25
1. В моем нике первая буква строчная, а не прописная
2. Для оформления своего кода, надо использовать теги , а на теги цитирования .
3. Сделаейт не рабочий пример и выложите. Поймать ошибку без понимания структуры вашего swf, не всегда возможно.

Loobtuff
10.04.2007, 15:57
Привести весь исходный код будет пожалуй затруднительно из-за его большого размера, но могу предложить фрагмент, касающейся именно данной проблемы:

else {
for (var flash_ii=0;flash_ii<arr_swapDepth.length;flash_ii++) {
eval("Feld"+"_"+arr_swapDepth[flash_ii]).background=true;
eval("Feld"+"_"+arr_swapDepth[flash_ii]).backgroundColor=0xFFFF33;//цвет заднего фона жёлтый
}
var ii=0;
var meine_time:Number=setInterval(flash_function,100);

}// end else

// в этом же кадре, но в соседнем слое (в слое функций)

function flash_function():Void {
for (var flash_i=0;flash_i<arr_swapDepth.length;flash_i++) {
eval("Feld"+"_"+arr_swapDepth[flash_i]).background=!eval("Feld"+"_"+arr_swapDepth[flash_i]).background;
}
ii++;
if (ii>=5) {
clearInterval(meine_time);
trace(ii);// выводит 6,7,8,9..................
}
}
}

// arr_swapDepth.length - это количество полей, которые должны мигать (9 полей)

Возможно, существуют какие-то особенности применения функций
setInterval и clearInterval, конорые мало освещены в литературе, но меня болше всего поражает работа той кнопки (о которой писал выше), с аналогичным кодом, что и в педложении if моей проги!!

etc
10.04.2007, 17:33
И что этот код даст? Я его скопирую и он работать не будет.
И не надо текстовое поле называть «ДТП», у меня другие ассоциации с этой аббревиатурой, равно как и у других участников форума.

Kikasso
10.04.2007, 17:40
Положи весть код в одно место, проблема сама исчезнет.