我将 6 个动画剪辑设置为 array_0,将另一组 6 个动画剪辑设置为 array_1。这就像不同屏幕的两种选择。这两个数组都嵌套在另一个数组中作为 all_array。所有 12 个影片剪辑在初始加载时都定位到相同的 x 和 y,并且位于可见舞台之外。我想使用两个不同的全局变量进行索引。例如,cCat_Sel 的范围为 0-5,另一个 cScr_Sel 的范围为 0-1。cCat_Sel 将在舞台上的六个按钮单独对象的单击事件上更改(每个按钮对应每个类别)。
因此它将根据 cScr_Sel 的值显示每个类别的内容。如果 cScr_Sel 为 0,那么它将使用 all_array[0][cCat_Sel] 来访问当前目标,并且类似地,对于值为 1 的相应数组作为 all_array[1][cCat_Sel]
我已经完成了所有工作,包括所有补间动画以移动当前目标并使其可见。但是补间不会将第二组 mcs 带到可见区域。我有两个函数,一个用于移动,一个用于移动,通过对 mc.x 属性使用补间动画。每个相关的点击事件;我必须将当前 mc 移出并制作 alpha 0,一旦完成,移入新的当前目标并制作 alpha 1。
不知何故,我必须将这两个补间结合到一个函数中。这是我被卡住的部分。或者可能将这些 mcs 放在两个不同的数组中,这不是正确的方法。我可以很容易地在根的 Enter Frame 事件上实现我想要的,以检查 cCat_Sel 和 cScr_Sel 变量,并一个接一个地执行这两个动画,但似乎 enter frame 使用了太多的 cpu 并且使它变慢并且可能不优选。
愿意尝试任何人的建议或指导。提前致谢。我根本没有任何正式或非正式的编程教育,但我通过阅读和尝试一些事情来完成工作,根据 stackoverflow 问题和答案以及有时谷歌。因为我的大部分答案都是从堆栈溢出中找到的。更新:
function fnSlideInOut(cMc:Object, pMc:Object){
var HideX:Number =650;
var ShowX:Number = 0;
if(cMc != null){
if(cMc.x != ShowX){
//cMc.alpha = 1;
var SlideMcIn:Tween = new Tween(cMc, "x", Strong.easeOut, 650, ShowX, 0.5, true);
SlideMcIn.addEventListener(TweenEvent.MOTION_FINISH, fnSlideInFinish);
SlideMcIn.start();
}
}
if(pMc != null){
if(pMc.x != HideX){
//pMc.alpha = 1;
var SlideMcOut:Tween = new Tween(pMc, "x", Strong.easeOut, 0, HideX, 0.5, true);
SlideMcOut.addEventListener(TweenEvent.MOTION_FINISH, fnSlideOutFinish);
SlideMcOut.start();
}
}
function fnSlideOutFinish(e:TweenEvent){
//SlideMcOut.obj.alpha = 0;
SlideMcOut.removeEventListener(TweenEvent.MOTION_FINISH, fnSlideOutFinish);
}
function fnSlideInFinish(e:TweenEvent){
//SlideMcIn.obj.alpha = 1;
SlideMcIn.removeEventListener(TweenEvent.MOTION_FINISH, fnSlideInFinish);
}
}//End Function
fnSlideInOut(cScr_Sel, pScr_Sel);
我希望像您这样的专家对上述代码的任何类型的错误发表评论。它工作了 99 次,但有 1 次影片剪辑要么没有到达目的地,要么当前和以前的两个目标都显示,而且也没有到达预期的位置。这只发生在按钮单击事件快速连续发生时。再次感谢