上次我触摸闪光灯的时间是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);
}
答案 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框架,你也应该这样做。
欢呼,祝你好运!