Shuffle Array,Splice Array。动作脚本2

时间:2014-03-05 14:00:34

标签: arrays flash actionscript-2

下午好的程序员。我试图在动作脚本2中创建一个游戏。概念是游戏随机选择一个对象。玩家必须获得该对象,然后该游戏调出一个不同的随机对象。 (这些对象在数组中)。

static private var oneArray:Array = new Array("milk","cheese","bread");
static private var randomItem:String = oneArray[Math.floor(Math.random() * oneArray.length)];

所以你可以看到我做到了这一点。 现在游戏将显示文字;

    _root.hud.getItem.text = randomItem;

从上面的代码中你可以看到文本字段将从该数组中选择一个randomeItem。

    if (randomItem == ("milk"))
    {
        if (_root.milk.hitTest(_root.player._x + 60, _root.player._y - 60, true) || _root.milk.hitTest(_root.player._x - 60, _root.player._y - 60, true)) 
        {
            trace("got milk");
            _root.milk.gotoAndStop(2);
        }
    }

您在上面看到的代码意味着如果文本字段显示“牛奶”,并且如果玩家接触到牛奶,那么牛奶就会消失。

现在当碰撞为真时,我希望textfield显示数组中的另一个随机项,但我不希望出现相同的名称。 我尝试过从阵列中拼接牛奶,但文本字段仍显示文本“milk”。

它基本上没有更新。

我已经尽了最大努力,如果上面提供的信息不是最好,我很抱歉。 有人可以帮帮我吗。 谢谢。

1 个答案:

答案 0 :(得分:1)

oneArray中交换最后一个和随机选择的项目,并减少随机倍数(len),以便最后一项(之前随机选择)永远不会再打扰。

private var oneArray:Array = new Array("milk","cheese","bread");
private var len:int = oneArray.length - 1;
private var rand:int;
private var randomItem:String;

选择随机项

rand = Math.floor(Math.random() * len);
randomItem = oneArray[rand];
_root.hud.getItem.text = randomItem;

碰撞是真的

var item:String = oneArray[rand];
oneArray[rand] = oneArray[len];
oneArray[len] = item;
len--;

if (len < 0) { 
    //goto next level
}
else {
   // and select random item again
}