Actionscript 3 AS3:设计自定义集合类

Actionscript 3 AS3:设计自定义集合类,actionscript-3,Actionscript 3,任务: 设计一个类,该类是其他对象的集合,可用于for each(..) 我的第一个尝试是使用数组类作为父类: public class Cards extends Array { ... } 这非常有效,但Cards类继承了很多数组的公共方法,这些方法在Cards对象中不应该是可见的,比如sort()、push()、forEach()等等 第二次尝试是将基类定义为动态的: 这是可行的,但在这种情况下,我也应该将每个子类定义为动态的: public dynamic class Cards {

任务:

设计一个类,该类是其他对象的集合,可用于for each(..)

我的第一个尝试是使用数组类作为父类:

public class Cards extends Array { ... }
这非常有效,但Cards类继承了很多数组的公共方法,这些方法在Cards对象中不应该是可见的,比如sort()、push()、forEach()等等

第二次尝试是将基类定义为动态的:

这是可行的,但在这种情况下,我也应该将每个子类定义为动态的:

public dynamic class Cards { ... }
...
var $Cards:Cards = new Cards();
$Cards.add( new Card() ); // works well
但是

有趣的是,若我使用数组类作为父类,我不应该将子类定义为动态类

所以,问题是:
是否有可能在AS3中设计一个集合类,用于每个(…),并且不包含任何不必要的方法(如来自数组类)?

您应该能够对
对象进行子类化并实现。

您应该能够对
对象进行子类化并实现。

您可以扩展该类


检查此项以了解有关如何执行此操作的一些提示

您可以通过扩展类来完成此操作


检查此项以了解有关如何执行此操作的一些提示

@thenduks。当我第一次了解代理的存在时,我也这么想。(虽然我从来没有在真正的项目中真正使用过它,但只是玩了一下而已)。@thenduks。当我第一次了解代理的存在时,我也这么想。(虽然我从来没有在真正的项目中真正使用过它,但只是玩了一下)。
public dynamic class Cards { ... }
public dynamic class Cards { ... }
...
var $Cards:Cards = new Cards();
$Cards.add( new Card() ); // works well
public class Player_Cards extends Cards { ... }
...
var $PlayerCards:Cards = new Player_Cards();
$PlayerCards.add( new Card() ); // error, Player_Class should be defined as dynamic too