Одинаковый эффект наведения мышки на несколько кнопок - PullRequest
0 голосов
/ 10 марта 2011

Последний раз, когда я касался вспышки, было 10 лет назад или около того ... Другими словами, я довольно ржавый. Я собираюсь сделать интерактивную карту Европы. Я хочу, чтобы ярко-зеленые круги имели эффект наведения мышки (сначала я думал о некотором изменении размера, но я думаю, что, возможно, я пойду на исчезновение непрозрачности). У меня есть пара проблем. Код под работает, но есть ли хороший способ заставить fadingout (...) завершиться, прежде чем вызывается fadingin (...)? Если нет, есть ли умный способ получить текущее значение непрозрачности при исчезновении (...) и сделать его стартовым значением. Если пользователь быстро перемещает мышь наружу, эффект выглядит не очень хорошо. Кроме того, каков наилучший способ заставить эти функции работать с каждым кругом на карте? Если пользователь перетаскивает мышь, я хочу, чтобы это создало эффект трассировки.

import fl.transitions.Tween;
import fl.transitions.easing.*;

var outTween:Tween;

myButton.addEventListener(MouseEvent.MOUSE_OVER, fadingout);
myButton.addEventListener(MouseEvent.MOUSE_OUT, fadingin);

function fadingout(event:MouseEvent): void {
outTween = new Tween(myButton, "alpha", None.easeNone, 1, 0, 1, true);
}

function fadingin(event:MouseEvent): void {
outTween = new Tween(myButton, "alpha", None.easeNone, 0, 1, 1, true);
}

Ответы [ 2 ]

1 голос
/ 10 марта 2011

Вы могли бы очень хорошо создать класс для зеленых кругов и содержать в нем всех слушателей и функции анимации движения.Очень надежный метод.

Вы также можете использовать распространение события для фрагмента ролика / спрайта, содержащего все мышиные элементы, для достижения того же результата с помощью одного набора слушателей:

var myContainer:Sprite = new Sprite(); 
//add all elements
myContainer.addEventListener(MouseEvent.MOUSE_OVER, over, true, 0, false);
myContainer.addEventListener(MouseEvent.MOUSE_OUT, out, true, 0, false);

private function over(e:MouseEvent):void
{
TweenLite.to(e.target, .5, { alpha:1.0 });
}

private function out(e:MouseEvent):void
{
TweenLite.to(e.target, .5, { alpha:0.5});
}

В основном,вы добавляете слушателя к содержащему объекту, и события передаются дочерним элементам, которые затем получают инструкции о событии.Ключ «.target» распространяющегося объекта, полученный в аргументе MouseEvent, является здесь ключевым.

Я использую здесь фантастическую инфраструктуру TweenLite, как уже упоминалось другими, и вы тоже должны.

ура и удачи!

1 голос
/ 10 марта 2011

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

Во второй заметке я рекомендую использовать TweenLite или TweenMax из greensock http://www.greensock.com/tweenlite/

TweenLite, вероятно, должно быть достаточно для вас.Изучите его свойства, особенно свойство "перезаписать", которое управляет переопределением анимации, о которой вы упомянули

перезапись: int Управляет тем, как (и если) другие анимации той же цели перезаписываются этой анимацией.Есть несколько режимов на выбор, но только первые два доступны в TweenLite, если OverwriteManager.init () не был вызван

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...