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

Flash 使用TweenMax在卷展栏上设置滚动动画,flash,actionscript,actionscript-2,rollover,Flash,Actionscript,Actionscript 2,Rollover,我正在使用TweenMax设置一些箭头的动画,当我在链接上滚动时,这些箭头将移动,当我滚动时,这些箭头将返回动画。但它不工作,它在滚动时设置动画,但在滚动时不设置动画 function boxLink(mc_function:MovieClip, mc_target:MovieClip) { mc_function.onRollOver = function() { var myTween:TweenMax = new TweenMax(mc_target,0.5,{_x:"2", _a

我正在使用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);
我做错了什么

是否有更好的方法编写此代码?

是否确定在onRollOut执行时,变量myTween仍然存在?因为从理论上讲,在函数中用var定义的变量应该只存在于定义它的函数中。我猜你调用的是一个不再存在的变量

试着放一个tracemyTween;就在myTween.reverse;之前;。如果打印未定义,则这是您的问题,您应该替换myTween.reverse;使用oposite转换,但编写方式类似于var myTween:TweenMax=newtweenmax*

您确定在执行onRollOut时,变量myTween仍然存在吗?因为从理论上讲,在函数中用var定义的变量应该只存在于定义它的函数中。我猜你调用的是一个不再存在的变量


试着放一个tracemyTween;就在myTween.reverse;之前;。如果打印未定义,则这是您的问题,您应该替换myTween.reverse;使用oposite转换,但编写方式类似于var myTween:TweenMax=newtweenmax*

范围界定。触发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();
};
}

范围界定。触发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();
};
}

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

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