Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   У MenuBar после нажатия на элемент перестаёт срабатывать rollOver (http://www.flasher.ru/forum/showthread.php?t=91510)

Manowar1 01.02.2007 13:49

У MenuBar после нажатия на элемент перестаёт срабатывать rollOver
 
вообщем есть у меня MenuBar с листенером на событие item_roll_over и пока не нажали на елемент меню он отрабатывает. После нажатия не срабатывает. Кто знает как с этим бороться?

Да, у меня одноуровневый menuBar т.е. сабменю у него нет, может здесь собака зарыта...

Nirth 01.02.2007 14:28

У меня с одноуровневым меню вообще itemClick не отрабатывается...

Код:

<mx:MenuBar dataProvider="{['Hello', 'World']}" itemClick="trace('click')"/>
ноль реакции.

Nirth 01.02.2007 15:28

Вообще меню расчитанно на несколько уровней.

Может стоит использовать другие навикационные бары, вроде ToggleButton?

Manowar1 01.02.2007 16:45

ButtonBar не подойдут ввиду того, что у них нет родных событий ролловера. В смысле они тоже могут подойти не хуже MenuBar, но с ними мне кажется мороки больше. Вообщем я так подумал и решил в итемРендере МенюБара перехватывать мышиные ролловеры и на них вешать обработчики.

Manowar1 01.02.2007 19:56

Сделал, получилось не плохо. Я просто оболдел с другой фичи menuBar. Он начинает добавлять рендереры через 10 пикселей от левого края. Так вот эту величину невозможно никак изменить поскольку она задаётся приватной константой в классе MenuBar. Ну вот нафиг это было делать???

Nirth 01.02.2007 21:46

Стилями разве нельзя изменить?

Manowar1 02.02.2007 12:54

в Том то и дело что он не берёт это значение из стиля, а оно у него задано приватной константой, таким вот образом
Код:

public class MenuBar extends UIComponent implements IFocusManagerComponent
{
    .......
    private static const MARGIN_WIDTH:int = 10;
    .......

    override protected function updateDisplayList(unscaledWidth:Number,
                                                  unscaledHeight:Number):void
    {
        super.updateDisplayList(unscaledWidth, unscaledHeight);

        var lastX : Number = MARGIN_WIDTH;
        .....
    }
}

где lastX это начальная координата первого рендерера.

Nirth 02.02.2007 14:19

Ну так переопредели метод updateDisplayList со своими значениями.

Manowar1 02.02.2007 14:32

Ну я так и сделал, хотя там тоже были свои особенности. Но дело не в этом, дело в подходе. Зачем так хардкодить? Лень прописать какой-нить стиль типа padding-left? Не серъёзно как-то...


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

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