Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Создание flash меню. (http://www.flasher.ru/forum/showthread.php?t=174994)

DIMOSS 07.02.2012 14:34

Создание flash меню.
 
Привет всем! Такой вот вопрос, надо создать несложное меню : увеличение текста при навелении и уменьшение при отведении, при клике размер остается увеличенный. Проблема в том что текст дрожит и еще какая-то фигня происходит(( как это сделать? текст кнопки без фона должен быть

Wolsh 07.02.2012 14:49

Вот фон сделайте прозрачной заливкой (с alpha = 0), глядишь и дрожать перестанет. Дрожит из-за того что текст при масштабировании ускользает из-под курсора. Если будет фон, то и проблемы не будет – под мышкой всегда будет "тело" кнопки.

DIMOSS 07.02.2012 15:51

Спасибо большое) а как сделать так чтоб при клике размер кнопки оставался увеличенным?

Wolsh 08.02.2012 15:19

Не уменьшать.

Dukobpa3 08.02.2012 15:41

Цитата:

Сообщение от Wolsh
Не уменьшать.

Гениально))))) Я восхищен))

Извините за оффтоп, не сдержался)

Wolsh 08.02.2012 16:09

Ну какой вопрос, такой и ответ. Уровень абстракции не нарушен).

ObOs 08.02.2012 18:25

Занесите все кнопки меню в массив. При нажатии на любую из кнопок пробигитесь по массиву и всем кнопкам, кроме нажатой, выставляйте уменьшенный вид.
А вообще, опишите подробней что есть ваши кнопки и как запускаете флешку. Допустим если флешка запущена через браузер и при нажатии на кнопки страница обновляется, то такой подход не прокатит.

Wolsh 08.02.2012 18:52

Всегда поражался такому подходу. А не проще сохранять ссылку на одну текущую нажатую кнопку?
А если возвращение в уменьшенное состояние это анимация? Вы будете вызывать анимацию "от большого к маленькому" у всех кнопок, надеясь что среди них окажется и ОДНА нажатая?

ObOs 09.02.2012 11:43

Wolsh, Ваша правда. Конечно проще перезаписывать при нажатии ссылку на текущую кнопку, чем каждый раз бегать по массиву. Так вы имели ввиду?
Код AS3:

private var menuBut1:MenuBut=new MenuBut();
private var menuBut2:MenuBut=new MenuBut();
private var menuBut3:MenuBut=new MenuBut();
 
private var curBut:MenuBut;
 
public function createMenu():void{
        menuButt1.addEventListener(MouseEvent.CLICK, onMouseClick);
        menuButt2.addEventListener(MouseEvent.CLICK, onMouseClick);
        menuButt3.addEventListener(MouseEvent.CLICK, onMouseClick);
 
        curBut=menuButt1;
}
 
private function onMouseClick(e:MouseEvent):void{
        curBut.стануМаленькой();
        curBut=e.target;
        curBut.стануБольшой();
}

Так как вопрошающий не особо хотел расскахывать что хочет, я написал первое что пришло в голову.
Это все приходит с опытом, спасибо за совет.

Wolsh 09.02.2012 12:55

Да, конечно.
Только не "стануБольшой" (увеличение было запущено при наведении, т.е. на ролловер), а "останусьБольшой". В этом методе (не обязательно оформлять как отдельный метод, но по возможности желательно) мы отрубаем активной кнопке всяческую реакцию на мышь, т.е. делаем removeEventListener для всех слушателей. Теперь при уходе мыши для этой кнопки не запустится анимация на роллаут, то есть в данном примере – уменьшение, и при новом наведении не запустится анимация увеличения. Кнопка остается глухой к мышке, пока мы ее не разморозим при клике на другую кнопку. То есть в вашем псевдокоде должно быть не только curBut.стануМаленькой(); но и curBut.стануСноваАктивной();


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

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