![]() |
Всплывающее меню с элементами подменю
Помогите разобратся, если не сложно, я хочу реализовать обычное меню, контекстное, только во флеше естественно, но что - то совсем запутался.
какая у меня структура основной мувик (где расположены основные пункты меню) --подменю (мувик, который должен плавно появляться при наведении на определённый пункт меню) ----под-подменю (естественно меню, которое появляется при наведении на пукт меню в подменю) уф... запутался почти... как это проще организовать? у меня много пунктов получится, можно конечно попробовать все выложить на основной мувик, но это там все запутано будет, я думал и про loadMovie, но при этом переменные в подгружаемом мувике не учитываются в основном... Думал, что если просто организовать модуль, работоспособный, можно просто использовать XML, кароче трудности у меня с этим контекстным под-под-меню... |
Ответ: поискать такие меню с под-под-меню, они уже написаны, я точно помню, что щупал их исходники...
|
Component "Menu"
Нажмите Ctrl+F7 и там будет куча компонентов, которые сделаны разработчиками за Вас |
Либо анимировать клипы MotionTween'ом, тормозить stop()'ом их в ключевых кадрах на старте и на полном выпадении, а при наведении на к.л. пункт по событию on(rollOver) стартовать проигрывание этих клипов, совсем по деревенски и можно запутаться, но зато можно очень красиво сделать менюшки
|
_ViPeR_, если чесно даже не знаю как и через что обращаться к компонентам, к тому же мне нужно анимированное меню, такое как Flash Menu Labs, но что нить попроще, отдельный рабочий пункт меню я вставляю как мувик, но так у меня не получается обрабатывать большинство событий
|
еще тогда по теме, я просто это одним словом сформулировать для поиска не могу, можно как то программно создать мувик... ммм... задать ему как он должен проигрываться, допустим чтобы он появлялся и исчезал, или например выдвигался по оси Х или игрек? то есть как обычный мувик с элементами какого-то действия, только программно?
|
класс Tween для этого можно использовать (для линейных изменений параметров мувика), поищи в хелпе или на форуме - поиск точно выдаст + в ФАК-е есть.
//--------------------------------- А по меню, Вам наверное, вот это пригодится - http://flashmenulabs.com/ru/opensource.htm, скачайте исходник, разбирайтесь и переделывайте под себя, как хотите. |
О спасибо, все гораздо проще, немогли бы еще подсказать как обратить ту или иную функцию... то есть есть эффект где появляется мувик, плавно, как же сделать что б он также и исчез, использую tween класс
|
Tween.continueTo() метод.
|
Цитата:
Код:
menu1.onRollOver = function() { |
Код:
var myTween:Tween = new Tween(my_mc, "_y", mx.transitions.easing.Elastic.easeOut, my_mc._y, my_mc._y, 1, true);То что у вас не работает - понятно, вы же myTween объявили локально внутри функции. |
О, так получилось, хм... но как я понял я задаю переменную myTween, и присваиваю ей значение Твина с проперти _Y, а если мне надо еще и _х мне нужно создать новую переменную? илиже есть какой то другой способ?
|
Второе свойство - второй твин. В этом случае секунды лучше не использовать, чтобы не дергалось.
|
Цитата:
Код:
import mx.transitions.*; |
У твина есть событие onMotionFinished - по этому событию можно переназначить onRollOver и onRollOut (их же можно удалить в нужный момент)
|
как я понял onMotionFinished эта функция актуальна только тогда, когда твин подошёл к концу, не могу понять как это может оборвать полу секундное перемещение с одного объекта на другой, если твин у меня идёт примерно секунды 3%
|
событие onMotionFinished вызывается когда твин закончил свое движение(какая разница коакое время это заняло)
событие onMotionStopped вызывается когда твин закончил свое движение или был остановлен |
Цитата:
Код:
menu.onRollOut=function(){ |
<< у меня onMotionFinished начинается только тогда, когда например менюшка полностью появилась!
Так и должно быть. есть событие у класса Tween stop(); оно останавливает движение. Смотрите в хелпе |
Цитата:
А когда анимация доиграет до конца - снова назначить. |
Цитата:
вот! |
Поставьте маленький таймаут на onRollOut. При наведении на подменю, таймаут очищайте.
Покажите, что у вас получилось, может я неправильно понял. |
Вам знаком класс lmc_tween.as?
Вот с его помощью у меня с горе пополам что-то получилось! Если знакомы подскажите что лучше, обычный класс Tween или этот, или это все одно и тоже, только разными словами? |
Еще хотел спросить, я дублирую клипы
Код:
submenu_inst.duplicateMovieClip("sub2menu"+i,depth);Код:
Eval("sub2menu"+i).onRollOver = function(){}Код:
onRollOver |
Код:
dupl = submenu_inst.duplicateMovieClip("sub2menu"+i,i); |
Ничего себе, даже теоретически ничего не произойдет помоему, что такое dupl? переменная что ли?
Почему это невозможно, потому что на форме у меня нет ничего с именемм dubl, как программа будет определять onRollOver? |
dupl - просто переменная, а dupl._n - это будет ссылка на его так сказать номер. При ролОвере будет в трейсе высвечиваться, т.е. будем знать над каким элементом сроллОверили.
|
duplicateMovieClip возвращает ссылку на созданный клип. Строго говоря,
Код:
var dupl:MovieClip = submenu_inst.duplicateMovieClip("sub2menu"+i,i); |
Спасибо большое, сейчас я столкнулся с глубиной, %: У меня много пунктов меню и для каждого я задаю следующую глубину, и того у меня получается depth глубиной 40 ))) мне сказали что эт как то можно реализовать в контейнера) и еще что лучше использовать, attach или Duplicate
Вот насчет контейнера я делаю так Код:
var container:MovieClip = this.createEmptyMovieClip("cont_"+texts, this.getNextHighestDepth()); |
Код:
var container:MovieClip = this.createEmptyMovieClip("cont_"+texts, this.getNextHighestDepth());getNextHighestDepth() будет возвращать те же цифры, что и i |
Вложений: 1
Вот файл че я тут намудрил, сильно не смейте, но у меня чет вообще ниче не получается, с этими дублями и аттачами...
стройской create_menu(mainTextArray.length,mainTextArray,0); создается сам текст меню... в чем проблема, там у меня путается или взаимозамещается глубина клипов, и еще я опять таки не могу к ним обратится посредством onRollOver... тока не спрашивайте почему без XML, я его не знаю, учить тож некогда, надо щас с одним чем нить разобратся плиз! |
Цитата:
я делаю так этот код у меня в теле цикла for Код:
Код:
function Getobj(){Код:
for (i=0;i<total;i++){ |
Цитата:
|
Цитата:
Код:
my_array[mnu_i]=but.attachMovie("linkageName", "menus"+i, but.getNextHighestDepth()); |
Массивы по природе своей тормоза вызывают, много памяти жрут. По возможности лучше без них обходиться.
А в данном месте - есть большая разница между массивом и элементом массива. |
это я уже наглядно понял на своем примере... что можно вместо них применить...?
|
Да ничего не надо применять, у вас же клипы с индексами в именах создаются, вот в их свойства и пишите чего надо.
А файл Ваш ни я, ни множество других людей посмотреть не сможет - во-первых, версия флэша не у всех такая модная, во-вторых классик Вы поленились в архив приложить |
Вы же сами сказали что это тормоза вызывает? не пойму...
Код:
for (i=0;i<total;i++){ |
Массивы тут не при чем - дело в обработчиках на наведение, скорее всего где-то в недрах таинственных функций tween и alphaTo. Что именно, неизвестно, так как lmc_tween.as вы в архив не включили.
|
Массивы память жрут, Kikasso, ты же знаешь. Я недавно один проект свой переписал , убрав массивы ссылок на аттачащиеся клипы, скорость в три раза возросла.
В общем я не знаю толком что там у Вас происходит (из-за неполного исходника), но данный кусок сделал бы так Код:
for (i=0;i<total;i++){ |
| Часовой пояс GMT +4, время: 14:56. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.