当我滚动链接时,我正在使用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);
我做错了什么?
有没有更好的方法来编写此代码?
答案 0 :(得分: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();
};
}
答案 1 :(得分: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();
};
答案 2 :(得分:1)
您确定在onRollOut
执行时变量myTween
仍然存在吗?因为在函数中用var
定义的变量理论上应该只存在于定义它的函数内部。所以我猜你正在调用一个不再存在的变量。
尝试在trace(myTween);
之前加入myTween.reverse();
。如果它打印undefined
,那么这就是您的问题,您应该将myTween.reverse();
替换为对位转换,但写成var myTween:TweenMax = new TweenMax(*);