0

我想尝试使用 AS3 Tween 类在http://www.freeactionscript.com/2009/10/simple-accordion-menu/实现 Arrcordion 菜单。

所以我使用 2 个屏幕 MovieClips,位于舞台右侧,当我点击屏幕时,它会在左侧补间。

这是我的代码

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

var second:int = 1;
var x1:int = screen01.x; //screen01.x = 430
var x2:int = screen02.x; // screen02.x = 470

var Tween1:Tween = new Tween(screen01, "x", Regular.easeOut, x1, 40, second, true);
var Tween2:Tween = new Tween(screen02, "x", Regular.easeOut, x2, 470, second, true);
var Tween3:Tween = new Tween(screen01, "x", Regular.easeOut, x1, 40, second, true);
var Tween4:Tween = new Tween(screen02, "x", Regular.easeOut, x2, 80, second, true);

screen01.addEventListener(MouseEvent.CLICK, clickHandler, false, 0, true);
screen02.addEventListener(MouseEvent.CLICK, clickHandler, false, 0, true);

function clickHandler(event:MouseEvent):void{

        x1 = screen01.x;
        x2 = screen02.x;

        if(event.target == screen01)
        {
            Tween1.start()
            Tween2.start()              
        }
        else if(event.target == screen02)
        {   
            Tween3.start()
            Tween4.start()
        }
}

但是为什么当我单击 screen01 时它会向左补间。然后我点击 screen02 和 screen01 在他们都补间之前返回到 430。当我在 MouseEvent 中跟踪 x1 和 x2 时,坐标已更新,那么为什么 screen01 不停留在 40 而 screen02 向左补间?此外,如果 screen02 打开,当我单击 screen01 时,两个屏幕都会返回到其原始位置 430 和 470 以及 screen01 补间。

我可以假设我的问题是 Tween1、Tween2、Tween3 和 Tween4 开始坐标在初始化后没有改变。有没有办法更新 4 个补间的起始坐标,使它们等于 x1 和 x2?

4

1 回答 1

0

您可以 kill() 补间并开始另一个。该对象已部分移动,并将从该点继续。如果您希望移动成比例,则使用计时器并使用 currentTime 和 totalTime 之间的比率(类似的东西),然后只需更改您将比率乘以的距离。

于 2013-05-30T13:27:48.687 回答