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

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

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

Регистрация: Mar 2011
Адрес: Ibiza
Сообщений: 13
По умолчанию Перелистывание текста xml

есть xml следующего содержания
Код:
<?xml version = "1.0" encoding = "utf-8"?>
<txt>
    <text>123</text>
    <text>456</text>
    <text>789</text>
</txt>
во флеше загружается следующим образом..
Код AS1/AS2:
var my_xml:XML = new XML();
my_xml.load("data.xml");
my_xml.ignoreWhite = true;
var myArray:Array = new Array();
my_xml.onLoad = function()
{
	var arr:Array = my_xml.firstChild.childNodes;
	trace(arr.length);
	for (i = 0; i < arr.length; i++)
	{
		myArray.push(arr[i].firstChild);
	}
	trace(myArray);
 
	t.text = myArray[0];
};
 
next.onRelease = function()
{
	t.text = myArray[++i];
 
};
back.onRelease = function()
{
	t.text = myArray[--i];
 
};
все работает, но никак не получается составить верный код для кнопок, чтобы перелистывалось вперед и назад.. в чем моя ошибка?

Добавлено через 1 час 40 минут
проблему решил следующим образом
Код AS1/AS2:
var my_xml:XML = new XML();
my_xml.load("data.xml");
my_xml.ignoreWhite = true;
var myArray:Array = new Array();
my_xml.onLoad = function()
{
	var arr:Array = my_xml.firstChild.childNodes;
	trace(arr.length);
	for (i = 0; i < arr.length; i++)
	{
		myArray.push(arr[i].firstChild);
	}
	trace(myArray);
 
	t.text = myArray[i=0];
};
 
next.onPress = function()
{
 
	t.text = myArray[++i];
 
 
};
back.onRelease = function()
{
 
	t.text = myArray[--i];
 
};
но есть еще одна проблема.. как сделать так, чтобы при достижении конца массива переходило снова в начало??

Старый 07.09.2011, 00:26
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
После работы цикла у вас i останется равным 3. Вы это не учли.
Нужно было определить другую переменную-счетчик, зачем вы вытащили то же i?

Надо так:
Код AS1/AS2:
......
 
var current:Number = 0;
 
next.onRelease = function()
{
	t.text = myArray[++current];
};
 
back.onRelease = function()
{
	t.text = myArray[--current];
 
};
Границы перелистывания нужно определить...

my_xml.load("data.xml") поставьте после определения обработчика my_xml.onLoad, а то нелогично с т.зр. алгоритма - сперва вы стартуете загрузку, и только потом определяете, что делать по ее завершении.
(Понятно, что загрузка займет время, а код выполнится гораздо быстрее, но всё-таки).
__________________
Идите первым!


Последний раз редактировалось mooncar; 07.09.2011 в 00:33.
Старый 07.09.2011, 02:52
Gonsalez вне форума Посмотреть профиль Отправить личное сообщение для Gonsalez Найти все сообщения от Gonsalez
  № 3  
Ответить с цитированием
Gonsalez
 
Аватар для Gonsalez

Регистрация: Mar 2011
Адрес: Ibiza
Сообщений: 13
как определить эти границы перелистывания?
задаю условие, но в начало массива не возвращает:
Код AS1/AS2:
next.onRelease = function()
{
	t.text = myArray[++i];
	if (i == arr.length - 1)
	{
		i = 0;
		t.text = myArray[i];
	}
 
};
пробовал и новую переменную создавать и для нее условие создавать, но все точно также.. в чем ошибка??

Старый 07.09.2011, 13:36
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Массив arr у вас определен внутри функции-обработчика, и снаружи не виден - это локальная переменная функции.
Когда есть проблема, трейсите. Внутрь next.onRelease поставьте trace(arr.length) и увидите.
Исходя из этого, чините свой код.
__________________
Идите первым!

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

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

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


 


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


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