0

だから私はこのコードを持っています

function flip(e:MouseEvent)
{   
 //assign choice a random deck index.
    choice=int(deck[Math.round((Math.random()*deck.length))]);
    if(choice!=int(deck[9]))
    {
        //removeChild(MovieClip(e.target));

        //position firecard.        
        addChild(fire);
        fire.x=e.target.parent.x;
        fire.y=e.target.parent.y;

        //remove cardback
        e.target.parent.removeChild(MovieClip(e.target));       
        fire.parent.setChildIndex(fire,numChildren-2);
        trace(choice);
    }
    else if(choice==int(deck[9]))
    {
        trace(choice);
        water.x=e.target.parent.x;
        water.y=e.target.parent.y;
        e.target.parent.removeChild(MovieClip(e.target));
        water.parent.setChildIndex(water,numChildren-2);
    }

}

コメントは、すべてが何をすべきかをほとんど説明しています。Flip は、ムービークリップからリスナーを介して呼び出されます。Choice は、flip が呼び出されるたびにランダムに選択される数値で、デッキ配列のランダム インデックスから値を取得します。次に、選択に関係なく、クリックされたカードが取り除かれ、その位置に選択変数に従ってカードが配置されます。ただし、2 つのエラーが発生します (どちらもコンパイラまたは出力で何かを行いません)。

  1. 別のカードをクリックすると、作成 (発射) された新しいカードも削除されます。私は彼らがその場にとどまることを望みます。

  2. トレースは常に 0 を出力します。0 から 9 までのように出力すべきではありませんか?

PS: デッキには 10 個の値があります。そのうちの9つが「火」で、最後が「水」です。選択は初期値 0 から始まります。

4

2 に答える 2

1

問題は、配列に文字列(「火」と「水」)があることです。ただし、この文字列を int に型キャストしているため、0 になります。配列の値を型キャストせずに試してみてください。

function flip(e:MouseEvent)
{   
    //assign choice a random deck index.
    choice=deck[Math.floor(Math.random()*deck.length)];
    if(choice != deck[9])
    {
        //removeChild(MovieClip(e.target));

        //position firecard.        
        addChild(fire);
        fire.x=e.target.parent.x;
        fire.y=e.target.parent.y;

        //remove cardback
        e.target.parent.removeChild(MovieClip(e.target));       
        fire.parent.setChildIndex(fire,numChildren-2);
        trace(choice);
    }
    else if(choice == deck[9])
    {
        trace(choice);
        water.x=e.target.parent.x;
        water.y=e.target.parent.y;
        e.target.parent.removeChild(MovieClip(e.target));
        water.parent.setChildIndex(water,numChildren-2);
    }

}

型キャストを削除する以外は何も変更しませんでした。

于 2012-11-29T08:39:41.613 に答える
0
function flip(e:MouseEvent)
{   
 //assign choice a random deck index.
    choice=Math.floor(Math.random()*deck.length);
    if(choice!=9)
    {
        ...
    }
    else if(choice==9)
    {
        ...
    }
}
于 2012-11-29T06:20:58.050 に答える