Pergunta

Eu estou usando TweenMax para animar algumas setas para mover quando eu rolar sobre um link, ea parte traseira animado, quando eu rolar para fora. Mas ele não está funcionando, ele anima em capotamento, mas não rollout.

function boxLink(mc_function:MovieClip, mc_target:MovieClip) {
mc_function.onRollOver = function() {
    var myTween:TweenMax = new TweenMax(mc_target,0.5,{_x:"2", _alpha:50, ease:Back.easeOut});
};
mc_function.onRollOut = function() {
    myTween.reverse();
};
}

boxLink(link_a1,arrow_a1);

O que estou fazendo de errado?

Existe uma maneira melhor para escrever esse código?

Foi útil?

Solução

Luke é absolutamente correto, você criou uma "variável local" usando a palavra-chave "var" e do escopo é o da função que é criado dentro de; Uma vez que a função tem correu, ele não está mais disponível. Onde eu diferem de Lucas é que eu iria criar a variável no topo (o compilador movimentos variáveis ??para o topo de qualquer forma), você cria-lo no escopo da classe, se o seu desenvolvimento OOP, caso contrário, colocá-lo perto do topo de sua ações quadro, fora de qualquer função. Você não tem que dar-lhe um valor lá, apenas declará-la e tipo de dados-lo.

var myTween:TweenMax; //Can be access from anywhere within "this" scope.
mc_function.onRollOver = function()
{
    myTween = new TweenMax(mc_target,0.5,{_x:"2", _alpha:50,  ease:Back.easeOut});
};
mc_function.onRollOut = function()
{
    myTween.reverse();
};

Outras dicas

Escopo. Quando o onRollOut é acionado a variável myTween não existe porque ela é declarada em onRollOver e os mesmos só existem no âmbito onRollOver. Criar a variável myTween no âmbito do mc_function vez para que ele está disponível tanto em onRollOver e onRollOut.

function boxLink(mc_function:MovieClip, mc_target:MovieClip) {
mc_function.onRollOver = function() {
        this.myTween = new TweenMax(mc_target,0.5,{_x:"2", _alpha:50, ease:Back.easeOut});
};
mc_function.onRollOut = function() {
        this.myTween.reverse();
};
}

Você tem certeza que quando executa onRollOut, a variável myTween ainda existe? Porque uma variável definida com var em uma função deveria, teoricamente, viver apenas dentro da função que definiu. Então, meu palpite é que você está chamando uma variável que não existe mais.

Tente colocar em um trace(myTween); pouco antes myTween.reverse();. Se ele imprime undefined, então esse é o seu problema e você deve substituir myTween.reverse(); com a transição oposto, mas escrito como var myTween:TweenMax = new TweenMax(*);

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top