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 时随机选取的数字,并从 Deck Array 的随机索引中获取其值。然后不管选择如何,被点击的卡片被移除,并根据选择变量在其位置放置一张卡片。但是,会发生两个错误(在编译器或输出中都没有执行任何操作)。

  1. 当我点击另一张卡片时,创建(触发)的新卡片也会被删除。我希望他们留在原地。

  2. 跟踪总是打印一个 0。它不应该打印从 0 到 9 的任何东西吗?

PS:Deck 有 10 个值。其中9个是“火”,最后一个是“水”。选择从 0 初始值开始。

4

2 回答 2

1

问题是您在数组中有字符串(“fire”和“water”)。但是您正在将此字符串类型转换为 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 回答