TweenLite onComplete выстрелил мгновенно? - PullRequest
1 голос
/ 25 марта 2010

После того, как я закончу анимацию движения, я бы хотела изменить свои переменные, тогда только движение моей мыши могло бы начать выполнять некоторые функции, но похоже, что функция onComplete сработала, немедленно испортив все вещи. Разве эта функция onComplete не запустится только после того, как действие выполнено? Любой другой способ понравиться после запуска строки кода Tween.to, только он будет запускать 2-ю строку, изменяя переменную?

 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 ]

5 голосов
/ 25 марта 2010

onComplete должно быть ссылкой на функцию, то есть имя что вам нужно, это что-то вроде этого

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

или, что еще лучше, определите функцию, которая не является «встроенной», а затем обратитесь к этой

3 голосов
/ 25 марта 2010

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, но получите беспорядочно.

0 голосов
/ 25 марта 2010

ниже - решение, которое я придумал, не кажется таким идеальным: /

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
}
...