1

我正在使用 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);

我究竟做错了什么?

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

4

3 回答 3

2

范围界定。当 onRollOut 被触发时,myTween 变量不存在,因为它是在 onRollOver 中声明的,因此只存在于 onRollOver 范围内。在 mc_function 范围内创建 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();
};
}
于 2009-03-26T21:39:08.263 回答
2

Luke 是绝对正确的,您使用“var”关键字创建了一个“LOCAL VARIABLE”,它的范围是它在其中创建的函数的范围;一旦该功能运行,它就不再可用。我与 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();
};
于 2009-03-27T22:19:33.413 回答
1

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

尝试在trace(myTween);之前添加一个myTween.reverse();. 如果它打印undefined,那是你的问题,你应该myTween.reverse();用相反的转换替换,但写成var myTween:TweenMax = new TweenMax(*);

于 2009-03-25T10:34:29.037 回答