2014-03-05 17 views
0

下午好程序员。我正在尝试在动作脚本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显示数组中的另一个随机项,但我不希望出现相同的名称。 我试过从数组中拼接牛奶,但textfield仍显示文字“牛奶”。

它基本上没有更新。

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

回答

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 
} 
+0

非常感谢你!!!! 还有一个问题,如果你不介意回答... 当数组是空的,我希望它进入下一个框架可以说 (如果数组是空的){去下一帧}这将是..if(oneArray.length = 0){this.goto ... etc) – Moynul

+0

我已更新答案 – asannov

+0

非常感谢您抽出时间。谢谢! – Moynul