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

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

не могу остановить ф-ю setInterval
 
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. Для оформления своего кода, надо использовать теги [code][/code], а на теги цитирования [quote][/quote].
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

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


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

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