Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.05.2008, 15:23
yarik_tv вне форума Посмотреть профиль Отправить личное сообщение для yarik_tv Найти все сообщения от yarik_tv
  № 1  
Ответить с цитированием
yarik_tv

Регистрация: May 2008
Сообщений: 11
По умолчанию Заполнение Dinamic TextField посторочно из Текстового файла через промежуток времни

Здравствуйте уважаемые! Есть такая проблема.

есть мувик, в котором есть текстовые поля: hdr,sub,txt и текстовый файл следующего содержания.
hdr=Заголовок1&sub=Подзаголовок1&txt=Первая строка.
hdr=Заголовок2&sub=Подзаголовок2&txt=Вторая строка.
hdr=Заголовок3&sub=Подзаголовок3&txt=Третья строка.

Задача организовать отображение каждой из строк в текстовых полях с интервалом в 30 сек.

пробовал следующий вариант:

Код:
System.useCodepage = true;
n=0;
astr = new LoadVars();
astr.load("scroll.txt");
astr.onLoad = function() 
  {
     var str:Array = astr.split("\r\n");
  }

function ChangeString(n) {
for (var i = n; i < str.length; i++) {
   hdr.text = str[i].hdr;
   sub.text = str[i].sub;
   txt.text = str[i].txt
}
}

{
setInterval(ChangeString(n),750);
n++
}
Результат = 0. Может кто подскажет в вариант реализации? По поиску подобного не смог найти к сожалению.


Последний раз редактировалось yarik_tv; 13.05.2008 в 15:35.
Старый 13.05.2008, 15:27
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 2  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
yaric_tv, для оформления кода используйте теги [code][/code]
уберите System.useCodepage = true; сохраните ваш файл в кодировке utf-8.
переменная str - локальная, ее нет за пределами фигурных скобок, где она объявлена.
у класса LoadVars нет метода split().
файл с данными оформлен неверно, надо все писать в одну строку.
иначе, надо использовать для загрузки класс XML.
Код:
var lv:LoadVars = new LoadVars();
lv.onLoad = function(success:Boolean):Void  {
	if (success == true) {
		for( var i=0; i<=3; i++){
		trace(lv['hdr'+i]);
		trace(lv['sub'+i]);
		trace(lv['txt'+i]);
		}
	} else {
		txt.text = "unable to load";
		trace("unable to load");
	}
};
// в файле tdata.txt одна строка
//hdr1=Заголовок1&sub1=Подзаголовок1&txt1=Первая строка.&hdr2=Заголовок2&sub2=Подзаголовок2&txt2=Вторая строка.&hdr3=Заголовок3&sub3=Подзаголовок3&txt3=Третья строка.&

lv.load("tdata.txt");


Последний раз редактировалось alexcon314; 13.05.2008 в 15:48.
Старый 13.05.2008, 16:21
yarik_tv вне форума Посмотреть профиль Отправить личное сообщение для yarik_tv Найти все сообщения от yarik_tv
  № 3  
Ответить с цитированием
yarik_tv

Регистрация: May 2008
Сообщений: 11
файл динамически создается из MSSQL базы и выкладывается в каталог. Кол-во строк различается от 5 до 1000, поэтому в одну строку вариант не подходит. Вот сейчас пробовал таким методом:

Код:
var a:Array = new Array();
var lv:LoadVars = new LoadVars();

lv.onData = function(src) {
	if (src != undefined) {
		a = src.split("/n/r");
		trace(a);
	}
};
lv.load("scroll.txt",lv);
в "а" - отображается нужная строка:
hdr=Заголовок1&sub=Подзаголовок1&txt=Первая строка. А вот как из нее получить значения для текстовых полей по таймеру!!!?
вот если бы можно было loadVariables(a, _target);

Старый 13.05.2008, 16:25
amesqit вне форума Посмотреть профиль Отправить личное сообщение для amesqit Найти все сообщения от amesqit
  № 4  
Ответить с цитированием
amesqit
 
Аватар для amesqit

Регистрация: Oct 2007
Сообщений: 255
Записей в блоге: 1
я бы предложил использовать xml файл, это более простой способ получения данных из файла, т.к. если использовать класс LoadVars() не избежать различного рода изврата.
с классом LoadVars() и вашим текстовым файлом код будет выглядеть примерно так:
Код:
var res_lv:LoadVars = new LoadVars();
var ar = new Array();
res_lv.onData = function(src) {
	ar = src.split("\r\n");
	for (var i = 0; i<ar.length; i++) {
		lv = new LoadVars();
		lv.decode(ar[i]);
		ar[i] = lv;
	}
	for (var i in ar[0]) {
		trace("ar[0]."+i+" = "+ar[0][i]);
	}
};

