PDA

Просмотр полной версии : не могу зациклить флешку


soldatoff
08.02.2009, 23:36
Привет, народ!

Делаю баннер.

На самом деле я HTML-кодер, с ActionScript столкнулся впервые вот буквально неделю назад.

Короче, забираю данные из файла, вида (файл vars.htm):

myVar01=текст сообщенияAAAвторой текст сообщенияAAAну и конечно третий&myVar02=AAA&myVar03=2


Где, myVar01 - тексты баннера, myVar02 - некий разделитель текстов, myVar03 - время показа очередного текста


код выглядит так:
var data_lv:LoadVars = new LoadVars ();
data_lv.load("vars.htm");

data_lv.onLoad = function() {
var texts:Array = this.myVar01.split(this.myVar02);
var delay:Number = this.myVar03*1000;
var count:Number = 0;
setInterval(createTxt,delay,this);

function createTxt(){
trace("texts[" + count.toString() + "] = " + texts[count].toString()); //данные

createTextField(texts[count],count,0,0,550,100);
var w = eval(texts[count]);
w.text = texts[count];
w.background = "#FFF;"
count++;
trace(count); //count
if(count >= texts.length){
count = 0;
}
}
}

А проблема в том, что когда я нажимаю Ctrl+Enter -> компилируется флешка и показывает только один проход по массиву с фразами (с указанной задержкой между фразами), НО в окне Output, трейс показывает что проход продолжается, что мне собственно и надо!

Т.е. мне надо, чтобы флешка бесконечно показывала по-очереди фразы из массива texts, а она один раз как бы отрабатывает и все.. попробуйте проверить этот код во флеше?

Я не знаю какими словами объяснить :( ну не специалист я пока еще во флеше!... Помогите пожалуйста разобраться!

Fatality
09.02.2009, 00:22
var data_lv:LoadVars = new LoadVars();
data_lv.load("vars.htm");
data_lv.onLoad = function()
{
var texts:Array = this.myVar01.split(this.myVar02);
var delay:Number = this.myVar03*1000;
var count:Number = 0;
_root.createTextField("w",0,0,0,550,100);
setInterval(createTxt,delay,this);
function createTxt()
{
trace("texts["+count+"] = "+texts[count]);
w.text = texts[count];
w.background = "#FFF;";
count++;
trace(count);
if (count>=texts.length)
{
count = 0;
}
}
};

Во-первых, зачем каждый раз создавать новое текстовое поле, да еще и с именем типа "текст сообщения" и т.п. Достаточно создать его 1 раз и менять текст каждый. Во-вторых, преобразовывать число в строку в трейсе, нет никакой необходимости, элемент массива text[count] тоже, он и так строка ! С eval-ом тоже бред, но это я так понимаю издержки использования все тех же имен типа "текст сообщения".

soldatoff
09.02.2009, 01:39
2 Fatality: :drinks:

Спасибо огромное!!! :yahoo:

Вы меня спасли! :yahoo: