所以我有这个名为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();
}
}
}
答案 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();
}
}