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

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

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

Регистрация: Sep 2005
Адрес: Литва
Сообщений: 195
По умолчанию Компонент Tree и поиск в нём 2

"Здравствуйте!
У меня есть что-то похожее на галерею. Использую флешевский пример, который находиться тут - диск/Program Files/Macromedia/Flash 8/Samples and Tutorials/Samples/ActionScript/Galleries , файл gallery_tree. Мне интересно узнать, можно в данный пример добавить поиск. Например, после введёного названия фотографии список развернулся бы и она выбралась автоматически... Если можно, то посоветуйте, пожалуйста, как это сделать?" - этот вопрос у меня был совсем недавно, но к сожалению никто на него не ответил. Иеперь мне нужно научиться
1. Научиться искать в XML.
2. Перехватить тот XML, в котором надо искать.
Может быть кто-нибудь знает, как это реализовать...

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Я знаю, что ваша тема тут и на другом форуме. Не много ли?

Накидал такой примитив (добавить после кода в примере), но поскольку я компонетами не пользуюсь, то возможно все еще проще, но мне лень вникать.
Код:
////
var o:Object = new Object ();
Key.addListener (o);
o.onKeyDown = function () {
	if (Selection.getFocus () == String (txt) && Key.isDown (Key.ENTER)) {
		var node:Array = treeDP_xml.firstChild.firstChild.childNodes;
		var str:String = txt.text;
		for (var i:Number = 0; i < node.length; i++) {
			if (node[i].attributes.label == str || node[i].attributes.src == str) {
				my_tree.setIsOpen (my_tree.getTreeNodeAt (0), true);
				my_tree.selectedNode = my_tree.getTreeNodeAt (0).getTreeNodeAt (i);
				treeListener.change ({target:my_tree});
				break;
			}
		}
	}
};
var txt:TextField = this.createTextField ("txt", this.getNextHighestDepth (), 300, 20, 200, 30);
txt.background = true;
txt.border = true;
txt.type = "input";
txt.text = "DCP_0732";
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 08.07.2007, 15:16
ARTur2 вне форума Посмотреть профиль Отправить личное сообщение для ARTur2 Найти все сообщения от ARTur2
  № 3  
Ответить с цитированием
ARTur2

Регистрация: Sep 2005
Адрес: Литва
Сообщений: 195
Больщое Вам спасибо! Как оказалось всё на самом деле не так трудно, как я думал.

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

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

Старый 09.07.2007, 15:17
ARTur2 вне форума Посмотреть профиль Отправить личное сообщение для ARTur2 Найти все сообщения от ARTur2
  № 5  
Ответить с цитированием
ARTur2

Регистрация: Sep 2005
Адрес: Литва
Сообщений: 195
2 iNils : у меня к Вам возник ещё один не большой вопрос.
Код:
var node:Array = treeDP_xml.firstChild.firstChild.childNodes;
как я понимаю, эта строка кода "загоняет" всё из XML-файла в масив. Всё отлично работает для макромедиевского примера. Но дело в том, что там, в примере, всего одна галерея. А как быть, если их несколько. Я уже совсем запутался в этих Child'ах...
Допустим, если я заменяю эту строку на
Код:
var node:Array = treeDP_xml.lastChild.lastChild.childNodes;
то для поиска доступна только последняя галерея.
Если так
Код:
var node:Array = treeDP_xml.firstChild.lastChild.childNodes;
то не работает вообще ничего... Так вот, вопрос заключается в том, как записать в масив весь XML-файл, если в нём не одна галерея, я n-штук?

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Допустим есть
Код:
<?xml version="1.0"?> 
<tree>
	<node label="Gallery 1">
		<node label="DCP_0730" src="DCP_0730.jpg" />
		<node label="DCP_0731" src="DCP_0731.jpg" />
	</node>
	<node label="Gallery 2">
		<node label="DCP_0730" src="DCP_0730.jpg" />
		<node label="DCP_0731" src="DCP_0731.jpg" />
	</node>
</tree>
Тогда надо изменить строку опредялющую массив со списком картинок на
Код:
var node:Array = treeDP_xml.firstChild.childNodes[номер].childNodes;
Где номер - это номер нода задающий галерею, <node label="Gallery 1"> или <node label="Gallery 2">, причем отсечт идет от 0. Соответственно, вам нужно организовать цикл, чтобы обочти все галереи.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: Sep 2005
Адрес: Литва
Сообщений: 195
Мой XML-файл выглядит так:
Код:
<?xml version="1.0"?> 
<tree>
	<node label="Gallery 1">
		<node label="DCP_0730" src="DCP_0730.jpg" />
		<node label="DCP_0731" src="DCP_0731.jpg" />
	</node>
	<node label="Gallery 2">
		<node label="DCP_0732" src="DCP_0732.jpg" />
		<node label="DCP_0733" src="DCP_0733.jpg" />
	</node>
</tree>
по Вашему совету я поменял строку определяющую масив на следущее:
Код:
for ( var n:Number = 0; n<2 ; n++) {
		var node:Array = treeDP_xml.firstChild.childNodes[n].childNodes;
		trace(node);
		}
Trace показывает следущее:
Код:
<node label="DCP_0730" src="DCP_0730.jpg" />,<node label="DCP_0731" src="DCP_0731.jpg" />
<node label="DCP_0732" src="DCP_0732.jpg" />,<node label="DCP_0733" src="DCP_0733.jpg" />
Это ведь значит, что масив заполнен так, как нам надо. Но почему-то теперь поиск работает только для последней галереии. А разварачивает первую. Т.е. если искать "DCP_0732", покажет картинку для него, а "выбраной" в дереве будет DCP_0730.jpg. По первой же галереии поиск вообще не даёт ничего...

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Заменить часть кода на этот
Код:
if (Selection.getFocus () == String (txt) && Key.isDown (Key.ENTER)) {
	for (var j:Number = 0; j < treeDP_xml.firstChild.childNodes.length; j++) {
		var node:Array = treeDP_xml.firstChild.childNodes[j].childNodes;
		var str:String = txt.text;
		trace (j)
		for (var i:Number = 0; i < node.length; i++) {
			if (node[i].attributes.label == str || node[i].attributes.src == str) {
				my_tree.setIsOpen (my_tree.getTreeNodeAt (j), true);
				my_tree.selectedNode = my_tree.getTreeNodeAt (j).getTreeNodeAt (i);
				treeListener.change ({target:my_tree});
				break;
			}
		}
	}
};
и разобраться в своих ошибках
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 09.07.2007, 17:37
ARTur2 вне форума Посмотреть профиль Отправить личное сообщение для ARTur2 Найти все сообщения от ARTur2
  № 9  
Ответить с цитированием
ARTur2

Регистрация: Sep 2005
Адрес: Литва
Сообщений: 195
Спасибо! Разобрался и более менее всё понял!
У меня ещё возник вопрос, просто на будущее. А если, допустим, в галерее 1, есть ещё галерея 3, в ней галерея 4 и т.д. То как тогда можно было бы организовать "обход" дерева?

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
1. Разобраться что такое XML и как с ним работать во флеш. Можно прочитать тут http://www.artlebedev.ru/tools/techn...etc/flash-xml/
2. Зайти в поиск и поискать по словам дерево, xml*, обход и тому подобное.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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