如何调用我想要的对象的函数?

时间:2014-09-10 12:49:57

标签: actionscript-3

我不知道如何在标题中提出问题,但我可以在这里解释一下。所以我在游戏中有这个班级用于典当。 在我的主程序中,我用不同的名称调用它的一堆实例。

var z1:ZeleniPijun = new ZeleniPijun();
var z2:ZeleniPijun = new ZeleniPijun();

基本上我有我在代码中使用的移动和其他变量的函数。

我正在进行多人游戏,而z1和z2将成为我移动的棋子。 到目前为止,我已经使用了Switch,并且通过了解玩家的ID和被点击的棋子,我将它们移动到了棋盘上。这意味着我有一个开关,用于选择一个玩家和一个开关,用于选择一个棋子。每次通过交换机时,它都会转到相同的代码但是有一个不同的名称"。

例如,如果我为一个典当号1滚动一个4,那么

z1.movePawn(4);
z1.location += 4;
and other stuff that I need it to do

如果我为一个2号棋子滚动3,它就会

z2.movePawn(4);
z2.location += 4;
and other stuff that I need it to do

我必须复制相同的代码16次,只需将名称从z1更改为z2到z3等...

无论如何,我能为我做一个能够做到这一点的功能吗?

这样的事情:

public function doStuff(pawnName:String, number:int):void{
 pawnName.movePawn(number);
 pawnName.location = number;
 and other stuff that I need it to do
}

然后我可以给它我想要的参数16次,而不是到处复制相同的代码。

2 个答案:

答案 0 :(得分:1)

doStuff函数发送您要执行的对象更改,如

public function doStuff(theObj:ZeleniPijun ):void{
 theObj.movePawn(number);
 theObj.location = number;
 and other stuff that I need it to do
}

如果你有很多对象,把它们放在一个集合中,就像一个数组迭代它就像

foreach (obj in collection){
 doStuff(obj);
}

这只是或多或少的伪代码,但你明白了

答案 1 :(得分:1)

您可以使用ZeleniPijun对象作为参数,并调用传递所需实例的方法。

  // example creating multiples objects
  var numObjs : uint = 5;
  var objectsControl : Vector.<ZeleniPijun> = new Vector.<ZeleniPijun>(numObjs);
  var zeleninPijun : ZeleniPijun;

  for (var i : int = 0; i < numObjs; i++) 
  {
      zeleninPijun = new ZeleniPijun();
      objectsControl[i] = zeleninPijun;
  }

  // if you want to animate one object
  doStuff(objectsControl[0], 4);

  // if you want to animate them all
  for each (var zeleninPijunObj : ZeleniPijun in objectsControl) 
  {
      doStuff(zeleninPijunObj, 4);
  }

  function doStuff(pawnObj:ZeleniPijun, location:int):void
  {
      pawnObj.movePawn(location);
      pawnObj.location = location;
  }