Вызов функции внутри этой функции и последующая остановка цикла - запуск и остановка функций - PullRequest
0 голосов
/ 07 января 2012

Я делаю прогулку персонажа.Этот код заставит его колебаться вправо, и когда это будет сделано, он заставит его колебаться влево и затем снова вызовет функцию, чтобы продолжить цикл.

Я могу заставить цикл работать нормально, вызвавфункция, но как мне остановить функцию?Также я хочу позвонить позже.Есть ли способ запустить и остановить функцию?

function wobble()
{
    var ws  = .1;
    var dis = 1;

    var WobbleRight:Tween = new Tween(Beau, "rotation", Strong.easeIn, Beau.rotation, dis, ws, true);
    WobbleRight.addEventListener(TweenEvent.MOTION_FINISH, WobbleL);
    function WobbleL(e:TweenEvent):void 
         {
        var WobbleLeft:Tween = new Tween(Beau, "rotation", Strong.easeIn,Beau.rotation, -dis, ws, true);
        WobbleLeft.addEventListener(TweenEvent.MOTION_FINISH, WobbleR);
            function WobbleR(e:TweenEvent):void 
            {
            wobble();
            }

        }
}
wobble();

или есть лучший способ сделать это? Я хочу запустить Tweens и остановить ихвызов функцииВКЛЮЧИТЬ ПРОХОДИТЬ И ВЫКЛЮЧИТЬ.- СПАСИБО БОЛЬШОЕ!

Ответы [ 2 ]

1 голос
/ 08 января 2012

Попробуйте этот код.Обратите внимание, как Tween используется повторно, и позиция begin сбрасывается в поворот Beau.rotation во время возобновления движения Tween.Кроме того, не встраивайте свои функции в другую функцию.

(я выделил движение и замедлил его для тестирования):

import fl.transitions.TweenEvent;
import fl.transitions.Tween;
import fl.transitions.easing.Strong;

var ws  = 1;
var dis = 10;

var WobbleRight:Tween;
var WobbleLeft:Tween;

this.addEventListener(MouseEvent.CLICK, toggleWobble);

function startWobble():void 
{
    WobbleR(null);
}

function WobbleL(e:TweenEvent):void 
{
    if (!WobbleLeft) 
    {
        WobbleLeft = new Tween(Beau, "rotation", Strong.easeIn, Beau.rotation, -dis, ws, true);
        WobbleLeft.addEventListener(TweenEvent.MOTION_FINISH, WobbleR);
    } else {
        WobbleRight.begin = Beau.rotation;
        WobbleLeft.start();
    }
}


function WobbleR(e:TweenEvent):void 
{
    if (!WobbleRight) 
    {
        WobbleRight = new Tween(Beau, "rotation", Strong.easeIn, Beau.rotation, dis, ws, true);
        WobbleRight.addEventListener(TweenEvent.MOTION_FINISH, WobbleL);
    } else {
        WobbleRight.begin = Beau.rotation;
        WobbleRight.start();
    }
}

function toggleWobble(e:MouseEvent):void 
{
    if( WobbleRight && WobbleRight.isPlaying ) {
        WobbleRight.stop();
    } else if ( WobbleLeft && WobbleLeft.isPlaying ) {
        WobbleLeft.stop();
    } else {
        startWobble();
    }
}

startWobble();
0 голосов
/ 08 января 2012

Каким образом вы хотите остановить колебание? Прекращается ли колебание через несколько раз, или пользователь должен нажать кнопку?

Если вы хотите прекратить колебание после нескольких раз, вам следует использовать таймер. Вызовите wobble () для события таймера. Если колебание будет остановлено пользователем, тогда просто используйте триггер isStopped. Если для isStopped установлено значение true, вернитесь из wobble ().

...