从数组中随机选择Index,然后显示匹配的MC

时间:2012-11-29 04:26:02

标签: arrays actionscript-3 flash removechild

所以我有这个代码

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);
    }

}

评论几乎解释了一切应该做什么。通过动画片段中的侦听器调用翻转。选项是每次调用翻转时随机选取的数字,并从deck数组中的随机索引获取其值。然后,无论选择何种选择,都会删除单击的卡片,并根据选项var在其位置放置一张卡片。但是,会发生两个错误(编译器或输出中没有任何错误)。

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

  2. 跟踪始终打印0.不应该打印出0到9之间的任何内容吗?

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

2 个答案:

答案 0 :(得分: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);
    }

}

除了删除类型转换之外,我没有改变任何东西。

答案 1 :(得分: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)
    {
        ...
    }
}