我不知道如何在标题中提出问题,但我可以在这里解释一下。所以我在游戏中有这个班级用于典当。 在我的主程序中,我用不同的名称调用它的一堆实例。
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次,而不是到处复制相同的代码。
答案 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;
}