res_lv.load("1.txt");
с классом XML() и xml-файлом:
Код:
<r>
	<item hdr='Заголовок1' sub='Подзаголовок1' txt='Первая строка.'/>
	<item hdr='Заголовок2' sub='Подзаголовок2' txt='Вторая строка.'/>
	<item hdr='Заголовок3' sub='Подзаголовок3' txt='Третья строка.'/>
</r>
код будет выглядеть вот так:
Код:
var res_xml:XML = new XML();
res_xml.ignoreWhite = true;
var ar = new Array();
res_xml.onLoad = function(src) {
	var node = this.firstChild.childNodes;
	for (var i = 0; i<node.length; i++) {
		ar[i] = node[i].attributes;
	}
	for (var i in ar[0]) {
		trace("ar[0]."+i+" = "+ar[0][i]);
	}
};

res_xml.load("1.xml");
лично мне второй вариант больше нравится, т.к. в нем гораздо меньше изврата.

Старый 13.05.2008, 16:29
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 5  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Интервал задается функций setInterval ()
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 13.05.2008, 16:54
yarik_tv вне форума Посмотреть профиль Отправить личное сообщение для yarik_tv Найти все сообщения от yarik_tv
  № 6  
Ответить с цитированием
yarik_tv

Регистрация: May 2008
Сообщений: 11
спасибо за оба варианта, но я наверное в "танке", как все же отобразить данные в DinamicTextField-ах по интервалу. в Trace отображается только первая строка, понятно, чтоб отобразить вторую нужно задать trace("ar[1]."+i+" = "+ar[1][i]);
но вот как это сделать динамически и отображать в текстовых полях?

Старый 13.05.2008, 17:41
amesqit вне форума Посмотреть профиль Отправить личное сообщение для amesqit Найти все сообщения от amesqit
  № 7  
Ответить с цитированием
amesqit
 
Аватар для amesqit

Регистрация: Oct 2007
Сообщений: 255
Записей в блоге: 1
вот вам самый примитивный пример работы с интервалами, если внимательно почитаетете хелп во всем сможите разобраться, но вам, по сути, остается объеденить 2 куска кода, с небольшими дополнениями
Код:
var count:Number = 0;
var id:Number = setInterval(interval, 1000);
function interval() {
	trace(count);
	if (count == 10) {
		clearInterval(id);
	}
	count++;
}

Старый 13.05.2008, 18:36
yarik_tv вне форума Посмотреть профиль Отправить личное сообщение для yarik_tv Найти все сообщения от yarik_tv
  № 8  
Ответить с цитированием
yarik_tv

Регистрация: May 2008
Сообщений: 11
Код:
var n:Number  = 0;

var res_xml:XML = new XML();
res_xml.ignoreWhite = true;
var ar = new Array();
res_xml.onLoad = function(src) {
	var node = this.firstChild.childNodes;

setInterval(interval, 1000, n);
function interval() {		
	for (var i = 0; i<node.length; i++) {
		ar[i] = node[i].attributes;
	}
    trace(n);
	for (var i in ar[n]) {
		hdr.text = ar[n]["hdr"];
		sub.text = ar[n]["sub"];
		txt.text = ar[n]["txt"];
	}
	n++;
}


};
res_xml.load("1.xml");
Отображает данные только из первой строки, хотя trace(n) - обновляется. Помогите плз.

Старый 13.05.2008, 19:46
amesqit вне форума Посмотреть профиль Отправить личное сообщение для amesqit Найти все сообщения от amesqit
  № 9  
Ответить с цитированием
amesqit
 
Аватар для amesqit

Регистрация: Oct 2007
Сообщений: 255
Записей в блоге: 1
вы вообще пытались разобраться, что к чему в коде?

Старый 13.05.2008, 21:09
yarik_tv вне форума Посмотреть профиль Отправить личное сообщение для yarik_tv Найти все сообщения от yarik_tv
  № 10  
Ответить с цитированием
yarik_tv

Регистрация: May 2008
Сообщений: 11
пытался, но особых успехов не достигнуто даже с хелпом, к сожалению. Все гуд если менять n - вручную, а програмно результат не изменяется.

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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