代码之家  ›  专栏  ›  技术社区  › 

使用TweenMax在卷展栏上设置滚动动画

  •  1
  •  · 技术社区  · 7 年前

    我正在使用TweenMax设置一些箭头的动画,当我在链接上滚动时,这些箭头将移动,当我滚动时,这些箭头将返回动画。但它不工作,它在滚动时设置动画,但在滚动时不设置动画。

    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);
    

    我做错了什么?

    有没有更好的方法来编写此代码?

    3 回复  |  直到 17 年前
        1
  •  2
  •   Jason Von Ruden    10 年前

    Luke是绝对正确的,您使用“var”关键字创建了一个“局部变量”,它的范围是在其中创建的函数的范围;该函数一旦运行,就不再可用。我与Luke的不同之处在于,我将在顶部创建变量(编译器将变量移动到顶部),如果开发OOP,则在类范围内创建变量,否则将其粘贴在操作框架顶部附近,任何函数之外。您不必在那里给它一个值,只需声明它并将其数据类型化即可。

    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();
    };
    
        2
  •  2
  •   Luke    17 年前

    范围界定。触发OnRollow时,myTween变量不存在,因为它在onRollOver中声明,因此将仅存在于onRollOver范围中。在mc_函数的作用域中创建myTween变量,使其在onRollOver和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();
    };
    }
    
        3
  •  1
  •   evilpenguin    17 年前

    onRollOut 执行变量 myTween var 从理论上讲,函数应该只存在于定义它的函数内部。我猜你调用的是一个不再存在的变量。

    试着放一个 trace(myTween); myTween.reverse(); . 如果它打印出来 undefined myTween.reverse(); 用oposite过渡,但写得像 var myTween:TweenMax = new TweenMax(*);

    推荐文章