Actionscript 3 在actionscript中使用if语句检查相同的值?

Actionscript 3 在actionscript中使用if语句检查相同的值?,actionscript-3,actionscript,flixel,Actionscript 3,Actionscript,Flixel,我正在使用Flixel制作一个match-3风格的益智游戏,所以我正在检查每一行和每一列,看看在任何给定的时间是否有匹配。但是,我有6个不同的片段(截至目前)处于活动状态,每个片段都由一个整数标识。有鉴于此,我可以通过这样做来检查每一件作品: public function matchingCheck():void { if (piecesArray[0][1] == 1 && piecesArray[1][1] == 1 && piece

我正在使用Flixel制作一个match-3风格的益智游戏,所以我正在检查每一行和每一列,看看在任何给定的时间是否有匹配。但是,我有6个不同的片段(截至目前)处于活动状态,每个片段都由一个整数标识。有鉴于此,我可以通过这样做来检查每一件作品:

public function matchingCheck():void
    {
        if (piecesArray[0][1] == 1 && piecesArray[1][1] == 1 && piecesArray[2][1] == 1) {
            FlxG.log("Yay!");
        }
    }
然而,这是相当笨拙的,基本上会导致太多的重复我喜欢的方式

至少,我希望能够检查这些数组中的值是否彼此相等,而不必指定它是哪个值。在最好的情况下,我希望能够检查整行的三个(或更多)相邻部分,但我会满足于手动完成该部分

谢谢你的帮助


编辑:没关系,我的编辑不起作用。它只是在检查片段是否为ray[2][1]==1,这让我成了一只悲伤的熊猫



编辑2:我在下面选择了正确的答案-这不完全是我使用的答案,但它确实让我开始了。谢谢启示录

通过使用另一个函数,您可以稍微减少代码量

private function checkValid( arrayOfItemsToCheck:Array, value:* ):Boolean {
    for ( var i:Number = 0; i < arrayOfItemsToCheck.length; i++ ) {
        if ( arrayOfItemsToCheck[i] != value ) {
            return false;
        }
    }
    return true;
}

不过,这确实假设所有项都必须等于1。代码仍然很多,但每次检查都会删掉一组“=1&&”。

这样的代码会告诉你们是否存在匹配项以及匹配项是什么:

public function checkForMatch():void{
    var rows:int = piecesArray.length;
    for(var i:int=0; i<rows; i++){
        var match:int = checkRow(piecesArray[i]);
        if(match > -1) {
            FlxG.log("Yay you matched " + match);
        }
    }
}

private function ckeckRow(row:Array):int{
    if(row[0] == row[1] == row[2]){
        return row[0];
    }
    return -1;
}
公共函数checkForMatch():void{
变量行:int=piecessarray.length;
对于(变量i:int=0;i-1){
FlxG.log(“耶,你匹配”+匹配);
}
}
}
私有函数ckeckRow(行:数组):int{
如果(第[0]行==第[1]行==第[2]行){
返回行[0];
}
返回-1;
}

checkValid函数是否与post edit中的代码基本相同,在post edit中,我将所有代码都等同于1?不想显得粗鲁,只是想知道他们是否达到了同样的目的。:)当然,它也达到了同样的效果。然而,它的可扩展性要大得多。您可以使用该函数检查类似的任何内容,并删除大量可重复的代码。我也知道,有些人不喜欢这种特殊形式的检查(这是一个偏好的问题,但有些人不喜欢每行有多个相同的检查,包括我自己)。正如你所知,我在你编辑后不到90秒就发表了我的评论。我在发完帖子后才看到它。啊,不用担心!是的,这是有道理的。谢谢,我将不得不试验和思考这个问题。是的,我不确定它是否会(也不想检查)。该表单通常用于将多个属性设置为相同的值。我唯一一次看到它被使用,实际上,是
scaleX=scaleY=1.5
我想我要尝试的对原始函数的修改之一是循环使用所有可能的值,只是为了省去设置值的麻烦。我会试试,然后回来报到!
public function checkForMatch():void{
    var rows:int = piecesArray.length;
    for(var i:int=0; i<rows; i++){
        var match:int = checkRow(piecesArray[i]);
        if(match > -1) {
            FlxG.log("Yay you matched " + match);
        }
    }
}

private function ckeckRow(row:Array):int{
    if(row[0] == row[1] == row[2]){
        return row[0];
    }
    return -1;
}