2013-05-30 19 views
0

我想尝试使用AS3 Tween类实现Arrcordion菜单http://www.freeactionscript.com/2009/10/simple-accordion-menu/(AS3)更新补间中的开始坐标

所以我使用2个屏幕的影片剪辑,位于舞台的右侧,当我点击一个屏幕时,它会向左补间。

这里是我的代码

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它补间到左边。然后我点击屏幕02和screen01返回到430之前他们都补间。 当我在MouseEvent中跟踪x1和x2时,坐标已经更新,为什么screen01不在40而screen02在左边补间呢? 此外,如果screen02是开放的,当我点击screen01时,两个屏幕返回到他们原来的位置430和470和屏幕01补间。

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

回答

0

你可以杀死()补间并开始另一个补间。该对象已经部分移动并将从该点继续。如果你想让运动成比例,那么使用一个计时器并使用currentTime和totalTime之间的比率(类似的),然后改变你乘以该比率的距离。