Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何比较两个阵列?_Arrays_Actionscript 3_Compare - Fatal编程技术网

Arrays 如何比较两个阵列?

Arrays 如何比较两个阵列?,arrays,actionscript-3,compare,Arrays,Actionscript 3,Compare,我有两个数组,即combo和truecombo。用户通过点击舞台上的各种按钮,用MovieClips填充组合,truecombo是正确的组合 在任何给定点(enterFrame),Flash都会检查两者是否相同,如果是,则执行一些操作。目前这是我的代码(修改了好几次,比如键入索引,在combo[o]的末尾添加.parent等。两件事会发生,一件或另一件 要么语句将不满足,此时组合数组的添加和切分将继续,要么当combo.length=6时条件将立即满足。请检查我的代码 更新:我有一个带有当前代码

我有两个数组,即combo和truecombo。用户通过点击舞台上的各种按钮,用MovieClips填充组合,truecombo是正确的组合

在任何给定点(enterFrame),Flash都会检查两者是否相同,如果是,则执行一些操作。目前这是我的代码(修改了好几次,比如键入索引,在combo[o]的末尾添加.parent等。两件事会发生,一件或另一件

要么语句将不满足,此时组合数组的添加和切分将继续,要么当combo.length=6时条件将立即满足。请检查我的代码

更新:我有一个带有当前代码的dropbox文件。单击此处查看FLA,这是为方便和安全起见一直剥离的SWF。

/*stage.*/addEventListener(Event.ENTER_FRAME, checkthis);
function checkthis(e:Event)
{
    for(var o:int=0;o<= combo.length; o++) 
    {
        if((combo[o] == truecombo[o]) && (combo.length==truecombo.length))
        {
            equal=true;
        }
    }
    if (equal==true)
    {

        stage.removeEventListener(Event.ENTER_FRAME, checkthis);
        endSeq();
    }
}
function endSeq():void
{
    bravo.play();
    for (var i:int = 0; i < combo.length; i++)
    {
        var element:DisplayObject = combo[i];
        element.parent.removeChild(element);
    }
    firebb.gotoAndPlay(2);
    windbb.gotoAndPlay(2);
    spiritbb.gotoAndPlay(2);
    earthbb.gotoAndPlay(2);
}

对不起,由于缺少注释,我想它是很自我解释的。谢谢。

< P>我相信<代码> COBO[O] <代码> TruteCOMBO[O] <代码>是同一个类的两个实例,并且希望它们匹配。如果是这样的话,你可以考虑:

getQualifiedClassName(combo[o]) == getQualifiedClassName(truecombo[o])
为了与您的方式相匹配,您必须确保truecombo中的对象引用的是stage上的相同对象&而不是新实例


编辑:

当比赛成功时,您似乎没有打破循环。请使用以下方法:

function checkthis(e:Event)
{
    for(var o:int=0;o<= combo.length; o++) 

      if((combo[o] == truecombo[o]) && (combo.length==truecombo.length)) {

        equal=true;

        break;
      }     

      if (equal) {

        stage.removeEventListener(Event.ENTER_FRAME, checkthis);

        endSeq();
      }
}
函数检查此(e:事件)
{

对于(var o:int=0;o,这里有一个非常简单的循环:

var equal:Boolean=true
if(combo.length == truecombo.length) {
    for(var i:int=0; i<combo.length; i++) {
        if(combo[i] != truecombo[i]) {
            equal=false;
            break;
        }
    }
} else {
    equal=false;
}

if(equal) {
    //do whatever
}
var-equal:Boolean=true
if(combo.length==truecombo.length){

对于(var i:int=0;iI)首先使用
var fireb:firebtn=new firebtn();
(例如)声明我的变量,然后用它们填充我的truecombo…然后当用户单击屏幕上的符号时,我使用
addChild(fireb)
…所以我猜它们是相同的实例。这返回为true,甚至没有单击任何按钮。检查我的原始帖子。不起作用。我在原始问题中添加了一些信息。
function checkthis(e:Event)
{
    for(var o:int=0;o<= combo.length; o++) 

      if((combo[o] == truecombo[o]) && (combo.length==truecombo.length)) {

        equal=true;

        break;
      }     

      if (equal) {

        stage.removeEventListener(Event.ENTER_FRAME, checkthis);

        endSeq();
      }
}
var equal:Boolean=true
if(combo.length == truecombo.length) {
    for(var i:int=0; i<combo.length; i++) {
        if(combo[i] != truecombo[i]) {
            equal=false;
            break;
        }
    }
} else {
    equal=false;
}

if(equal) {
    //do whatever
}