出现这个问题,不是楼上说的冒泡的问题。
而是TWEEN类的重复执行。
zoomout()中的TWEEN实例执行完了,有可能 zoom()时定义的TWEEN还没有执行完,所以最终结果就是zoom中定义的放大效果执行在了最后。
一般在一个新的TWEEN定义时,如果是更新某个对象的同一属性,需要加个stop()强制原先的tween实例停止运行。
复制内容到剪贴板
代码:
import fl.transitions.*;
import fl.transitions.easing.*;
var iconIns=new icon();
addChild(iconIns);
iconIns.x=stage.stageWidth/2;
iconIns.y=stage.stageHeight/2;
iconIns.iconContent.addEventListener(MouseEvent.ROLL_OVER,zoom);
iconIns.iconContent.addEventListener(MouseEvent.ROLL_OUT,zoomout);
var scaleXTween:Tween;
var scaleYTween:Tween;
function zoomout(e:Event) {
var initialSX=1.2;
var finalSX=1;
var duration=.25;
scaleXTween&&scaleXTween.stop();//停止执行前面定义的效果
scaleYTween&&scaleYTween.stop();
scaleXTween=new Tween(iconIns.iconBG,"scaleX",Strong.easeOut, initialSX,finalSX,duration, true);
scaleYTween=new Tween(iconIns.iconBG,"scaleY",Strong.easeOut, initialSX,finalSX,duration, true);
}
function zoom(e:Event) {
var initialSX=1;
var finalSX=1.2;
var duration=1;
scaleXTween&&scaleXTween.stop();//注意这两行
scaleYTween&&scaleYTween.stop();
scaleXTween=new Tween(iconIns.iconBG,"scaleX",Elastic.easeOut, initialSX,finalSX,duration, true);
scaleYTween=new Tween(iconIns.iconBG,"scaleY",Elastic.easeOut, initialSX,finalSX,duration, true);
}