我觉得整个阵列的问题都有问题。我自己无法接通。 我想做这样的事情:
var mcs:Array = ["mc_1","mc_2","mc_3","mc_4"];
var firstMc:Object = mcs.shift();
getStarted();
function getStarted();
{
getChildByName("firstMc").addEventListener(Event.ENTER_FRAME, fadeOut);
}
function fadeOut(event:Event):void
{
if (firstMc.currentFrame >= 15)
{
firstMc.gotoAndStop(15);
firstMc.removeEventListener(Event.ENTER_FRAME, fadeOut);
firstMc = mcs.shift();
fadeIn();
}
else
{
firstMc.nextFrame();
}
}
function fadeIn(event:Event):void
{
if (firstMc.currentFrame == 30)
{
firstMc.gotoAndStop(1);
firstMc.removeEventListener(Event.ENTER_FRAME, fadeIn);
getStarted();
}
else
{
firstMc.nextFrame();
}
}
(mcs是具有动画alpha值的30帧长补间.0-15帧:淡出,15-30:淡入)
所以这就是主意。就像幻灯片一样:mc_1淡出而不是mc_2淡入和淡出mc_3 ....等我可以用丑陋的方式做到这一点:复制函数四次,而不是将第一个副本中的“firstMc”更改为mc_1,mc_2 in第二......但它效率不高。所以我想请求一些有关这些棘手的数组对象的帮助。
感谢您提出任何建议或示例!
答案 0 :(得分:1)
您的代码非常令人困惑。所以我将介绍有关使用数组的部分。
在第一行:
var mcs:Array = ["mc_1","mc_2","mc_3","mc_4"];
您已存储了一系列字符串。您可以通过删除引号来存储实际对象,但字符串也可以工作。
因此,在您的情况下,当您使用:
声明对象时var firstMc:Object = mcs.shift();
你实际在做的是从数组中获取第一项,这恰好是一个字符串。
所以你应该把它改成:
var firstMc:String = mcs.shift();
在getStarted中,你使用getChildByName,并正确传递一个字符串,但不是给它一个字符串引用你想要的对象的名字,你只是给它另一个字符串" firstMc"。你应该给它变量firstMc,它保存你想要获得的Object的String名称。
删除引文,它应该更好用:
function getStarted();
{
getChildByName(firstMc).addEventListener(Event.ENTER_FRAME, fadeOut);
}
至于其余的代码,您可以通过在时间轴上使用动画来实现您想要的结果......