Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Directory tree (http://www.flasher.ru/forum/showthread.php?t=68508)

MyXus 29.08.2005 17:45

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

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

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

Iv 29.08.2005 18:12

из XML.
пример: http://www.sharedfonts.com/liveDocs/menu/ - менюха слева
исходник: http://www.sharedfonts.com/liveDocs/...1help_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

Цитата:

Сообщение от MyXus
Код:

_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

Цитата:

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

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

еще можно умножить на 1 :)

MyXus 01.09.2005 22:56

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

iNils 01.09.2005 23:28

Цитата:

Сообщение от MyXus
но как с предыдущим вопросом? как достать мувик из лайбрари??

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

SkipOne 02.09.2005 03:19

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

MyXus 02.09.2005 18:46

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

KidsKilla 02.09.2005 20:23

Цитата:

Сообщение от iNils
еще можно умножить на 1 :)

по сути, это тот же Number() =) почти...

iNils 02.09.2005 21:51

Цитата:

Сообщение от KidsKilla
по сути, это тот же 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
поработайте в сях =) когда вы начнете биться с процом за оптимизацию кеша для ускореня процесса, тогда вы подумаете, что жесткая типизация - тема =)

Слава богу я в нем не работал. И задачи разные.

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. Только чтот я такого события не вижу в списке.. Это как?


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

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