【问题标题】:Display array of movieclips and dynamically update them?显示电影剪辑数组并动态更新它们?
【发布时间】:2012-12-03 02:11:23
【问题描述】:

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

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

为了记录,我有 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();
        }
    }
}

【问题讨论】:

  • 向我们展示您尝试过但不起作用的方法,我们会帮助您解决问题

标签: arrays actionscript-3


【解决方案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;
   }
}

更新:
您可以下载此实现的示例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();
    }
}

【讨论】:

  • 这是在正确的轨道上...它按顺序添加影片剪辑而不会弄乱它们,但它不会将它们限制为 6 个,也不会重新排列它们。
  • 你必须提供更多关于你如何/什么实现它以及出了什么问题的信息。您可以对原始问题添加更新。
  • 正如我所提到的,初始定位很好,但是当列表达到6时,它不会在下次更新时限制为6,而是不断添加movieclips......所以我结束了在数组中添加了很多动画剪辑,而不是最多 6 个……它们也不会改变它们的初始位置(当它们超过 6 个时应该会发生这种情况,对吧?)
  • 哇,伙计……这段代码完全搞砸了。比以前更糟!你知道吗?我知道我一直很痛苦,但如果有任何希望你能检查我的 fla 并在这里给我一些帮助,我将不胜感激......
  • 您必须查看示例 fla 文件,检查它是如何工作的。这是它应该如何工作的吗?再说一次,你必须告诉你是如何实现它的。是的,您可以添加 fla,但如果您想了解其错误的原因,您首先需要学习描述错误之处,然后分析可能错误的地方,然后学习如何修复它。只是这么说,因为您的评论完全没有帮助。我认为那不公平,因为我花时间帮助你。
猜你喜欢
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 2011-01-22
  • 2021-11-06
  • 2013-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多