Форум 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)
-   -   Как переключать кнопки на передний план? (http://www.flasher.ru/forum/showthread.php?t=114421)

Lencha 28.07.2008 21:48

Как переключать кнопки на передний план?
 
Привет!Есть кнопки, которые пересекаются между собой (нарисованы в разных слоях). Нужно чтоб при наведении курсора (и при нажатии) на кнопку она выходила на передний план, поверх всех остальных кнопок. Чтобы ее слой становился как будто верхним. Как это сделать?
Помогите, или хотябы намекните.
Спасибо

iNils 28.07.2008 21:50

имя.swapDepths ()

Lencha 28.07.2008 22:01

я так уже пробовала, не работает. что-то не так делаю.
а можно пример какой-нить?

iNils 28.07.2008 22:43

Код:

function createBox (x:Number, y:Number, rgb:Number):MovieClip {
        var d:Number = this.getNextHighestDepth ();
        trace (d);
        var mc:MovieClip = this.createEmptyMovieClip ("mc" + d, d);
        mc.lineStyle (0, 0x000000);
        mc.beginFill (rgb, 90);
        mc.lineTo (100, 0);
        mc.lineTo (100, 100);
        mc.lineTo (0, 100);
        mc.lineTo (0, 0);
        mc.endFill ();
        mc._x = x;
        mc._y = y;
        return mc;
}
////
function sendTop ():Void {
        var d:Number = this._parent.getNextHighestDepth ();
        this.swapDepths (d);
}
var mc1:MovieClip = createBox (100, 100, 0xFF0000);
var mc2:MovieClip = createBox (150, 100, 0xFFFF00);
var mc3:MovieClip = createBox (150, 150, 0x00FF00);
var mc4:MovieClip = createBox (100, 150, 0x0000FF);
mc1.onRollOver = sendTop;
mc2.onRollOver = sendTop;
mc3.onRollOver = sendTop;
mc4.onRollOver = sendTop;


AlexDesinger 29.07.2008 02:57

фига себе... iNils, круто ваще...я раньше столько времени угрохал на эту тему...знал бы у тебя спросил...спасибо, пригодиться ;)

Жень Шень 29.07.2008 11:10

Привет!
А если надо, что бы глубины не менялись (в смысле того, что эти четыре мувика оставались в диапазоне перевоначальных глубин), то можно заменить функцию таким образом:
Код:

function sendTop ():Void {
        var d:Number = this._parent.getNextHighestDepth ();
        mx.behaviors.DepthControl.bringToFront(this);
}

Но, все это на любителя :)

AlexDesinger 29.07.2008 12:30

Кайф....трэйс действительно выводит каждый раз глубину 4 :))))
на какого же любителя эт ж отличный движок получился)))))))
нет заботы о том что какой нть клип вдруг окажется на не запланированной глубине и удалит какой нть мувик оттуда - эт ж катастрофа для комерческого проекта)))))))))))))))))))))))))))))

Жень Шень 29.07.2008 16:14

Цитата:

Сообщение от AlexDesinger (Сообщение 755026)
...нет заботы о том что какой нть клип вдруг окажется на не запланированной глубине и удалит какой нть мувик оттуда...

Ни в первом, ни во вторим случаях удаления не будет. У iNils-а просто перемещается на глубину(уровень) выше всех, а во втором случае методом перебора мувик "всплывает" наверх. Стоит добавить (даже вручную) мувики в единое пространство видимости и они тоже будут вовлечены во "всеобщее перемещение".

Lencha 29.07.2008 18:28

Мувики работают как надо, но в них встроены баттоны и они не работают. Как можно победить кнопки? чтоб работали...

AlexDesinger 29.07.2008 18:33

Это потому что событие onRollOver для мувика перекроет все события которые вы прописали для кнопок в мувике и никогда не сработают.
Вам нужно менять вложенность или не прописывать событий для клипов - контейнеров

Lencha 29.07.2008 18:59

а как его сбросить?
пробовала по разному не сбросилось
как правильно сделать это?

Жень Шень 29.07.2008 20:19

Вложений: 1
Цитата:

Сообщение от Lencha (Сообщение 755124)
...пробовала по разному...

Привет!
Если надо кнопка в мувике и чтоб на каждом было событие, пробуй так:
Создай мувик контейнер. В него помести клип, а сверху кнопку. На контейнер не надо вешать никаких событий, а на "внутренности", как душе угодно. Все. Если надо перемещать этот "бутерброд", то таскать надо сам контейнер. Смотрим пример.

Wolsh 29.07.2008 22:29

Вложений: 1
Жень Шень, таким образом ведь не реализовать ситуацию, когда вложенные кнопки покрывают площадь контейнера)) Единственный выход - вешать события на сами кнопки. Т.е. функция всплывания выглядит у меня вот так
Код:

function toTop():Void {
    this._parent.swapDepths(top);
    top = this._parent;
}

А на всех кнопках по
Код:

onRollOver = toTop;
Получается вот такая штука (фла не выкладываю, там лишнего больше чем ответ требует)

Жень Шень 30.07.2008 10:51

Цитата:

Сообщение от Wolsh (Сообщение 755166)
Жень Шень, таким образом ведь не реализовать ситуацию...

Да, что-то я не в ту степь... ушел от темы. Был очень тяжелый день. Ваш код решает проблему.

Lencha 31.07.2008 20:25

Спасибо большое, вы мне очень помогли. Вариант Жень Шень немного переделала и все заработало!


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

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