1

コンボとトゥルーコンボという 2 つの配列があります。ユーザーは、ステージ上のさまざまなボタンをクリックして、ムービークリップでコンボを埋めます。truecombo が正しい組み合わせです。

任意の時点 (enterFrame) で、Flash は 2 つが同じかどうかをチェックしています。当分の間、これは私のコードです (インデックスの型キャスト、combo[o] の最後に .parent を追加するなど、何度か変更されています。どちらか一方の 2 つのことが起こります。

ステートメントが満たされず、その時点でコンボ配列の追加とチョッピングが続行されるか、combo.length = 6 のときに条件が即座に満たされます。私のコードを確認してください。

更新:現在のコードを含むドロップボックス ファイルがあります。これをクリックすると 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);
}

これが、新しい要素をコンボ配列にプッシュする方法です。

function add(element:DisplayObject)
{
    twist.gotoAndPlay(2);

    element.width = WIDTH;
    element.height = HEIGHT;

    if (this.combo.length >= MAX_ELEMENTS)
    {
        removeChild(this.combo.shift());
    }

    this.combo.push(element as DisplayObject);
    this.addChild(element);
    this.reorder();
}

function reorder()
{
    for (var i:int = 0; i < combo.length; i++)
    {
        var element:DisplayObject = combo[i];
        element.x = OFFSET_X + (i * SEP_X);
        element.y = OFFSET_Y;
    }
}

そして、これが truecombo とそのコンテンツを作成する方法です。

var fireb:firebtn = new firebtn();
var spiritb:spiritbtn = new spiritbtn();
var earthb:earthbtn = new earthbtn();
var windb:windbtn = new windbtn();
var combo:Array=new Array();

const truecombo:Array = [fireb,windb,spiritb,windb,earthb,fireb];

コメント不足で申し訳ありませんが、それはかなり自明だと思います。前もって感謝します。

4

2 に答える 2

0

これは本当に単純なループです:

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
}

これは、そうでないことがわかるまで、両方が等しいと仮定します。したがって、長さが異なる場合、それらは等しくありません。i番目の要素が異なる場合、それらは等しくありません。

最後に、フラグequalが true かどうかを確認し、やりたいことを何でもします。

于 2012-12-08T04:49:27.440 に答える