我实际上是在寻找一种方法来通过AS3中的参考传递,但后来似乎adobe和许多人对通过引用传递的理解与我在大学里所教授的不同.我被教过java传递的值和C++允许通过引用传递.
我并不想争论通过价值和参考传递的是什么.我只想解释为什么我在问题中使用pass by object ...
回到问题,我想做的事情如下:
public function swapCard(cardA:Cards, cardB:Cards) {
var temp:Cards = cardA;
cardA = cardB;
cardB = temp;
}
...
swapCard(c1, c2);
Run Code Online (Sandbox Code Playgroud)
编辑:添加两个关于我如何使用swapCard函数的例子
1)在播放器1和播放器2之间交换卡片的过程中
swapCard(player1.hand[s], player2.hand[t]);
Run Code Online (Sandbox Code Playgroud)
2)在玩家1的牌和牌组之间交换牌的过程中
swapCard(player1.hand[s], player1.deck[rand]);
Run Code Online (Sandbox Code Playgroud)
在C++中,我们只需要在参数之前添加一个符号以使其工作(我们称之为通过引用传递).但在AS3中,cardA和cardB只是指向形式参数的指针.在函数中,更改指针对形式参数没有任何作用:(
我一直在寻找几个小时,但在没有知道卡的所有属性的情况下我找不到办法.
如果我必须逐个更改卡的属性,那么我应该将swapCard更改为类卡中的静态功能?(因为我不想把所有东西暴露给另一个班级)我不确定这是不是一个好习惯.这就像在类Cars中添加swap_cars函数一样.如果我让这件事发生,接下来会发生什么?洗车,借车,租车...我真的想保持卡类清洁,只保留卡的详细信息.有可能在AS3中正确完成此操作吗?