1

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

3 回答 3

5

onComplete 应该是对函数的引用,即您需要的名称是这样的

TweenLite.to(vC, 10, {x:sect2X, y:sect2Y, rotation:0,ease:Elastic.easeInOut, onComplete:function(){currentPage=2}});

甚至更好,定义一个不是“内联”的函数,然后引用它

于 2010-03-25T17:25:08.647 回答
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 调用中,但比较麻烦。

于 2010-03-25T17:24:20.597 回答
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
}
于 2010-03-25T19:27:01.063 回答