AS3 - 不确定它叫什么

时间:2011-12-12 18:26:59

标签: flash actionscript-3 flixel

我正在写一个涉及货物的游戏,我计划拥有大量的货物类型。目前我有一个Cargo级,一艘载有货物的船只有一个Cargo的数组。

我真的宁愿不让每艘船上都有一堆物品,而我真正想知道的是每艘船有多少货物。特别是当这些船只被创造并丢弃很多时。

我确定我正在寻找的东西是如此基本我甚至会因为询问而显得愚蠢,但我知道有类似于拥有对象和相关值的数组。我想用它来引用静态数组中的Cargo类型,并保留数量。

它叫什么?我将如何使用它(即用于它的常用功能)?一些代码片段和术语将是理想的。

2 个答案:

答案 0 :(得分:3)

只需让您的货物类包含数量属性即可。

或者您可以拥有CargoType类,其中包含有关货物类型的信息(即是否有一些食物,金钱或枪支)。然后,您的Cargo类将具有CargoType属性和Quantity属性。

这样你船上货物的数组只有每种类型的货物,数量属性用于表示货物的数量。

答案 1 :(得分:1)

您可能正在寻找Dictionary课程。它类似于数组(使用整数索引)或对象(可以用作基于字符串的关联数组)。 Dictionary使用对象作为唯一键,映射到单个值。

我认为你不需要一个。全局变量很少是个好主意。我不会不必要地使这个变得复杂,只是让每艘船处理它自己的货物,也许使用AaronLS suggested的数量。但是不要过多担心这里的性能,即使你每帧创建和销毁数千艘船只,渲染它们所需的时间也远远超过数组的处理时间。

无论如何,这是你如何使用字典和一些事情来考虑。它没有太多特殊的方法,它几乎就像一个数组一样使用。

var dict = new Dictionary();
var key:MyClass = new MyClass(); // a key can be of any class 

dict[key] = "foo"; // set a value
trace( dict[key] ); // traces: foo

dict[key] = null; // set value to null, key is still there. It won't get garbage collected!
delete dict[key]; // remove the key

考虑使用new Dictionary(true)来避免垃圾收集问题。