PDA

Просмотр полной версии : Directory tree


MyXus
29.08.2005, 17:45
Менюшка по типу tree.
Кто делал, расскажите, чтоб мне колесо не изобретать.

меню-айтемы из чего как лучше делать? Для целей show/hide можно юзать 1) смену координат (выносить за пределы видимости) 2) криейтить и делейтить айтемы.

как организовывали элементы в принципе? В двумерный массив, в н-мерный массив, по классам?

Iv
29.08.2005, 18:12
из XML.
пример: http://www.sharedfonts.com/liveDocs/menu/ - менюха слева
исходник: http://www.sharedfonts.com/liveDocs/menu/001help_menu.fla

там есть бодяга одна с переделкой XML иерархии,
ее нужно бы грохнуть за ненадобностью,
а отдавать правильный XML.

Iv
29.08.2005, 18:13
если попроще, то есть еще вот: http://www.dembicki.narod.ru/tutor/menu_flash_xml.zip
- тщательно закомментированный код, но весьма устаревший.

MyXus
30.08.2005, 15:12
сложная штука, чёрт. без трёх литров не разобраться..
сам буду писать =)

MyXus
30.08.2005, 20:31
Вопрос: у текста элементов меню непредсказуемая ширина. Как бы мне сделать облать для onRollOver нужного размера?
Поскольку я генерю menu-items как createTextField с указанной шириной, заюзать item._width я не могу. Шрифт - не равноширинный. Как быть?
Может можно как-то сгенерить саморастягивающийся текстфилд ?

iNils
30.08.2005, 20:40
Помести текст в мувиклип.
сделай autosize=true
А на мувиклип повесь onRollOver.
Теперь вся область занятая текстом будет активна как кнопка

MyXus
01.09.2005, 15:18
Thanx a lot!!

Вопрос до кучи: Я где-то уже видел, но не могу найти. Как достать до элемента XML не через childNodes а напрямую, по айдишнику?

И ещё, да, а можно программно повесить акшн-скрипт на мувик?

iNils
01.09.2005, 15:38
Вопрос до кучи: Я где-то уже видел, но не могу найти. Как достать до элемента XML не через childNodes а напрямую, по айдишнику?
в каждом ноде в качестве аттрибута пишешь id=уникальный_номер_для_всего_xml
например:
xmlID=new XML ("<a id='1'/><b id='2'><bb id='4'/></b><c id='3'/>")
trace (xmlID[1])
trace (xmlID[2])
trace (xmlID[3])
trace (xmlID[4])

И ещё, да, а можно программно повесить акшн-скрипт на мувик?
имя_клипа.action

MyXus
01.09.2005, 15:47
_root.createEmptyMovieClip('mask_'+curID, _root.getNextHighestDepth());
_root['mask_'+curID].action = 'on(release) {_root.ActivateLevel(this._name);}';

Чёт не работает on(release)..

iNils
01.09.2005, 15:53
_root.createEmptyMovieClip('mask_'+curID, _root.getNextHighestDepth());
_root['mask_'+curID].action = 'on(release) {_root.ActivateLevel(this._name);}';

Чёт не работает on(release)..
:D я же условно :)
_root['mask_'+curID].onRelease = function (){
_root.ActivateLevel(this._name);
}

MyXus
01.09.2005, 15:55
Крутаа! Занкс! :cool:

MyXus
01.09.2005, 16:41
почему когда я делаю
var rootXMLChild:XMLNode = loader.firstChild;
trace (rootXMLChild[1]);trace (rootXMLChild[1]); не катит, а когда делаю
var rootXMLChild:XMLNode = loader.firstChild;
rootXMLChildNew=new XML (rootXMLChild.toString());
trace (rootXMLChildNew[1]); - работает.

MyXus
01.09.2005, 18:37
Я уже догадываюсь в чём фишка. Дело в том что между загрузкой хмл и выводом trace проводится раздача айдишников. Поскольку айдишник должен быть (почему-то) стринговым, мне приходится таскать за собой нормальный нумерик айдишник, и юзать его так:
var tmp:String = itemNum;
parentXMLNode.attributes.id=tmp;
После этой операции вызов типа trace (xmlID[1]) не работает. Но если загнать xml, как я писал выше, в стринг, а потом прогрузить обратно - работает. Значит какая-то заковыка в типе данных id.
?

iNils
01.09.2005, 18:40
Помнишь я тебе давал пример xml c id
xmlID=new XML ("<a id='1'/><b id='2'><bb id='4'/></b><c id='3'/>")
Заметь id там задается как
id='1'
а не
id=1

