在我完成一个补间之后,我想改变我的变量,然后只有我的鼠标移动才能开始运行一些函数,但似乎onComplete函数立即被触发,把所有的事情都搞乱了。onComplete函数不是只有在动作完成后才会运行吗?在运行Tween.to代码行之后,有没有其他方法可以像这样运行第二行代码来更改变量?
stage.addEventListener(MouseEvent.MOUSE_MOVE, movevC);
public static function showSection(obj:DisplayObject):void {;
var sect2X=((obj.stage.stageWidth/2)+(obj.stage.stageWidth/4))+lg.width;
var sect2Y=((obj.stage.stageHeight/2)-(obj.stage.stageHeight/4))+lg.height;
switch (obj.name) {
case "section2" :
//onComplete run instantly??
TweenLite.to(vC, 10, {x:sect2X, y:sect2Y, rotation:0,ease:Elastic.easeInOut, onComplete:currentPage=2});
/*if ((vC.x=sect2X)&&(vC.y=sect2Y)) {
currentPage=2;
}*/
break;
}
}
private function movevC(event:MouseEvent):void {
if (currentPage==2) {
TweenLite.to(vC, 2, {x:mouseX, y:mouseY});
}
}发布于 2010-03-26 01:25:09
onComplete应该是对函数的引用,即您需要的名称如下所示
TweenLite.to(vC, 10, {x:sect2X, y:sect2Y, rotation:0,ease:Elastic.easeInOut, onComplete:function(){currentPage=2}});或者更好的是,定义一个不是‘内联’的函数,然后引用这个函数
发布于 2010-03-26 01:24:21
onComplete需要一个函数,所以如果您将currentPage=2放在一个函数中,并将函数名放在onComplete中,它就会起作用。
像这样:
TweenLite.to(vC, 10, {x:sect2X, y:sect2Y, rotation:0,ease:Elastic.easeInOut, onComplete: changePageStatus});
private function changePageStatus ():void {
currentPage = 2
}你也可以直接把这个函数写进补间调用中,但是get更麻烦。
发布于 2010-03-26 03:27:01
下面是我想出的解决方案,看起来不是那么完美:/
TweenLite.to(vC, 2, {x:sect2X, y:sect2Y, rotation:0,ease:Elastic.easeInOut});
currentPage=2;
break;
if ((vC.x==sect2X)&&(vC.y==sect2Y)&&(currentPage==2)) {
currentPage=21;
} else if (currentPage==21) {
run something
}https://stackoverflow.com/questions/2517426
复制相似问题