0

所以我有这个数组,命名为combo。我想根据用户点击用电影剪辑填充它(如果用户点击 1,则将“1”添加到数组并将其显示在一个区域上。

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

作为记录,我有 4 个电影剪辑,火、风、地球和精神。当用户单击其中一个时,我希望数组更新。数组的最大长度为 6,并且始终根据“true_combo”数组进行检查。

我的问题是:

1) 如果长度已达到 6,如何删除 Array 中最旧的项目?
2) 根据 Combo,我如何一个接一个地显示影片剪辑(较小版本的按钮,而不是新的影片剪辑)?
3) 如何动态更新舞台上的movieclip列表?

这是我当前 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();
        }
    }
}
4

1 回答 1

1

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

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

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;
   }
}

更新:您可以在此处
下载此实现的示例(Flash CS6 文件)或在此处观看


更新 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();
    }
}
于 2012-12-03T09:58:25.137 回答