许多按钮的鼠标悬停/效果相同

时间:2011-03-10 13:33:05

标签: actionscript-3 mouseevent

上次我触摸闪光灯的时间是10年前左右......换句话说,我很生气。我将打造一个互动的map欧洲。我希望强烈的绿色圆圈具有鼠标悬停/效果(首先我想的是一些尺寸变化,但我想我可能会选择不透明度)。我有几个问题。下面的代码是有效的,但在调用fadingin(...)之前,是否有一种强制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 个答案:

答案 0 :(得分:1)

我可能会做的是为圆创建一个类。在那里,我将为mouseover和mouseout创建eventlisteners来改变不透明度和/或大小。

在第二个注释中,我建议您使用绿色搜索中的TweenLite或TweenMax http://www.greensock.com/tweenlite/

TweenLite应该足够你了。查看它的属性,尤其是“覆盖”属性,它控制覆盖你提到的补间

  

overwrite:int控制如何(和如果)   同一目标的其他补间是   被这个补间覆盖。有   有几种模式可供选择,但仅限于此   前两个是可用的   TweenLite除非   OverwriteManager.init()已经   称为

答案 1 :(得分:1)

您可以为绿色圆圈创建一个类,并包含其中的所有侦听器和补间反应功能。一种非常可靠的方法。

您还可以在包含所有可鼠标元素的影片剪辑/精灵上使用event propagation来实现与单个侦听器集相同的操作:

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});
}

基本上,您将侦听器添加到包含对象,并将事件传递给子节点,然后子节点接收事件指令。在MouseEvent参数中接收的传播对象的“.target”是此处的关键。

我正在使用其他人提到的奇妙的TweenLite框架,你也应该这样做。

欢呼,祝你好运!