作为家庭作业,我必须编写一个简单的画廊;我们一直在使用GreenSock效果。到目前为止,这是我的代码:
import com.greensock.easing.*;
import com.greensock.TweenLite;
for (var i:Number = 0 ; i<5 ; i++){
_root["a"+i].onRollOver=function(){
TweenLite.to(this,.5,{_xscale:130,_yscale:130,
_alpha:90,
ease:Elastic.easeOut});
}
_root["a"+i].onRollOut=function(){
TweenLite.to(this,.5,{_xscale:100,_yscale:100,
_alpha:50,
ease:Elastic.easeOut});
}
_root["a"+i].onPress=function(){
var ix=this._name.substr(1);
TweenLite.to(_root["z"+ix],1,{_y:199.95,
ease:Quart.easeOut});
for(i=0 ; i<5 ; i++){
_root["a"+i].enabled=false;
}
}
_root["z"+i].cer.onPress=function(){
var ix=this._parent.name.substr(1);
TweenLite.to(_root["z"+ix],1,{_y:-190.15,
ease:Quart.easeIn});
for(i=0 ; i<5 ; i++){
_root["a"+i].enabled=true;
_root["a"+i]._xscale=100;
_root["a"+i]._yscale=100;
_root["a"+i]._alpha=50;
}
}
}
我知道有很多方法可以做一个画廊,但这几乎是我们在课堂上工作的结构,所以我真的无法改变太多。问题是,一切都很好但是一旦我到达显示Content(z)的点,你点击里面的Movieclip关闭它(“cer”),虽然它确实返回了,让我们说,选择 - 图像按钮(a)到它的原始状态(选中后略微弹出),它似乎只是忽略了TweenLite。
_root["z"+i].cer.onPress=function(){
var ix=this._parent.name.substr(1);
TweenLite.to(_root["z"+ix],1,{_y:-190.15,
ease:Quart.easeIn});
据我了解,这里我们基本上说: 在名为“z”的符号+ var“i”的当前编号中,其内部的符号“cer”在单击时将具有以下功能 - 我们再次定义var“ix”,它是前一个的儿子;从所选符号的名称减去一个字符的结果(所以我们得到符号的数量,因为它们可能有很多,我们使用for来简化) - 使用TweenLite库效果的函数将返回到它在显示之外的位置符号“z”+我们从刚刚定义的var“ix”得到的数字
现在,当一个简单的跟踪似乎与onPress很好地工作时,我找不到这个指令被忽略的原因;所以这让我相信它与TweenLite有关。另外我相信它可能与enable = false / true有关,但我已经尝试将它放在函数的不同时刻并且似乎没有太多发生。 我不认为它与调用符号有关,我只是在学习所有这些,所以这就是我可以描述的方式 - 因为几乎相同的代码在之前使用内容(z)被绘制成显示,它工作得很好。
这是结构问题吗? 我在Adobe帮助网站上找到了这个:
“注意如果包含_root的影片剪辑已加载到另一部影片中 clip,_root是指加载影片剪辑的时间轴,而不是 包含_root的时间轴。如果要确保_root引用 到加载的影片剪辑的时间轴,即使它被加载到 另一个影片剪辑,使用MovieClip._lockroot。“
由于我的关键按钮MovieClip位于内容MovieClip内,我是否需要使用lockroot?如果是这样,怎么样?
我真的会提出一些建议...... 谢谢你的时间!
答案 0 :(得分:0)
您应该尽量避免使用绝对路径。相反使用相对。只需使用this
代替_root