MyXus
01.09.2005, 18:50
я понимаю. но я ж написал, что присваиваю айдишник как
var tmp:String = itemNum;
parentXMLNode.attributes.id=tmp;
...
может правда 'aaa' отличается от "aaa", но другого подходящего типа кроме :String я не нашел.

Iv
01.09.2005, 18:55
по сути id это обычная переменная, назначаемая во время парсинга xml-строки в xml-объект, если такой атрибут встречается в узле.

условно код такой:

.....
var rootNode = new XML()
.....
if (node.attributes.id !=undefined) {
rootNode[node.attributes.id] = node
}

- и всё. никаких заморок.

если сам назначаешь id, то побеспокойся о том, чтобы по той же схеме у тебя появилась ссылка на узел в рутовом ноде.

Iv
01.09.2005, 18:58
полезности смотри здесь: http://proto.layer51.com/l.aspx?p=19

MyXus
01.09.2005, 19:15
Угу. занкс, почитаю.
У меня последняя заморока осталась по дереву:
Допустим у меня в библиотеке есть мувик mov_name.
Я создаю emptyMovieClip и хочу туда етот mov_name запихнуть.
Мне уже говорили что надо юзать attachMovie(linkage... ). Только как же прописать линкаж в библиотеку?

Ну и ещё, по мелочи. Когда я нажимаю на пункт меню, по которому должен грузиться текст (в другой фрейм) - можно грузить его отдельной xml. А можно подгрузить простой txt-шник?

MyXus
01.09.2005, 19:42
Пардон, друзья. Никак не могу найти функцию strToNum...
Не писать же свою?
А, плевать, написал =)

KidsKilla
01.09.2005, 20:39
Number() //конструктор класса
parseInt() //глобальная, приводит к целому
parseFloat() //глобальная, приводит к числу с плавающей точкой
int() //старая из 4ки

какую изволите? =)

iNils
01.09.2005, 21:49
Number() //конструктор класса
parseInt() //глобальная, приводит к целому
parseFloat() //глобальная, приводит к числу с плавающей точкой
int() //старая из 4ки

какую изволите? =)
еще можно умножить на 1 :)

MyXus
01.09.2005, 22:56
эээ, спасибо, друзья.
но как с предыдущим вопросом? как достать мувик из лайбрари??

iNils
01.09.2005, 23:28
но как с предыдущим вопросом? как достать мувик из лайбрари??
Создай символ
В библиотеке щелкни на нем правой мышью и выбери linkage
Выбери export for actionscript и укажи identifier
Все

SkipOne
02.09.2005, 03:19
не подскажете как бы для такого хмл меню сделать прокрутку(скроллинг)!?

MyXus
02.09.2005, 18:46
я вообще собирался положить это всё в мувик, под маску, и крутить =)
правда ещё не сделал =)

KidsKilla
02.09.2005, 20:23
еще можно умножить на 1 :)
по сути, это тот же Number() =) почти...

iNils
02.09.2005, 21:51
по сути, это тот же Number() =) почти...
Это к тому что способов куча.
Обожаю не строгую типизацию. Помню как мучался в Delphi с этим.

KidsKilla
02.09.2005, 22:15
ouh yeah, man, u're in theme =)))

MyXus
03.09.2005, 02:01
поработайте в сях =) когда вы начнете биться с процом за оптимизацию кеша для ускореня процесса, тогда вы подумаете, что жесткая типизация - тема =)

iNils
03.09.2005, 02:14
поработайте в сях =) когда вы начнете биться с процом за оптимизацию кеша для ускореня процесса, тогда вы подумаете, что жесткая типизация - тема =)
Слава богу я в нем не работал. И задачи разные.

MyXus
03.09.2005, 11:25
ну кстати работают скрипты во флэше жутко медленно. думаю в т.ч. из-за этой мягкости синтаксиса и типизации.. хотя это уже флэйм =)

MyXus
03.09.2005, 17:24
Прочекайте плиз менюшку, друзья!
http://www.myxus.nm.ru/LTG/
Скролинг везде кроме как по mouse_wheel (кстати есть такая возможность во флеше?).

MyXus
07.09.2005, 01:15
есть и глюк. при скроллинге, иногда чуть портятся иконки у айтемов. хотя сама функция скроллинга айтемы не трогает, она только двигает родительский для них клип под маской. в чем дело? - незнаю даже как подступиться.

Iv
07.09.2005, 04:54
округляй координаты

MyXus
13.09.2005, 03:14
2BitSky: спасибо. работает =)

Я только что видел сайтик где реализован скроллинг on mouse wheel. Только чтот я такого события не вижу в списке.. Это как?