我完成一个补间后,我想改变我的变量,然后只有我的鼠标移动才会开始运行一些函数,但似乎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});
}
}
答案 0 :(得分:5)
onComplete应该是对函数的引用,即名称 你需要的是这样的事情
TweenLite.to(vC, 10, {x:sect2X, y:sect2Y, rotation:0,ease:Elastic.easeInOut, onComplete:function(){currentPage=2}});
甚至更好,定义一个不是'inline'的函数,然后引用这个
答案 1 :(得分:3)
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
}
您也可以将函数直接写入Tween调用,但是变得更加混乱。
答案 2 :(得分:0)
下面是我提出的解决方案,看起来并不那么完美:/
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
}