TweenLite onComplete立即被解雇?

时间:2010-03-25 16:35:59

标签: actionscript-3 tweenlite

我完成一个补间后,我想改变我的变量,然后只有我的鼠标移动才会开始运行一些函数,但似乎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});
            }
}

3 个答案:

答案 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
}