显示动画片段的数组并动态更新它们?

时间:2012-12-03 02:11:24

标签: arrays actionscript-3

所以我有这个名为combo的数组。我希望根据用户点击次数填写动画片段(如果用户点击1,则将“1”添加到数组并将其显示在某个区域。

问题是,我不知道该怎么做。

为了记录,我有4个动画片段,火,风,土和精神。当用户单击其中一个时,我希望更新阵列。数组的最大长度为6,并始终根据“true_combo”数组进行检查。

我的问题是:

1) How do I remove the oldest item in the Array if the length has reached 6?
2) How do I display the movieclips one next to another (smaller versions of the buttons, not new movieclips), according to Combo?
3) How do I dynamically update the movieclip list on the stage?

这是我当前fla的剥离版本 https://www.dropbox.com/s/17d9rgclz29ft1u/Untitled-1.fla

这是检查组合对真组合的代码:

function checkthis(e:Event)
{
    if(combo.length == truecombo.length)
    for(var o:int = 0; o < combo.length; o++) 
    {
        if(combo[o] == truecombo[o])
        {
            bravo.play();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

<强> 1
您可以使用Array.shift()(删除数组中的第一项)或Array.pop()(删除数组中的最后一项)

2/3
使用for循环并根据数组更改项目的位置。我假设数组中的项是对movieclips的引用,那么这将是你可以使用的函数。

function add(clip:DisplayObject)
{
    if (this.combo.length >= 6) 
{
    // remove child and remove it from the list
    removeChild(this.combo.shift());
}
this.combo.push(clip);
this.addChild(clip);

    reorder();
}

function reorder()
{
   for(var i:int = 0; i < combo.length; i++)
   {
       combo[i].x = i * 50;
   }
}

<强>更新
您可以下载此实施的示例here(Flash CS6文件)或观看here


更新2

function checkthis(e:Event)
{
    var isValid:Boolean = true;
    if(combo.length == truecombo.length)
    {
      for(var o:int = 0; o < combo.length; o++) 
      {
        if(combo[o] != truecombo[o])
        { 
            // if one item isnt the same it should fail.
            isValid = false;
        }
      }
    }
    if (isValid)
    {
        bravo.play();
    }
}